亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用xtrabackup工具實現MySQL數據庫備份詳細方法

發布時間:2020-05-12 11:44:50 來源:億速云 閱讀:252 作者:三月 欄目:數據庫

本文主要給大家簡單講講利用xtrabackup工具實現MySQL數據庫備份詳細方法,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望利用xtrabackup工具實現MySQL數據庫備份詳細方法這篇文章可以給大家帶來一些實際幫助。    

目前主流的有兩個工具可以實現物理熱備:ibbackupxtrabackupibbackup是商業軟件,需要授權,非常昂貴。而xtrabackup功能比ibbackup還要強大,但卻是開源的。號稱免費版的InnoDB HotBackup

官方鏈接地址:http://www.percona.com/software/percona-xtrabackup;可以下載源碼編譯安裝,也可以下載適合的RPM包或使用yum進行安裝或者下載二進制源碼包。

Xtrabackup它提供了兩種命令行工具:

xtrabackup:專用于備份InnoDBXtraDB引擎的數據;

innobackupex:這是一個perl腳本,在執行過程中會調用xtrabackup命令,這樣用該命令即可以實現備份InnoDB,也可以備份MyISAM引擎的對象。

 利用xtrabackup工具實現MySQL數據庫備份詳細方法

Xtrabackup是由percona提供的mysql數據庫備份工具,特點:

(1)備份過程快速、可靠;

(2)備份過程不會打斷正在執行的事務;

(3)能夠基于壓縮等功能節約磁盤空間和流量;

(4)自動實現備份檢驗;

(5)還原速度快。 

二、安裝xtrabackup

1、下載xtrabackup

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/tarball/percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

2、解壓

tar zxf percona-xtrabackup-2.4.4-Linux-x86_64.tar.gz

3、進入解壓后的目錄

cd percona-xtrabackup-2.4.4-Linux-x86_64/

4、復制bin下的所有程序到/usr/bin

