MySQL master 宕机导致slave数据库比master多的case

先说环境吧:

Server version:         5.6.16-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)

mysql> show variables like ‘%innodb_flush_log_at_trx_commit%‘;
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2     |
+--------------------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like ‘%sync_binlog%‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
-- Master上的error log:

2015-03-21 08:07:24 17646 [Note] Crashed binlog file /paic/mylog/3308/mysql-bin.002977 size is 130408448, but recovered up to 130407973. Binlog trimmed to 130407973 bytes

-- 从这个日志上看,当时主机启动后binary log从130408448 回滚到了130407973.

-- Slave上的error log:

2015-03-21 04:41:21 22181 [Note] Slave I/O thread exiting, read up to log ‘mysql-bin.002977‘, position 130484169

-- Slave上读到的binlog为130484169这个pos.

-- 这样的话slave会比master上多一点数据

可以看出slave上读取到的binlog pos(130484169)比master binlog recovery 后的pos(130407973)要大,甚至比recovery前的binlog(130408448)也要大!

slave收到了binlog并不会回滚,并在slave sql thread执行写入 导致slave数据比master要新!!!

同时可以看出master的 Binlog Dump 线程推送binlog内容时,没有刷盘已经推给slave了。可见MySQL 的replication 在数据一致性方面确实难以实现。

根据CAP理论: 主从同步能达到A、P 但是C无法满足,其实严格意义上来讲A也没有达到!

时间: 2024-10-09 15:08:58

MySQL master 宕机导致slave数据库比master多的case的相关文章

由于master宕机等导致resource调用出现异常,直接将该resource返回到pool以便其他代码使用会导致得到不可预期的结果,导致返回数据混乱。

实现一:public String get(final String key) {              Jedis resource = null;              try {                           resource = pool.getResource();                            return resource.get(key);           } finally {                      

Mysql自动宕机:InnoDB: Cannot allocate memory for the buffer pool

今天早上上班,发现自己使用wordpress搭建的网站不能访问,报如下错误: Error establishing a database connection 赶紧登到自己阿里云服务器(centos7.4)查看mysql服务,通过ps -ef | grep mysql 发现已经没有了mysql进程. 首先要做的是查看mysql日志,通过vi /var/log/mysqld.log果然发现对应的错误异常: 2018-12-26T02:06:16.148626Z 0 [Note] Event Sch

Mysql DBA 高级运维学习笔记-一主多从宕机从库切换主继续和从库同步过程

1.主库master 宕机 登录从库show processlist\G 看两个线程的更新状态 mysql> show processlist\G *************************** 1. row *************************** Id: 1 User: system user Host: db: NULL Command: Connect Time: 22997 State: Waiting for master to send event Info:

Mysql主从架构-主库宕机如何恢复业务

在我们日常工作场景,首先要做到架构无单点隐患,其次在优化[安全.性能.高可用.高并发等],Mysql这款关系型数据库稳定.高效,所以使用广泛,如果企业架构是1主多从,那如果Mysql主库宕机,如何解决? ----MySQL 主从同步原理图 一.Mysql主库宕机情况分类: 1)硬件问题,(服务器.ecs.虚拟主机等等)宕机 2)service问题,Mysql宕机,服务异常,端口异常等 二.硬件问题处理思路 硬件问题我们可以查看IDC巡检记录,或通过远程控制卡查看硬件运行状态,根据事实情况就行硬件

MySQL定时检查是否宕机并邮件通知

我们有时候需要一些检查MySQL是否宕机,如果宕机了应自动重新启动应用并通知运维人员!此脚本用来简单的实现MySQL宕机后自动重启并邮件通知运维,此为SHELL脚本,当然也有一些朋友喜欢用Python之类的实现,其原理是一样的!这儿主要用到的是命令是mysqladmin ping #!/bin/bash # result=`/usr/bin/mysqladmin -u user -ppassword ping` result=`/usr/bin/mysqladmin ping` expected

Redis(六)——高可用之哨兵sentinel配置与启动及主从服务宕机与恢复

.主从复制高可用 #主从复制存在的问题: 1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master 2 主从复制,只能主写数据,所以写能力和存储能力有限 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,它会独立运行,功能有二个: 通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器. 当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机.

游戏服务器宕机数据恢复

0.概述: 一般情况下,为了提高游戏速度,在线玩家的数据都会缓存在内存中.如果有数据更新的时候,只更新内存中的缓存数据,而不是直接更新数据库.缓存数据会定时写回到数据库中(比如:5分钟写入一次). 当服务器宕机后,从上次更新数据库到宕机前的所有数据更新都将丢失,即所谓的回档.这部分数据永远也找不回来了,通常都是服务器重启后给予所有玩家一定的补偿. 1.引子: MySQL在对数据表内容进行更新的时候,也不是直接更新数据表本身的数据,而是先写入日志,然后更新数据表本身的数据.日志文件由于是对文件的顺

从Appstore宕机看DNS解析的重要性

3月11日,就在苹果公司高高兴兴发布完AppleWatch后不久,其网站便惨遭全球性宕机,宕机故障的持续时间长达11小时,期间App Store.iTunes Store.iCloud等苹果互联网在线服务无法访问.如此大面积.长时间的网络服务中断,堪称近年来苹果在线服务最大的一次危机事件. 根据外媒网站报道,该次大规模宕机导致全球苹果用户无法访问和购买,对苹果造成至少2500万美元的直接损失:另外,此次重大事故也影响到了苹果的股价,事件后苹果股价大幅下跌了 1.82 %, 瞬间蒸发 130 多亿

linux 双Redis + keepalived 主从复制+宕机自主切换

主要核心思想,如果master 和 salve 全部存活的情况,VIP就漂移到 master.读写都从master操作,如果master宕机,VIP就会漂移到salve,并将之前的salve切换为master,当宕机的master可以继续服务的时候,首先会从salve同步数据,然后VIP漂移到master服务器上面,持续提供服务. 环境准备: master:ip 192.168.28.139:redis 19020:redis 19021:keepalived slave :ip 192.168