溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL如何不停機(jī)維護(hù)主從同步

發(fā)布時(shí)間:2021-08-13 11:03:14 來源:億速云 閱讀:124 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)MySQL如何不停機(jī)維護(hù)主從同步,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

實(shí)戰(zhàn)環(huán)境

  •  Mysql-5.7

  •  Xtrabackup-2.4

Xtrabackup 介紹

Percona XtraBackup是一款基于MySQL的服務(wù)器的開源熱備份實(shí)用程序,在備份過程中不會(huì)鎖定數(shù)據(jù)庫。

它可以備份來自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ù)庫

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ù)庫全量備

# 全量備份$ 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ù)庫備份文件壓縮并拷貝到從數(shù)據(jù)庫

$ 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、 主庫授權(quán)同步帳號(hào)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'slave_passport';mysql> FLUSH PRIVILEGES;

5、查看主庫備份到位置,從庫從備份位置開始同步

$ cat /data/backup/2020-03-28_19-13-07/xtrabackup_binlog_infomysql-bin.000001    1053

從數(shù)據(jù)庫操作

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ù)庫

$ systemctl restart mysqld

4、查看主數(shù)據(jù)庫第五步主庫備份的位置,開始同步

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ù)主從同步,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI