一、背景:
線上一個主庫壓力比較大,所以增加一個從庫,但是不能重啟或者停止主庫的正常運行,不能鎖庫鎖表影響業務的正常運行。所以這里想到了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版本:
percona-xtrabackup-2.2.9-5067.el7.x86_64.rpm
四、安裝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
