在主從環境了 用這個 從會掛掉的呢
談談這兩天做mysql guid主從的痛
需求1:
將一個單點mysql進行遷移
這個比較簡單,我搭建了同版本的mysql,然后mysqldump備份數據導入,數據沒有更新,完整就直接導入了
需求2:
覺得單點比較不靠譜,決定將以前的一個從庫,注意這個從庫是很久之前的舊的mysql主的從庫,重新作為新的主庫的從庫
首先我直接向gtid可以自動尋找,那就直接將這個從庫指向新的主庫吧,結果報錯找不到log文件,難道是以為從庫是舊的,保留的都是曾經的主的gtid的信息,所以不行,這里我還是疑惑的
后來決定重新拿一份新主的最新備份,導入從庫,重新做主從,還是報錯1146,不知道為啥
我很氣
我又重新搭建了最新的從庫導入數據,也報錯,我還鬼使神差的在主上執行了 reset master ,然后我就導入着數據,回家了,早晨來一看,主上的binlog沒了,只剩00001了,又沒有完整的日志文件了
現在我沒轍 繼續重新那一份最新的數據導入一下吧
如果你這么干了,恢復的方法
1.從主庫拿一份最新的數據,新的程度要在做reset master; 這個操作之后
2.從庫上(別執行,下邊還有呢,看完了再說)
stop slave;
reset slave;
導入數據;
重新指定主;
start slave;
然后報錯如下:
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave has more GTIDs than the master has, using the master's SERVER_UUID. This may indicate that the end of the binary log was truncated or that the last binary log file was lost, e.g., after a power or disk failure when sync_binlog != 1. The master may or may not have rolled back transactions that were already replica'
解決方法:
在從上執行 reset master;
在從庫上執行這個命令的作用是 清空從庫的gtid
然后繼續觀察
如果還報錯 就
stop slave;
reset slave;
重新指定主;
start slave;
reset master;
然后我的繼續報錯
Last_SQL_Errno: 1007
Last_SQL_Error: Error 'Can't create database 'mm'; database exists' on query. Default database: 'mm'. Query: 'create database mm'
這種錯誤叫可控的錯誤
兩種方法:
在配置文件里設置跳過這個錯誤
在從庫上刪除這個庫,然后stop slave; start slave;