MySQL Slave數據重新復制一例
剛才收到某臺slave同步出錯的預警短信,是該slave的SQL THREAD停止瞭,狀態如下:
01
mysql> show slave status \G
02
03
…
04
05
Slave_IO_Running: Yes
06
Slave_SQL_Running: No
07
www.aiwalls.com
08
…
09
10
Last_Errno: 1050
11
Last_Error: Error 'Table 'TEMP_T3' already exists' on query. Default database: 'xxxx'. Query: 'CREATE TABLE TEMP_T3(ID VARCHAR(30))'
12
Skip_Counter: 0
13
Exec_Master_Log_Pos: 55306964
14
…
從以上信息得知,是我在Master上建立某臨時數據處理表在Slave上已經存在瞭。造成這個原因很巧合:平時我制作的數據處理表都是放在slave上,這雖然會造成M/S數據不一致(影響的是非在線生產數據),但可以分擔一部分Master的處理壓力,而今天由於此Master所承擔的業務已經下線,所以就直接在Master上進行瞭數據處理造成瞭此錯誤現象。
解決方法過程如下:
1.停止slave
1
mysql> stop slave;
2.刪除slave上的沖突表
www.aiwalls.com
1
mysql> drop table TEMP_T3;
3.更改log position
1
mysql> change master to MASTER_HOST = '…',
2
MASTER_USER='…',
3
MASTER_PASSWORD='…',
4
MASTER_PORT=…,
5
MASTER_LOG_FILE='…',
6
MASTER_LOG_POS=55306964;
'MASTER_LOG_POS'值為'Exec_Master_Log_Pos'的值
4.開啟slave線程
www.aiwalls.com
1
mysql> start slave;
5.檢查狀態
1
…
2
3
Slave_IO_Running: Yes
4
Slave_SQL_Running: Yes
5
6
…
作者 旺仔的鑰匙