MySQL 5.7 用mysqldump搭建gtid主從

甲骨文技術支援發表於2017-12-04

最近需要把一個老系統升級到新系統,主要是硬體更新。

在新硬體這邊搭建了一主兩從的環境,資料主要是開發人員匯入到新系統,因為匯入資料過程中併發量太大,寫入太密集,需要先把從停掉,資料匯入、核對完成後,重新搭建主從環境。

主從是環境的mysql是5.7.12,用了gtid。

下面是具體步驟,沒有特殊說明的都是在從庫執行:

1.stop slave; ##停止從庫

2.reset slave all;     ##重置主從配置資訊

3.在主庫上使用mysqldump匯出資料庫,我寫了一個指令碼來執行匯出,指令碼名字是mysqlbackup.sh


  1. [root@iz2ze6jo3o3bqbcongnypqz export_mysql]# more mysqlbackup.sh

  2. #!/bin/bash

  3. databases=('xxx_0042')

  4. basepath='/alidata1/backup/export_mysql/'
  5. user='root'
  6. passwd='xxxxxx'

  7. if [ ! -d "$basepath" ]; then
  8.   mkdir -p "$basepath"
  9. fi

  10. for db in ${databases[*]}
  11.   do
  12.     /bin/nice -n 19 /usr/bin/mysqldump -u$user -p$passwd --log-error=$basepath$db-$(date +%Y%m%d).log --set-gtid-purged=on --single-transaction --databases $db > $basepath$db-$(date +%Y%m%d).sql
  13.     
  14.     /bin/nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz $basepath$db-$(date +%Y%m%d).sql
  15.     
  16.     find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
  17.   done

  18.   rm -rf $basepath

4.匯出的檔案中已經包含了GTID_PURGED的資訊,這個資訊非常有用,意思是從庫開啟後那些事物不需要執行了。

  1. [root@iz2ze6jo3o3bqbcongnypoz export_mysql]# grep GTID_PURGED xxx_0042-20171202.sql
  2. SET @@GLOBAL.GTID_PURGED='c9c73c70-c089-11e7-8544-00163e0ad76e:1-49794683';
5.將備份檔案轉到從伺服器,我這個比較複雜,先把檔案轉到跳板機,然後轉到從,-i 引數是為了用阿里雲的金鑰檔案,ssh也是這樣用。

  1. scp -i xx_aliyun.pem root@192.168.2.71:/alidata1/backup/export_mysql/xxx_0042-20171202.sql.tar.gz /home/guoliang/

  2. scp -i xx_aliyun.pem /home/guoliang/xxx_0042-20171202.sql.tar.gz root@192.168.2.72:/alidata1/backup/export_mysql

  3. scp -i xx_aliyun.pem /home/guoliang/xxx_0042-20171202.sql.tar.gz root@192.168.2.73:/alidata1/backup/export_mysql

6.reset master;  ##重置從伺服器上的binlog


7.匯入資料

  1. source /alidata1/backup/export_mysql/alidata1/backup/export_mysql/xxx_0042-20171202.sql

8.執行change master

  1. change master to
  2. master_host='192.168.2.71',
  3. master_port=3306,
  4. master_user='repl',
  5. master_password='REPLsafxxxxx',
  6. MASTER_AUTO_POSITION = 1;
9.show slave status \G;  ##檢查從的狀態,主要關注下面這兩個值是否和上面grep出來的值是否一致。


  1.   Retrieved_Gtid_Set: c9c73c70-c089-11e7-8544-00163e0ad76e:49794684-50352676
                Executed_Gtid_Set: c9c73c70-c089-11e7-8544-00163e0ad76e:1-49798235

10.當Seconds_Behind_Master: 0的時候,資料同步已經完成了。


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20893244/viewspace-2148249/,如需轉載,請註明出處,否則將追究法律責任。

相關文章