mysql 從庫上手動刪除partiton后,主庫未做修改.后期主庫上刪除partiton后,出現問題.
故障現場
Last_Errno: 1507
Last_Error: Error 'Error in list of partitions to DROP' on query. Default database: ''. Query: 'ALTER TABLE DROP PARTITION part_20170209'
解決辦法:
根據從庫報錯到相應位置查看要刪除的分區,發現果然沒有那個分區。問題到這里已經很明朗了,剩下的就是簡單的一些修復操作
mysql> stop slave ; Query OK, 0 rows affected (0.00 sec) mysql> set global sql_slave_skip_counter=1; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.01 sec)
重復上面的操作,直到問題得到修復。如果同樣的報錯很多,也可以自己寫一個腳本,不斷監控mysql slave狀態,如果匹配到同樣的報錯就跳過。下面來看一下修復后的情況
Seconds_Behind_Master: 1265 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:
感覺還好,有一點延遲,還好發現及時.
總結:
1、出現這樣的問題,首先可以肯定的是,不能使用大權限賬號在從庫手動執行drop partition操作,導致主庫執行的時候從庫沒有發現這個partition報錯。
要控制這樣的問題,可以從權限着手,嚴格控制用戶權限,非DBA人員直接不讓他有操作權限(我們的權限是很嚴格的)