共計(jì) 2176 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
本篇文章給大家分享的是有關(guān) MySQL 如何不停機(jī)維護(hù)主從同步,丸趣 TV 小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
實(shí)戰(zhàn)環(huán)境
Mysql-5.7
Xtrabackup-2.4
Xtrabackup 介紹
Percona XtraBackup 是一款基于 MySQL 的服務(wù)器的開源熱備份實(shí)用程序,在備份過程中不會(huì)鎖定數(shù)據(jù)庫(kù)。
它可以備份來自 MySQL5.1,5.5,5.6 和 5.7 服務(wù)器上的 InnoDB,XtraDB 和 MyISAM 表的數(shù)據(jù),以及帶有 XtraDB 的 Percona 服務(wù)器。
XtraBack XtraBackup 工具 up 工具
Xtrabackup 本身只能備份 InnoDB 和 XtraDB,不能備份 MyISAM。
innobackupex 封裝了 xtrabackup 的 perl 腳本,覆蓋了 Xtrabackup 的功能。它不但可以備份 nnodb 和 xtradb 兩種引擎的表,還可以備份 myisam 引擎的表(在備份 myisam 表時(shí)需要加一個(gè)讀鎖)。
Xtrabackup 特點(diǎn)
備份過程快速、可靠;
備份過程不會(huì)打斷正在執(zhí)行的事務(wù);
能夠基于壓縮等功能節(jié)約磁盤空間和流量;
自動(dòng)實(shí)現(xiàn)備份檢驗(yàn);
還原速度快;
Xtrabackup 備份實(shí)現(xiàn)原理
innobackupex 開啟 xtrabackup_log 監(jiān)控線程,實(shí)時(shí)監(jiān)測(cè) redolog 文件的變化,將新備份過程中新寫入到事務(wù)日志中的日志拷貝至 innobackup_log 中;
同時(shí)開啟 xtrabackup 拷貝線程,開始拷貝 innodb 文件, 拷貝數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu),記錄當(dāng)前 binlog 及 position 完成備份。
全備恢復(fù)原理
將全備文件進(jìn)行 xtrabackup_log 日志回放,并對(duì)提交的事務(wù)進(jìn)行重做,同時(shí) rollback 未提交的事務(wù)。并將全備文件復(fù)制到 mysql 下的 data 目錄下。
主數(shù)據(jù)庫(kù)
1、安裝 xtrabackup 工具
$ yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm$ yum update percona-release$ yum install percona-xtrabackup-24 -y
2、主數(shù)據(jù)庫(kù)全量備
# 全量備份 $ innobackupex --defaults-file=/etc/my.cnf --user=root --password=magedu /data/backup # 保持事務(wù)一致性 apply-log 的作用是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件處于一致性狀態(tài), 把已提交的事務(wù)合并到 ibdata 文件 $ innobackupex --apply-log /data/backup/2020-03-28_19-13-07
3、將主數(shù)據(jù)庫(kù)備份文件壓縮并拷貝到從數(shù)據(jù)庫(kù)
$ tar czf backup.tar.gz 2020-03-28_19-13-07 $ scp -r /data/backup/backup.tar.gz 172.21.0.8:/data/backup/
4、主庫(kù)授權(quán)同步帳號(hào)
mysql GRANT REPLICATION SLAVE ON *.* TO slave @ % IDENTIFIED BY slave_passport mysql FLUSH PRIVILEGES;
5、查看主庫(kù)備份到位置,從庫(kù)從備份位置開始同步
$ cat /data/backup/2020-03-28_19-13-07/xtrabackup_binlog_infomysql-bin.000001 1053
從數(shù)據(jù)庫(kù)操作
1、從數(shù)據(jù)全量恢復(fù)
$ cd /data/backup/ tar xf backup.tar.gz$ innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /data/backup/2020-03-28_19-13-07
2、修改數(shù)據(jù)文件權(quán)限
$ chown -R mysql:mysql /var/lib/mysql
3、啟動(dòng)從數(shù)據(jù)庫(kù)
$ systemctl restart mysqld
4、查看主數(shù)據(jù)庫(kù)第五步主庫(kù)備份的位置,開始同步
mysql CHANGE MASTER TO MASTER_HOST= 172.21.0.9 , \ MASTER_USER= slave , \ MASTER_PASSWORD= slave_passport , \ MASTER_PORT=3306,MASTER_LOG_FILE= mysql-bin.000001 , \ MASTER_LOG_POS=1053;
5、開啟主從同步
mysql start slave;mysql show slave status\G; # 下面二個(gè) Yes 代表已經(jīng)正常同步了 Slave_IO_Running=YesSlave_SQL_Running=Yes
以上就是 MySQL 如何不停機(jī)維護(hù)主從同步,丸趣 TV 小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道。