MySQL Slave數據重新復制一例

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

 

 

作者 旺仔的鑰匙

發佈留言