复制中常见1062和1032错误处理方法
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,复制中错误处理传统复制错误跳过:stop slave sql_thread ;set global slq_slave_skip_counter=1;start slave sql_thread ;G
千家信息网最后更新 2024年11月24日复制中常见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安全错误
数据库的锁怎样保障安全
汇顶笔试应用软件开发岗
零基础学前端还是网络安全
网络安全相关的ppt
医药数据库职称
申论 网络安全
教师如何提升自己的网络技术
网络安全答题比赛是什么
mdb数据库表怎么改
计算机网络技术教学工作总结
北京新一代网络技术市场价
管理软件开发找臻动传媒
4399本地数据库地址
老头环服务器太垃圾
杭州电子科技大学 网络安全学院
成都嗨房网络技术公司
学网络安全的理由
上报金融信用息基础数据库
调用数据库数据显示到页面
软件开发毕业论文前言
数据库建立需要打开的服务
上海亨嘉网络技术有限公司诚
语音会议软件开发哪家价格低
鹰潭个人服务器哪家靠谱
维普数据库是如何运行的
六盘水数据库技术与应用
服务器独立缓存需要多大内存
西部数码云服务器试用
如何区分服务器和电脑cpu
临沂市智森互联网科技有限公司
3月互联网科技大事件