XtraBackup做mysql主從同步


一、背景:

線上一個主庫壓力比較大,所以增加一個從庫,但是不能重啟或者停止主庫的正常運行,不能鎖庫鎖表影響業務的正常運行。所以這里想到了XtraBackup

二、XtraBackup介紹:

Xtrabackup的優點:
1、備份完成快速、可靠
2、備份期間不間斷的事務處理
3、節省磁盤空間和網絡帶寬
4、自動備份驗證
5、提高正常運行時間由於更快的恢復時間
備份INNODB引擎的數據庫不會鎖庫鎖表,但是備份MyISAM的表還是會鎖的,還支持增量備份。
官方地址:

三、環境說明

系統版本:CentOS Linux release 7.0.1406 (Core) 
內核版本:3.10.0-123.9.3.el7.x86_64
​mysql版本:5.6.26

四、安裝XtraBackup

安裝在主庫上
建議大家使用rpm方式安裝,網上很多文檔都是編譯安裝,編譯安裝費時費力,我這次做主從剛開始使用編譯安裝,發現編譯時服務器資源被耗盡都無法ssh,導致服務器無法處理請求。所以最后選擇了rpm方式安裝,這種方式安裝非常快。
# yum install perl-Time-HiRes
# yum install perl-DBD-MySQL -y
#  yum install perl-Digest-MD5 -y
# wget https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.9/binary/redhat/7/x86_64/percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm

# rpm -ivh percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm

五、主庫主從配置

1.主庫配置/etc/my.cnf

增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 128
log-bin = mysql-bin  

2.主庫配置授權賬號

mysql> grant replication slave on *.* to rep@'192.168.199.183' identified by '123';
mysql> flush privileges; 

3.手動設置主庫server-id和log-bin 參數

set global server_id=128
因為這兩個參數是動態參數,不用重啟主庫也可以生效
如果你的主庫已經設置這兩個參數,請忽略這一步操作

六、從庫主從配置

從庫安裝步驟略

1.從庫配置/etc/my.cnf

增加server-id 和 bin-log
# vim /etc/my.cnf
server-id = 129
#如果需要在從庫上做bin-log備份可以添加如下參數
log-bin = mysql-bin   
log-slave-updates = 1   
expire-logs-days=10

七、備份主庫數據

1.主庫機器上創建備份目錄

# mkdir -p /backup/full_data

2.執行全庫備份

2.1.備份

# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123    --socket=/tmp/mysql.sock    /data/backup/full_data
PS:備份完成后,會在/backup/full_data/目錄下生成一個時間點的目錄,這里是2016-07-14_05-19-52。你也可以加一個--no-timestamp參數不產生這個目錄,直接備份到/backup/full_data/目錄下

2.2.重放redo log

#下面preparing,undo撤銷未提交的事務,重放redo log
# innobackupex  --defaults-file=/etc/my.cnf  --user=root    --password=123  --apply-log   --socket=/tmp/mysql.sock   /data/backup/full_data/2016-07-14_05-19-52

ps:1、ls -l  /data/backup/full_data/2016-07-14_05-19-52/查看,你發現xtrabackup會把你數據庫datadir下的所有數據 文件都復制過來還新增了5個xtrabackup_開頭的文件,我們關心的是xtrabackup_binlog_info這個文件,因為這個文件里面記 錄了你做從庫需要change到主庫的binlog的位置和pos點

 

2、如果只想備份一個庫,加“--include=navy”指定庫名即可, “--databases=navy”不好使。

八、恢復數據到從庫

1.停止從庫

# /etc/init.d/mysqld stop

2.把主庫備份文件拷貝到從庫機器

# scp -ap /data/backup/full_data/2016-07-14_05-19-52   root@192.168.11.129:/data/mysql/

3.修改恢復文件權限

# chown -R mysql:mysql /data/mysql/  

4.啟動數據庫

# /etc/init.d/mysqld start

5.確認數據是否恢復成功

登錄從庫,執行show databases;

6.確認同步的位置點

在從庫上或者主庫上都可以查看該信息,我們是在從庫上查看

# cat /data/mysql/xtrabackup_binlog_info 
mysql-bin.000016        4542174

九、開始主從同步

1.配置從庫 主從配置 

#登錄從庫並執行

mysql > CHANGE MASTER TO   MASTER_HOST='192.168.199.182',MASTER_USER='rep',  MASTER_PASSWORD='123',MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=4542174;

2.開始同步

mysql> start slave;

3.查看同步狀態

mysql> show slave status\G

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM