栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

mysql主从复制

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql主从复制

mysql主从复制
  • mysql主从复制
    • 安装mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
    • mysql安全初始化
    • 实现一主一从复制
    • 实现一主多从复制(gtid模式)
        • server2与server3的一主一从复制
        • 加入新的slave server4节点
        • 实现一主多从复制
    • AFTER_SYNC模式
        • 配置after_sync模式
        • master超时时间
        • slave设置延迟


mysql主从复制

之前都是通过编译安装,下面用rpm包,再yum install。
server2(172.20.10.6)和server3(172.20.10.8)做主从复制。server2为主,当server2中的数据变更以后,server3会随着server2自动更新。
主从复制保证server2和server3上的数据是一致的,主和从所执行的操作也是一致的。即从将主执行的SQL语句复制,自己再运行一次。

安装mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar



mysql安全初始化








实现一主一从复制

配置server2和server3,server2(172.20.10.6)为master,server3(172.20.10.8)为slave。












实现一主多从复制(gtid模式)

server2 ---- 172.20.10.6 — master
server3 ---- 172.20.10.8 ---- slave
server4 ---- 172.20.10.10 ---- slave

server2与server3的一主一从复制





加入新的slave server4节点










实现一主多从复制




一主多从,
A(master)->B(slave); A(master)->C(slave)。B与C上的配置是一样的.
所有的slave都要通过认证,即用户名和密码认证连接到master。master上每当有数据更改都会写到二进制日志文件binlog dump ,如果写入到磁盘GTID,则会持久化保存。一旦变更以后,master就会把增量部分发送到slave。slave的io线程接收,并且把二进制日志写入中继日志relaylog中,并写入磁盘disk。然后SQL线程开始回放,更新日志。。。默认master与slave是异步的。有个问题,如果master与salve之间网络断开,那么salve端就会收不到信息。那么master与slave之间就会数据不一致。如何解决数据丢失的问题?

线性结构,A(master)->B (slave1)->C (slave2)
还有一种情况:master发送变更给slave1,slave1再将变更发送给slave2,则需要在slave1的/etc/my.cnf上添加log-slave-updates=ON, (表示当受到master的中继日志,回放之后会把回放的信息写入自己的二二进制日志,以便后续slave复制)并且打开二进制日志log-bin=mysql-bin=ON,这样slave2就能复制二进制日志,而不是中继日志。

AFTER_SYNC模式

MySQL5.7之前都是用after_commit的方式提交的,是半同步的方式。在master端用户做数据提交,比如insert into或者其他的SQL语句。用户线程写入二进制日志,dump线程会将增量push到slave端。slave端的io线程开始接收,并且持久化到relay log,之后会有一个ack响应给master端,也就是说master会一直等待slave接收并返回确认ack,之后给用户线程提交OK。注意在master端向提交数据的用户返回ack之前,会有引擎提交的过程。一旦引擎提交之后,其实连接master端的其他用户已经可以看到master提交的数据了。但是master还没有收到ack,可能slave端并没有收到增量数据。。。

after_sync模式就很好的解决了上述的问题。将引擎提交放在master收到slave的ack之后进行。如果没有收到slave的ack确认,那么master就不做引擎提交。如果master没有做引擎提交,那么其他用户也不会查看到数据。但是用户提交的数据,master是持久化到自己的二进制日志的。以便于通过日志恢复数据。

配置after_sync模式



master超时时间

slave设置延迟

可以通过延迟来模拟实际延迟的效果,研究延迟的时间对实际应用的影响。另一方面,如果在master端做了一个误操作,slave端设置了延迟同步数据,在延迟时间之内,slave的数据是完好的。只要在slave端把delay事件终止,将数据备份恢复到master端即可。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/826553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号