在主從環境了 用這個 從會掛掉的呢mysql
談談這兩天作mysql guid主從的痛sql
需求1:ui
將一個單點mysql進行遷移spa
這個比較簡單,我搭建了同版本的mysql,而後mysqldump備份數據導入,數據沒有更新,完整就直接導入了日誌
需求2:code
以爲單點比較不靠譜,決定將之前的一個從庫,注意這個從庫是好久以前的舊的mysql主的從庫,從新做爲新的主庫的從庫blog
首先我直接向gtid能夠自動尋找,那就直接將這個從庫指向新的主庫吧,結果報錯找不到log文件,難道是覺得從庫是舊的,保留的都是曾經的主的gtid的信息,因此不行,這裏我仍是疑惑的io
後來決定從新拿一份新主的最新備份,導入從庫,從新作主從,仍是報錯1146,不知道爲啥ast
我很氣 class
我又從新搭建了最新的從庫導入數據,也報錯,我還鬼使神差的在主上執行了 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;