這篇文章將為大家詳細(xì)講解有關(guān)如何用Percona Xtrabackup恢復(fù)MySQL從庫,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了陽曲免費(fèi)建站歡迎大家使用!
同樣的,還是一臺服務(wù)器上兩個(gè)實(shí)例。3306端口的實(shí)例為主庫,3307端口的實(shí)例為從庫。
現(xiàn)在,手動將備庫里的數(shù)據(jù)清空掉,模擬備庫被破壞。
drop database test2;
采用Percona Xtrabackup來恢復(fù)從庫。
Percona Xtrabackup是一款開源的備份工具,這個(gè)工具可以在Percona的官方網(wǎng)站上下載來進(jìn)行安裝。
恢復(fù)步驟如下:
1、對主庫的數(shù)據(jù)進(jìn)行完全備份,注意,這個(gè)是熱備,不需要停庫的
innobackupex --default-file=/usr/local/mysql/my.cnf --user=root --password=root --socket=/usr/local/mysql/mysql.sock /tmp/backup
如果屏幕輸出的結(jié)尾有打印“completed Ok!”,則表示命令執(zhí)行成功。
2、將主庫生成的日志附加到備份中
innobackupex --apply-log /tmp/backup/2016-08-30_09-56-23
同步驟1一樣,如果屏幕輸出的結(jié)尾有completed OK的字輸出,表示命令執(zhí)行成功。
3、查看主庫生成的備份信息
[root@single1 2016-08-30_09-56-23]# ls -l
total 131108
-rw-r-----. 1 root root 418 Aug 30 09:56 backup-my.cnf
-rw-r-----. 1 root root 12582912 Aug 30 09:56 ibdata1
-rw-r-----. 1 root root 50331648 Aug 30 09:56 ib_logfile0
-rw-r-----. 1 root root 50331648 Aug 30 09:56 ib_logfile1
-rw-r-----. 1 root root 12582912 Aug 30 09:56 ibtmp1
drwxr-x---. 2 root root 4096 Aug 30 09:56 lxm
drwxr-x---. 2 root root 4096 Aug 30 09:56 mysql
drwxr-x---. 2 root root 4096 Aug 30 09:56 performance_schema
drwxr-x---. 2 root root 4096 Aug 30 09:56 test
-rw-r-----. 1 root root 21 Aug 30 09:56 xtrabackup_binlog_info
-rw-r--r--. 1 root root 21 Aug 30 09:56 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root 113 Aug 30 09:56 xtrabackup_checkpoints
-rw-r-----. 1 root root 504 Aug 30 09:56 xtrabackup_info
-rw-r-----. 1 root root 8388608 Aug 30 09:56 xtrabackup_logfile
注:
a) xtrabackup_binlog_info文件記錄mysql服務(wù)器當(dāng)前正在使用的二進(jìn)制日志文件及至備份這一刻為止二進(jìn)制日志事件的位置。
b) xtrabackup_binlog_pos_innodb 文件記錄二進(jìn)制日志文件及用于InnoDB或XtraDB表的二進(jìn)制日志文件的當(dāng)前position。
(xtrabackup_binlog_info文件和xtrabackup_binlog_pos_innodb 文件的區(qū)別:對于純 InnoDB 操作,備份出來的數(shù)據(jù)中上述兩個(gè)文件的內(nèi)容是一致的。對于 InnoDB 和非事務(wù)存儲引擎混合操作,xtrabackup_binlog_info 中所示的 position 應(yīng)該會比 xtrabackup_pos_innodb 所示的數(shù)值大。此時(shí)應(yīng)以 xtrabackup_binlog_info 為準(zhǔn);而后者和 apply-log 時(shí) InnoDB recovery log 中顯示的內(nèi)容是一致的,只針對 InnoDB 這部分?jǐn)?shù)據(jù)。)
c) xtrabackup_checkpoints文件用來描述備份類型,備份狀態(tài),LSN范圍信息。
d) xtrabackup_info文件記錄備份時(shí)所用xtrabackup命令的一些信息
e) backup-my.cnf文件為備份命令用到的配置選項(xiàng)信息;
4、恢復(fù)從庫
停止從庫服務(wù),將從庫中原有的數(shù)據(jù)清空。
service mysql3307 stop;
cd /usr/local/mysql3307
mv data data.bak
然后開始恢復(fù):
innobackupex --defaults-file=/usr/local/mysql3307/my.cnf --copy-back --rsync /tmp/backup/2016-08-30_09-56-23
如果屏幕輸出的結(jié)尾有打印“completed Ok!”,則表示命令執(zhí)行成功。
5、修改從庫數(shù)據(jù)文件的屬性
從庫恢復(fù)成功后,可以在/usr/local/mysql3307目錄下,看到一個(gè)data:
記得將這個(gè)恢復(fù)過來的data目錄屬組全部改回mysql,否則啟動從庫時(shí)會如下錯(cuò)誤:
chown -R mysql:mysql data
6、查看備份中binary log的信息
[root@single1 2016-08-30_09-56-23]# cat xtrabackup_binlog_info
mysql-bin.000003 329
7、起從庫,重新同步:
service mysql3307 start
mysql -S /usr/local/mysql3307/mysql.sock -P 3307 -uroot -p
mysql> change master to master_host='localhost', master_user='root', master_password='root', master_log_file='mysql-bin.000003', master_log_pos=329, master_port=3306;
Query OK, 0 rows affected, 2 warnings (0.02 sec)
#master_log_file參數(shù)和 master_log_pos參數(shù)的設(shè)置就是根據(jù)第6步得來的
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 329
Relay_Log_File: single1-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 329
Relay_Log_Space: 458
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 9c534d95-6849-11e6-bae6-000c295ae8a5
Master_Info_File: /usr/local/mysql3307/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
ERROR:
No query specified
8、檢驗(yàn)主庫和從庫是否一致。
關(guān)于如何用Percona Xtrabackup恢復(fù)MySQL從庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。