cp bin/* /usr/bin/

注:Xtrabackup中主要包含兩個工具:

xtrabackup:是用于熱備份innodb, xtradb表中數據的工具,支持在線熱備份,可以在不加鎖的情況下備份Innodb數據表,不過此工具不能操作Myisam引擎表

innobackupex:是將xtrabackup進行封裝的perl腳本,能同時處理InnodbMyisam,但在處理Myisam時需要加一個讀鎖。

由于操作Myisam時需要加讀鎖,這會堵塞線上服務的寫操作,而Innodb沒有這樣的限制,所以數據庫中Innodb表類型所占的比例越大,則越有利。

5、安裝相關插件

yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5

6、下載percona-toolkit并安裝

wget https://www.percona.com/downloads/percona-toolkit/2.2.19/RPM/percona-toolkit-2.2.19-1.noarch.rpm
 rpm -vih percona-toolkit-2.2.19-1.noarch.rpm

三、進行xtrabackup完全備份+binlog增量備份

1、創建備份目錄

mkdir -p /opt/mysqlbackup/{full,inc}

full:全備存放的目錄;inc:增量備份存放的目錄

2、開啟bin-log日志文件

編輯mysql配置文件添加以下內容:

vim /etc/my.cnf
log-bin = /etc/local/mysql/data/mysql-bin

重啟mysql服務:

systemctl restart mysqld

3、創建用來測試的數據

mysql -uroot -p123456
mysql> create database test;
mysql> use test;
mysql> create table tb1(id int primary key auto_increment,name varchar(20));
mysql> insert into tb1(name) values('zhangsan');
mysql> insert into tb1(name) values('lisi');

 利用xtrabackup工具實現MySQL數據庫備份詳細方法

4進行完全備份

語法:

innobackupex --user=DBUSER --password=DBUSERPASS  /path/to/BACKUP-DIR/

注:相關選項說明

--user指定連接數據庫的用戶名

--password指定連接數據庫的密碼

/path/to/BACKUP-DIR/備份文件的存放位置

--defaults-file指定數據庫的配置文件innobackupex要從其中獲取datadir等信息;

--database指定要備份的數據庫,這里指定的數據庫只對MyISAM表有效,對于InnoDB 數據來說都是全備(所有數據庫中的InnoDB數據都進行了備份,不是只備份指定的數據庫,恢復時也一樣)

--no-timestamp阻止命令自動創建一個以時間命名的目錄;如此一來,innobackupex命令將會創建一個BACKUP-DIR目錄來存儲備份數據

 

進行全庫備份:

innobackupex --user=root --password=123456 /opt/mysqlbackup/full

出現以下提示,表示成功

利用xtrabackup工具實現MySQL數據庫備份詳細方法

在備份的同時,備份數據會在備份目錄下創建一個以當前日期時間為名字的目錄存放備份文件:

利用xtrabackup工具實現MySQL數據庫備份詳細方法

各文件說明

xtrabackup_checkpoints備份類型(如完全或增量)、備份狀態(如是否已經為prepared狀態)和LSN(日志序列號)范圍信息;

每個InnoDB(通常為16k大小)都會包含一個日志序列號,即LSNLSN是整個數據庫系統的系統版本號,每個頁面相關的LSN能夠表明此頁面最近是如何發生改變的。

xtrabackup_binlog_infomysql云服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置。

xtrabackup_binlog_pos_innodb二進制日志文件及用于InnoDBXtraDB表的二進制日志文件的當前position

xtrabackup_binary備份中用到的xtrabackup的可執行文件;

backup-my.cnf備份命令用到的配置選項信息;

注意:備份數據庫的用戶需要具有相應權限,如果要使用一個最小權限的用戶進行備份,則可基于如下命令創建此類用戶:

mysql> create user 'bkpuser'@'localhost' identified by '123456';
mysql> revoke all privileges,grant option from 'bkpuser'@'localhost';
mysql> grant reload,lock tables,replication client, process on *.* to 'bkpuser'@'localhost';
mysql> flush privileges;

5、進行增量備份

查看完全備份時binlog日志位置(position)

 利用xtrabackup工具實現MySQL數據庫備份詳細方法

模擬數據庫修改:

mysql> use test
mysql> insert into tb1(name) values('wangwu');
mysql> insert into tb1(name) values('zhaoliu');
mysql> exit

增量備份二進制文件:

mysqlbinlog --start-position=1049 /usr/local/mysql/data/mysql-bin.000001 > /opt/mysqlbackup/inc/`date -I`.sql

利用xtrabackup工具實現MySQL數據庫備份詳細方法

6模擬數據庫損壞:

rm -fr /usr/local/mysql/data/*

7還原完全備份:

1準備(prepare)一個完全備份

一般情況下,在備份完成后,數據尚且不能用于恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處理不一致狀態。“準備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處于一致性狀態。在準備(prepare)過程結束后,InnoDB表數據已經前滾到整個備份結束的點,而不是回滾到xtrabackup剛開始時的點。

innobakupex命令的--apply-log選項可用于實現上述功能。如下面的命令:

innobackupex --apply-log /opt/mysqlbackup/full/2016-09-12_11-29-55/

--apply-log指明是將日志應用到數據文件上,完成之后將備份文件中的數據恢復到數據庫中

/opt/mysqlbackup/full/2016-09-12_11-29-55/備份文件所在目錄名稱

如果執行正確,其最后輸出的幾行信息通常如下:

利用xtrabackup工具實現MySQL數據庫備份詳細方法

    在實現“準備”的過程中,innobackupex通常還可以使用--use-memory選項來指定其可以使用的內存的大小,默認通常為100M。如果有足夠的內存可用,可以多劃分一些內存給prepare的過程,以提高其完成速度。

 

(2)還原數據庫:

innobackupex命令的--copy-back選項用于執行恢復操作,其通過復制所有數據相關的文件至mysql云服務器DATADIR目錄中來執行恢復過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關信息。

 innobackupex --copy-back /opt/mysqlbackup/full/2016-09-12_11-29-55/

這里的--copy-back指明是進行數據恢復。數據恢復完成之后,需要修改相關文件的權限mysql數據庫才能正常啟動。

如果執行正確,其輸出信息的最后幾行通常如下:

利用xtrabackup工具實現MySQL數據庫備份詳細方法 請確保如上信息的最行一行出現completed OK!”。

當數據恢復至DATADIR目錄以后,修改還原后的數據目錄屬主屬組為root所以還需將該目錄屬主屬組改為mysql

 chown -R mysql:mysql /usr/local/mysql/data/

重啟動MySQL

 systemctl restart mysqld

驗證還原后的數據:

 利用xtrabackup工具實現MySQL數據庫備份詳細方法

 

8、還原增量備份

為了防止還原時產生大量的二進制日志,在還原時可臨時關閉二進制日志后再還原:

mysql> set sql_log_bin=0;
mysql> source /opt/mysqlbackup/inc/2017-03-21.sql

重新啟動二進制日志并驗證還原數據:

mysql> set sql_log_bin=1;

驗證數據是否恢復回來

利用xtrabackup工具實現MySQL數據庫備份詳細方法

利用xtrabackup工具實現MySQL數據庫備份詳細方法就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉安县| 沈丘县| 慈溪市| 太谷县| 曲阜市| 德江县| 巴塘县| 汤原县| 平山县| 桑日县| 龙海市| 汪清县| 吉隆县| 闽侯县| 德格县| 班玛县| 金乡县| 石柱| 云和县| 灵川县| 融水| 交城县| 明溪县| 抚松县| 漳平市| 利辛县| 郓城县| 孟津县| 郴州市| 内黄县| 平和县| 正镶白旗| 花莲县| 竹北市| 广元市| 龙州县| 明溪县| 同德县| 肇东市| 施秉县| 恭城|