Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

在網上查看解決辦法 先stop slave,然後從新change master到報錯位置。然後start slave

===============================================
stop slave ;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000521', MASTER_LOG_POS=869528465;
start slave;
show slave status;

===============================================
出現這種問題,判斷是主從同步不一致問題。建議使用 percona-toolkit。
下面是實驗步驟。

實驗環境:
master:192.168.162.168
slave:192.168.162.167

  1. 操作
    master:
    MariaDB [test]> create table test (id int(10),name varchar(20),city varchar(30));
    MariaDB [test]> insert into test (id,name,city) values (1,'aaa','aaa'),(2,'bbb','bbb'),(3,'ccc','ccc');
    slave:
    MariaDB [test]> select * from test;
    +------+------+------+
    | id | name | city |
    +------+------+------+
    | 1 | aaa | aaa |
    | 2 | bbb | bbb |
    | 3 | ccc | ccc |
    +------+------+------+

MariaDB [test]> delete from test where id =1;

master:
update test set name='abb' where id=1;
slave: 報錯如下圖:

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

方法1:

 MariaDB [test]> stop slave ;
MariaDB [test]> CHANGE MASTER TO MASTER_HOST='192.168.162.168',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000646',MASTER_LOG_POS=1801;
MariaDB [test]> start slave;

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

但是查詢數據,表面主從一致,實際還是差數據。
master:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU
slave:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

方法2:
環境準備:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

解決:使用強悍的瑞士×××percona-toolkit 工具 'pt-table-checksum','pt-table-sync'
注:這兩個工具都是在Master上執行。
master:

pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --create-replicate-table --no-check-binlog-format --host=192.168.162.168 --port 3306 -uyang -p123456

--host=master_ip
--port mysql端口
--databases=test 問題數據庫
--replicate= 在Master的test庫上創建記錄主從同步出現問題的表
--create-replicate-table
--no-check-binlog-format 不檢查複製的binlog模式,要是binlog模式是ROW,則會報錯。
--nocheck-replication-filters 不檢查複製過濾器,建議啓用。後面可以用--databases來指定需要檢查的數據庫。

出現主從不同步後,直接使用工具 'pt-table-checksum':
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU
提示主從同步停了,等待主從同步開啓。
使用'pt-table-sync' 工具:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

依然提示主從同步已關閉。
那我們開啓,借鑑方法1開啓主從同步。
slave:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

嗯主從依然不一致。
現在使用pt工具解決。

Master:
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU
目標出來了,發現主從同步不一致,並且記錄到表中。
Master:

pt-table-sync --replicate=test.checksums --databases=test h=192.168.162.168,u=yang,p=123456 h=192.168.162.167,u=yang,p=123456 --print
pt-table-sync --replicate=test.checksums --databases=test h=192.168.162.168,u=yang,p=123456 h=192.168.162.167,u=yang,p=123456 --execute

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOU

問題解決!

該問題是經典的1032問題。從網上搜索多中方法,最後結合經驗處理問題。過程痛苦,結果完美。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章