1. 程式人生 > >xtrabackup備份方式搭建一個mysql slave

xtrabackup備份方式搭建一個mysql slave

啟動數據庫 但是 oba sla lag 開啟 空閑 .org .com

以前mysql搭建新備庫都是在現在業務較小的備庫上停止同步或停止數據庫,然後拷貝數據庫到新備庫,配置好新備庫後,再開啟同步或數據庫。然而,這次沒有空閑備庫用來搭新備庫。需要從一個業務繁忙的數據庫中搭建一個新備庫,對系統延時要求比較高,所以同步和數據庫都不能停。所以我們用了percona的 xtrabackup備份工具。 因為這個備份要作為備庫,所以用了–slave-info參數,備份完成後會生成一個對應主庫的binlog日誌的文件,用於配置同步。為了保證數據一致性,使用了–slave-info參數後會在某一段時間內加一個全局只讀鎖,導致庫不可寫,但是這個要比停止庫的同步的影響要小。數據庫總共1.4T,前面備份的1.3T都很順利,沒有鎖和延時。在備份最後100G數據文件的時候產生了一個全局只讀鎖,造成了大約3個小時的延遲,備份完成後大概半小時後延時追上了 。下面介紹用xtrabackup 搭建備庫的主要步驟: 1.xtrabackup 安裝

[root@db-2-43 ~]# cd /usr/src/
[root@db-2-43 src]# wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/Linux/x86_64/percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
[root@db-2-43 src]# tar zxvf percona-xtrabackup-2.1.5-680-Linux-x86_64.tar.gz
[root@db-2-43 src]# cp percona-xtrabackup-2.1.5-Linux-x86_64/bin/* /data/mysql/bin/

xtrabackup是通過DBD::mysql連接和mysql通信,使用前需要安裝perl的DBD::mysql模塊 通過yum安裝

[root@db-2-43 DBD-mysql-4.023]# yum -y install perl-DBD-MySQL.x86_64

或者通過源碼安裝DBI-DBD

# wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.628.tar.gz
# tar zxvf DBI-1.628.tar.gz
# cd DBI-1.628
# perl Makefile.PL
# make && make install
# wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.023.tar.gz
# tar zxvf DBD-mysql-4.023.tar.gz
# cd DBD-mysql-4.023
# perl Makefile.PL --libs="-L/data/mysql/lib -lmysqlclient -lz -lrt -lcrypt -lnsl -lm" --cflags=" -I/data/mysql/include/"
# make && make install

2.開啟一個作為slave的完全備份 開啟一個完全備份,加入–slave-info參數表明這是一個用來做slave的備份,備份完之後會生成一個xtrabackup_slave_info文件,記錄了備份完成後主庫的二進制日誌文件和位置,用來開啟一個同步。

[root@db-2-43 data]# innobackupex --user=root --password= root --port=3306 --defaults-file=/etc/my.cnf --slave-info --socket=/data/mysql/data/mysql.sock --no-timestamp /data/backup/pis_slave

備份成功後會看到如下信息: innobackupex: Backup created in directory ‘/data/backup/pis_slave’ innobackupex: MySQL slave binlog position: master host ‘10.0.2.44’, filename ‘mysql-bin.012434′, position 525181886 131028 20:20:37 innobackupex: Connection to database server closed 131028 20:20:37 innobackupex: completed OK! 備份完成後,還不能用於恢復,一些未提交的事物需要恢復,需要恢復redo logo的數據,確保數據一致

# innobackupex --apply-log /data/backup/pis_slave/

執行成功會看到如下信息 xtrabackup: starting shutdown with innodb_fast_shutdown = 1 InnoDB: FTS optimize thread exiting. InnoDB: Starting shutdown… InnoDB: Shutdown completed; log sequence number 6370833331492 131029 14:12:41 innobackupex: completed OK! 3.備份完成將備份拷貝到新的備庫服務器 4.在新備庫安裝新的mysql數據庫。註意的是恢復前要關閉數據庫,清空數據庫文件目錄,因為如果數據目錄有存在文件的話是不會覆蓋的。然後用下列命令進行數據拷貝恢復,下列命令會將備份出的數據根據my.cnf配置的信息將備份拷貝到mysql數據目錄。或者手動將備份文件拷貝到mysql的數據目錄也可以。 innobackupex –copy-back /data/backup/pis_slave 5.啟動數據庫

mysqld_safe --user=mysql --ledir=/data/mysql/bin/ &

6.配置同步 查看主庫的binlog位置

[root@db-3-5 pis_slave]# cat xtrabackup_slave_info
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.012434‘, MASTER_LOG_POS=525181886

開啟同步

14:30:53 (none)>CHANGE MASTER TO
-> MASTER_HOST=‘10.0.2.44‘,
-> MASTER_USER=‘repl‘,
-> MASTER_PASSWORD=‘repl‘,
-> MASTER_PORT=3306,
-> MASTER_LOG_FILE=‘mysql-bin.012434‘,
-> MASTER_LOG_POS=525181886,
-> MASTER_CONNECT_RETRY=10;
14:33:00 (none)> start slave;

xtrabackup備份方式搭建一個mysql slave