mysql双主使用reset master清除日志要小心
假设a、b两台服务器做了mysql双主。
有一表是tab是这样的
create table tab(id int primary key auto_increment,name varchar(20));
然后
如果是mysql主从的话,a是主,那么a机
reset master;
然后b机
stop slave;
reset slave;
start slave;
如果在a机reset master之后,b机stop slave之前,有新数据插入、删除等操作,当b机start slave后,b机不会掉数据,那些新数据还是会被同步过来的。
b机为什么要stop slave;reset slave;start slave; ?
因为reset master之后,到b机show slave status\G虽然还是显示同步,但你可以到a机show master status;就会发现与b机show slave status\G显示的Master_Log_File、Relay_Master_Log_File不是指向a机show master status显示的日志文件,因为reset master之后,a机的binlog日志从XXX.000001开始,之前的日志都被删除了。指向的日志不是a机的日志,b机当然是不可能同步了。即使在a机插入一条新记录,b机的Master_Log_File、Relay_Master_Log_File还是没有指向新的日志,重启mysql也无效。
错误提示:
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'could not find next log'
只有stop slave;reset slave;start slave;才能重新指向新的日志。在b机执行这几个命令之前,插入到a机的数据,在运行这几条命令之后,会同步回来的,所以不用担心数据丢失。
但是mysql双主却会因为一些特殊情况造成数据出问题还会影响同步。
假设前面的表tab,有数据
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
因为双主同步,所以a机和b机数据是一致的
a机
reset master;
然后b机
stop slave;
reset slave;
start slave;
在a机reset master之后,b机stop slave之前,有新数据分别插入到a机和b机,这时问题就来了
在a机
insert into tab(name) values('d');
select * from tab;
得到
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
b机
select * from tab;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
前面说了原因,我就不再说了。
然后在b机
insert into tab(name) values('e');
select * from tab;
得到
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | e |
这时a机的表tab,id 是4 ,name是d,b机的表tab,id是4,name是e,表的id是主键,这种情况下,执行 stop slave;reset slave;start slave;也是会报错的。
Last_Error: Error 'Duplicate entry '4' for key 'PRIMARY'' on query. Default database: ''. Query: 'insert into test.tab(name) values('d')'
原因就是表的id是主键,b机的id已经有4了,这样a机的
id name
| 4 | d |
同步不过来,就有这种错误了,只能人工把数据同步后,再重新change master......
总结:要reset master ,就要禁止用户增删改。如果是为网站提供数据库服务的,就要关了网站,防止增删改操作,再reset吧。想把reset master做成脚本,在计划任务中运行?要三思才好
转载于:https://blog.51cto.com/8540864/1737969
mysql双主使用reset master清除日志要小心相关推荐
- 搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs(已解决)
搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs 具体问题 ...
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变...
[Mysql主从复制] 解决的问题 数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了. 负载均 ...
- mysql双主不同步问题
1:碰到的问题 mysql双主数据库数据不同步 错误提示类似于:1032等,不仅1032我跳过后还有其他的各种问题 查询网上后,基本是两种解决方案1:直接跳过这一步错误,但是因为不同步太多了,跳过之后 ...
- MySQL学习四:MySQL双主双从
文章目录 一.MySQL双主双从配置开启二进制日志 二.[配置每一台MySQL服务器的配置文件my.cnf](https://blog.csdn.net/huiguo_/article/details ...
- python mysql 双主_keepalived+mysql双主复制高可用方案
MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了 ...
- MySQL双主(主主)架构方案
在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入 ...
- keepalived mysql双主架构图_基于MySQL双主的高可用解决方案理论及实践
MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段.本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求.各高可用技术特点对比.实施.测试等过程进行整理,完善Mysql ...
- ubuntu mysql双主热备配置_MySql双主热备配置
用四台服务器配置MySql双主热备配置 主机1服务器ip:192.168.31.208 主机2服务器ip:192.168.31.133 从机1服务器ip:192.168.31.121 从机2服务器ip ...
- mysql 双主 脑裂_MySQL双主(主主)架构方案
在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入 ...
最新文章
- SQL基础整理(事务)
- 使用 C# 开发浏览器扩展
- 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组
- linux 空硬盘,linux – dd在整个磁盘上,但不想要空的部分
- SpringCloud(三) Eureka之服务注册发现以及实现工程间调用
- 基于机器学习的GitHub敏感信息泄露监控
- 干货:手把手教你在音频分类DCASE2017比赛中夺冠
- 嵌入式程序员是难得的全栈型程序员
- 深入理解ES6之——迭代器与生成器
- T420i 简单拆机 (只拆两个螺丝清灰)
- 计算长方体和四棱锥的表面积和体积(类的继承)
- 云清联盟发布全网协同防护方案 2017将继续“纳新”共赢未来
- 处理团队人际关系的九大原则
- 服务器上可以监控虚拟机操作吗,使用Vmware免费虚拟机监控程序的利弊
- F-Groundhog Looking Dowdy2020牛客暑期多校训练营(第九场)(尺取法)
- 如何改变computed执行_皓儿日记2019-11-09 《执行力》读书笔记
- 苹果地图副总裁_挖角苹果高级计算机视觉专家 Mapillary地图更新添一员大将
- 蓝桥杯第09届 2018年省赛C/C++大学生B组——试题8 日志统计
- 产品经理——从一块钱看产品推广方案
- 记2019北航计算机夏令营体验~