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.2cto.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.2cto.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.2cto.com
1
mysql> start slave;
5.檢查狀態
1
...
2
3
Slave_IO_Running: Yes
4
Slave_SQL_Running: Yes
5
6
...
作者 旺仔的鑰匙