复制中常见1062和1032错误处理方法
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,复制中错误处理传统复制错误跳过:stop slave sql_thread ;set global slq_slave_skip_counter=1;start slave sql_thread ;G
千家信息网最后更新 2025年01月31日复制中常见1062和1032错误处理方法
复制中错误处理
传统复制错误跳过:
stop slave sql_thread ;
set global slq_slave_skip_counter=1;
start slave sql_thread ;
GTID复制错误跳过:
stop slave sql_thread ;
set gtid_next='uuid:N';
begin;commit;
set gtid_next='automatic';
start slave sql_thread ;
注意:
若是binlog+pos复制,使用:
set global sql_salve_skip_counter=1;
代替下面步骤:
root@localhost [testdb]>set gtid_next='f0e27aec-b275-11e6-9c17-000c29565380:13';
root@localhost [testdb]>begin;commit;
root@localhost [testdb]>set gtid_next='automatic';
主从复制错误分类及处理方式
(1)主库create table ,从库已经存在,以主库为准处理方法:
slave:
set sql_log_bin=0;
drop table t1;
set sql_log_bin=1;
start slave sql_thread ;
例:
slave:
root@localhost [testdb]>create table t2(c1 int,c2 varchar(20));
master:
root@localhost [testdb]>create table t2(c1 int,c2 varchar(20));
root@localhost [testdb]>show slave status\G
......
Last_Error: Error 'Table 't2' already exists' on query. Default database: 'testdb'. Query: 'create table t2(c1 int,c2 varchar(20))'
.......
解决方法:
slave:
#drop操作不记录从库的binlog,这一步的作用是防止在以后主从切换的时候,把主库的t2表干掉
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>drop table t2;
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>start slave sql_thread;
(2)insert主键冲突的错误error1062
解决方法:直接删除从库冲突主键
例:
slave:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(2,'bbb');
root@localhost [testdb]>set sql_log_bin=1;
master:
root@localhost [testdb]>insert into t1 values(2,'bbbbbb');
slave :
root@localhost [testdb]>show slave status\G
Last_Errno: 1062
Last_Error: Could not execute Write_rows event on table testdb.t1; Duplicate entry '2' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000029, end_log_pos 2796
slave :
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>delete from t1 where c1=2;
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>start slave sql_thread;
(3)update找不到记录error1032
唯一的方法:伪造符合条件的数据
例:
master:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(1,'aaa');
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>update t1 set c2='aaaaaa' where c1=1;
slave:
root@localhost [testdb]>show slave status\G
......
Last_Error: Could not execute Update_rows event on table testdb.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000029, end_log_pos 2529
Skip_Counter: 0
Exec_Master_Log_Pos: 2283
master:
[root@Darren1 logs]# mysqlbinlog --base64-output=decode-rows --verbose --start-position=2283 --stop-position=2529 mysql-bin.000029
......
### UPDATE `testdb`.`t1`
### WHERE
### @1=1
### @2='aaa'
### SET
### @1=1
### @2='aaaaaa'
slave:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(1,'aaa');
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>start slave sql_thread;
(4)delete找不到错误 error1032
方法一:伪造符合条件的数据
例:
master:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(1,'aaa');
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>delete from t1 where c1=1;
slave:
root@localhost [testdb]>show slave status\G
......
Slave_IO_Running: Yes
Slave_SQL_Running: No
Exec_Master_Log_Pos: 905 --从库已经成功执行主库到的postion点
Last_SQL_Error: Could not execute Delete_rows event on table testdb.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log mysql-bin.000029, end_log_pos 1138 --从库执行结束点
maser:
[root@Darren1 logs]# mysqlbinlog --base64-output=decode-rows --verbose --start-position=905 --stop-position=1138 mysql-bin.000029
......
### DELETE FROM `testdb`.`t1`
### WHERE
### @1=1
### @2='aaa'
slave:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(1,'aaa');
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>start slave sql_thread;
方法二:从库跳过没有成功删除掉的行记录对应的GTID
master:
root@localhost [testdb]>set sql_log_bin=0;
root@localhost [testdb]>insert into t1 values(1,'aaa');
root@localhost [testdb]>insert into t1 values(2,'bbb');
root@localhost [testdb]>set sql_log_bin=1;
root@localhost [testdb]>delete from t1 where c1 =1;
root@localhost [testdb]>delete from t1 where c1 =2;
root@localhost [testdb]>insert into t1 values(3,'ccc');
slave:
root@localhost [testdb]>show slave status\G
......
Last_SQL_Error: Could not execute Delete_rows event on table testdb.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log mysql-bin.000029, end_log_pos 1402
Retrieved_Gtid_Set: f0e27aec-b275-11e6-9c17-000c29565380:1-14 --从库结束的GTID点
Executed_Gtid_Set: ab6320bc-d158-11e6-88f8-000c29c1b8a9:1,
f0e27aec-b275-11e6-9c17-000c29565380:10-11 --从库成功执行过的GTID
slave:
root@localhost [testdb]>stop slave;
root@localhost [testdb]>set gtid_next='f0e27aec-b275-11e6-9c17-000c29565380:12';
root@localhost [testdb]>begin;commit;
root@localhost [testdb]>set gtid_next='f0e27aec-b275-11e6-9c17-000c29565380:13';
root@localhost [testdb]>begin;commit;
root@localhost [testdb]>set gtid_next='automatic';
root@localhost [testdb]>start slave;
方法
错误
处理
成功
主从
数据
条件
冲突
传统
作用
方式
时候
步骤
若是
分类
切换
常见
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界云梦服务器挂
河北通益网络技术有限公司
台服手游黑色沙漠服务器
数据库的影院管理系统总结
历城租房软件开发
软件开发风险评估图
厦门软件开发公司怎么选
杭州编程软件开发服务
数据库的基本表啥意思
网络技术一般叫啥岗位
翔云互联网络科技有限公司
musql数据库面试题
服务器上如何安装打印机
hp服务器raid驱动
软件开发的企业需求点
生物技术文献数据库
微信转账显示服务器故障
数据库或服务器无效
广州触动网络技术有限公司
数据库中asci值
配置管理服务器
网络安全经济效益
物联网访问网络安全
维护网络安全的基本要求
云测网络安全管理平台
网络安全行业分析是Simon
主流流媒体服务器
list数据插入数据库
数据库查找所有姓王的学生的命令
广东卫星软件开发批发价