天天看點

mysql之 重建GTID下主從關系

主庫:

mysqldump -uroot -pmysql -S /tmp/mysql.sock1 --single-transaction --add-drop-database --master-data=1

-ER --all-databases>test_backup.sql

說明:

--all-databases :備份所有的資料庫

--single-transaction : 在一個事物中導出,確定産生一緻性的備份 ,目前隻對innodb支援

--master-data : 備份的時候dump出 CHANGE MASTER 資訊(file  和 pos),可供 主從複制 的時候使用,預設值為1 。當值設定為 2 的時候,也會    dump出資訊,但是會被 注釋 掉。

--add-drop-database : 導出的sql中,包含如果資料庫存在就删除在建立的sql

-E,指定導出事件(events)。

-R,指定導出存儲程式(函數和過程)。

從庫:

mysql>reset master;

mysql>reset slave all;

-- 導入資料庫 

# mysql -uroot -pmysql <test_backup.sql

mysql>change master to

master_host='10.100.25.40',

master_port=3307,

master_user='rpl',

master_password='mysql', 

master_auto_position=1;

mysql> start slave;

mysql> show slave status\G;

說明:

## 在開啟GTID資料庫下導入報錯

mysql -uroot -p userdb < userdb.sql

Password:xxxxxxxx

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

mysql提示: 目前資料庫執行個體中開啟了 GTID 功能, 在開啟有 GTID 功能的資料庫執行個體中, 導出其中任何一個庫, 如果沒有顯示地指定--set-gtid-purged參數, 都會提示這一行資訊. 意思是預設情況下, 導出的庫中含有 GTID 資訊, 如果不想導出包含有 GTID 資訊的資料庫, 需要顯示地添加--set-gtid-purged=OFF參數.或者在導入時,清空所有原GTID資訊(reset master;reset slave all;)

繼續閱讀