MySQL复制常见报错处理【转】
在日常工作中,笔者遇到过很多MySQL主从复制报错的情况,这篇文章就来聊一聊常见的一些复制报错,以及处理办法。
1 server id 重复
这个在我们刚接触主从复制的时候可能会犯的错误,也就是主从的 server_id 配置成相等的了,show slave status\G 会报如下错误:
报错中也提示了:主和从有相等的 server id。
解决办法:
修改主从的 server_id,建议改成IP后两段的组合。
比如 IP 是192.168.11.11。那 server_id 就定义为 1111,通常情况同一架构中的 server_id 重复的概率就小很多了。
2 端口不通
主从端口不通,通常 show slave status\G 报错如下:
其中:
Slave_IO_State 显示为:Connection to master;Slave_IO_Running 显示为:Connection;Seconds_Behind_Master 显示为:NULL。
解决办法:
将主从端口调通,保证能互相 telnet 通对方的 3306 端口。
3 主库要新增的内容在从库已经有了
可以先模拟出这种报错(注意!只能在自己的测试环境操作)。在从库上新建一个库:
create database martin_test;
再到主库执行同样的建库语句:
create database martin_test;
再去从库执行 show slave status\G:Last_Error 中提示了,不能再创建 martin_test 库,因为已经存在了。
解决办法:从库跳过这条记录。
如果是 GTID 模式:假如 Executed_Gtid_set 为:
65c07f5e-1e37-11ed-b657-fa163e0d61f4:1-10139
则恢复操作为:
mysql> stop slave;
mysql> set @@session.gtid_next='65c07f5e-1e37-11ed-b657-fa163e0d61f4:10140';
mysql> begin;commit;
mysql> set session gtid_next='AUTOMATIC';
mysql> start slave;
mysql> show slave status\G
session.gtid_next 后面接的是 Executed_Gtid_set 下一个值。
如果是位点模式:
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G
4 主要更新的记录,从库没有
可以先模拟出这种报错(注意!只能在自己的测试环境操作)。创建测试表并写入数据:
CREATE TABLE test_repl (
id int NOT NULL AUTO_INCREMENT,
a int NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB CHARSET=utf8mb4;
insert into test_repl values (1,1),(2,2);
在从库删除一条记录
delete from test_repl where id=1;
再到主库更新 id =1 的记录
update test_repl set a=2 where id=1;
从库执行 show slave status\G提示要更新的记录不存在。
解决办法:我们可以根据上图的 Relay_Log_File 和 Relay_Log_Pos(分表对应的是:mysql-relay-bin.000014 和 1112 )来解析出报错的 SQL 语句。
mysqlbinlog mysql-relay-bin.000014 --start-position=1112 --base64-output=decode-rows -v >/tmp/1110.sql
可以看到如下内容:
可以找到原记录,原记录就是 WHERE 后面对应的值,然后在MySQL中执行
insert into test_repl select 1,1;
stop slave;start slave;
这样主从同步就恢复了。
当然,这只是众多复制报错的一部分,如果你遇到过其他的一些复制报错,欢迎在文章下方留言一起讨论。
转自
MySQL复制常见报错处理
https://mp.weixin.qq.com/s?__biz=MzIyOTUzNjgwNg==&mid=2247484754&idx=1&sn=842673f19359cd9146bc40a04c2890a7&chksm=e840601bdf37e90d13b24c7f4a77bafb2f4c4bb181e6126315b45d5987ce40656f88333b4ff5&mpshare=1&scene=23&srcid=1230c34pPtXTZouNGQUINca3&sharer_sharetime=1672357654250&sharer_shareid=d4c90af7aec01f0a93659ebb355381a9#rd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2015-12-30 TCP/IP模型各个层次的功能和协议