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问题。从网上搜索多中方法,最后结合经验处理问题。过程痛苦,结果完美。

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