Mysql 半同步 漏数据_Mysql主从复制、半同步复制、并行复制

MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中(relay_log),然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。

1.主数据库(Master)将变更信息写入到二进制日志文件中,这里需要注意的是旧版本的MySQL数据库默认是不开启二进制日志的,强烈建议在安装好数据库启动之前一定要先检查一下二进制日志文件是否开启,即使不做主从复制架构也要开启,否则当数据库启动之后再开启二进制日志时需要重新启动数据库。

2.从数据库(Slave)开启一个IO工作线程,通过该IO线程与主数据库建立一个普通客户端连接,主数据库会启动一个二进制日志转储线程(binglog

dump

thread),从数据库的IO线程通过这个转储线程读取主库上的变更事件,并将变更事件记录到中继日志中(relay_log),如果从数据库的IO线程读取速度追赶上主库的事件变更,在没有得到新变更的通知时,IO线程会进入Sleep状态。

3.从数据库还会启动一个SQL

Thread线程,这个线程从中继日志(relay_log)中读取变更事件,并将变更同步到从数据库中。同时,可以通过配置选项,除了将变更存储到数据库中,也可以将变更事件同时存储在从数据库的二进制日志中

d96742141e21fc32686835b152b5b203.png

Master :server1 slave:server2

1.安装数据库:master和slave同样的操作

2、mysql初始化配置

master和slave

07ddc48b2386e3f07918623939b43729.png

安全初始化,并设置新的密码

3.对master进行配置

为slave授权用户

查看master状态:

5530a6864d3aac0f96b957db31d7ff64.png

4.对slave进行配置

在slave添加master

9ce5437370bd54d00b557ba92c7b4715.png

5.测试:在master写入数据在slave查看

master:

slave:

46077c1bb0de1ad95836ccf45c3dc04c.png

数据同步,主从设置成功

GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。

GTID 实际上 是由 UUID+TID 组成的。其中 UUID 是一个 MySQL 实例的唯一标识。TID

代表了该实例上已经提交的事务数量,并且随着事务提交单调递增。

从 MySQL 5.6.5 开始新增了一种基于 GTID

的复制方式。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。

在原来基于二进制日志的复制中,从库需要告知主库要从哪个偏移量进行增量同步,如果指定错误会造成数据的遗漏,从而造成数据的不一致。借助GTID,在发生主备切换的情况下,MySQL的其它从库可以自动在新主库上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制位置发生误操作的风险。另外,基于GTID的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险。

master机的设置

slave机的设置

275169dc62917b9d9bde721377d27028.png

在master写入数据

在slave查看

bfefee4f661c2f52e8475846f21d309a.png

异步复制即是master数据库把binlog日志发送给 slave数据库,当slave服务器发生故障了,那么肯定会导致主从数据库服务器的数据不一致。

为了解决上面的问题,MySQL5.5引入一种叫做半同步复制模式。开启这种模式,可以保证slave数据库接收完master数据库发送过来的binlog日志并写入自己的中继日志中,然后反馈给master数据库,告知已经复制完毕。

开启这种模式后,当出现超时,主数据库将会自动转为异步复制模式,直到至少有一台从服务器接受到主数据库的binlog,并且反馈给主数据库。这时主数据库才会切换回半同步复制模式

b6f559ad60918a8ca28c81e892b55d52.png

master:

系统变量反映了半同步复制是如何配置的。若要检查它们的值,请使用

85d2f902f9193de3f79af8c5151c9ac8.png

状态变量能够监视半同步复制的操作。若要检查它们的值,请使用

07da2a472b8568a8c7c296493dd08bd1.png

slave:

查看半同步复制变量和它们的状态:

fc79a4fec3e7c98dbb77ad78d1114996.png

8be915a6dfd9e9da96bbc916f86b1719.png

master机写入数据,并接受到slave机返回的ack值

7de31d97e94528b7d62a009d6963696e.png

将slave机的io线程停掉,master机写入数据,会默认等待10s,如果超时还未等到slave机的ack,将自动切换到异步复制,如果slave机的io线程再次开启,复制将自动切换到半同步方式广州英语培训

slave:

然后在master上执行数据库操作,比如插入等,结果就是操作会等待10s返回结果,这时候退回异步复制,slave上没有接收到数据,这时候我们去查看master上的相关状态:

master:

c24df6b5834ed1d17add31b96e5a3ce4.png

数据并未同步slave

af8e8eda898d1b4eb00d11c0a63588d2.png

然后我们开启io_thread再去查看数据库的变化,发现数据同步了

bbb30b3b5e0cebb47c0500fb30ecc3f8.png

1.查看进程表

5a257c6819bd56d7e4ea8ba9f838abda.png

2.对my.cnf进行配置

3.再次登录查看进程列表

cb5ba9e667fb3b78f05681bd1e297819.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值