MySql5.7主从复制

本文介绍了MySQL5.7的主从复制基础,包括异步复制特性、基于Binlog的日志格式以及复制的选择性。详细阐述了复制实例,如二进制日志和GTID复制,并探讨了半同步复制在5.6与5.7版本的差异,强调其在数据安全性上的提升。同时,提供了基于日志点复制的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL复制基础

1、Mysql的复制是异步复制(会有一定延迟)
在这里插入图片描述
在master中操作是可以并行进行的,并发的事物量称为TTS(每秒钟执行写操作)只有master完成写操作,才会把日志写入binarylog,是一个线性的过程,不能并发执行
在这里插入图片描述
造成了一种现象,在master上时并发执行的操作,在从上变成了线性操作。
实例:在做论坛过程中,数据量比较大,可以进行读写分离操作。但是会有这样一种请款,自己写的帖子,刷新一下,但是会有延迟,读不到自己写的帖子。这是我们可以做一个假延时状态,将自己的读操作和写操作放在用一个master中,其他人读的时候放在slave中。
2、MySQL的复制是基于Binlog日志
存在三种日志格式
Statement:Binlog中存储的的是sql语句,存储日志量是最小的。
缺点:uuid等一些函数,或者update limit在没有使用orderby 的情况下可能会造成主从不一致。

row存储event数据,存储日志量大,但是不能很直接的进行读取

statement和row区别:
假如update1000行数据,statement里面存储的是一行update数据,而row则存储的是1000行数据的变更
缺点:不能很直观的进行日志的读取,存取的日志量比较大
mixed结余Row和Statement之间的,对于不确定的操作使用row记录,如果每天数据操作量很大,产生的日志比较多,可以考虑混合模式
2、MySQL的复制可是对整个实例进行复制,也可以对实例中的某个库或某个表进行复制
在Master端进行控制:
binlog-do-db(库)
binlog-ignore-db(库)
在Slave端进行控制
replicate-do-db(库)
replicate-ignore-db(库)
replicate-do-table
replicate-ignore-table
replicate-wild-do-table
replicate-wild-ignore-table

MySQL5.7复制实例

存在量中复制类型
1、基于二进制日志的复制
(对于主从复制时,必须明确的知道当前的数据所对应的主上的日志文件和日志点,特别是一主多从的情况下,)
2.使用GTID(全局事物标识符)完成基于事物的复制:
每一个在master所提交的事物都会赋予全局唯一的标识,标识由两部分组成(主机标识符和事物ID),当我们在从上重用这些数据的时候,就可以明确知道哪些事物已经执行过,哪些事物没有执行过

MySQL支持半同步复制

当集群中存在半同步复制的主从服务器时,允许一个进程中的master提交事物后,
在一段时内,阻止进程向调用进程进行提交,并且在一段时间内,可以收到来自slave确认,只有当slave确认收到日志,并存入到磁盘之后,在master提醒事物进程,整个事物执行完成
5.6支持半同步复制
在这里插入图片描述
5.7半同步复制
在这里插入图片描述
防止了主上的复制晚上从的复制还没完成,就显示commit OK,mysql5.7进一步保证了数据的安全性和完整性
如何实现基于日志点的复制
步骤:
1、在Master端建立复制用户
2、备份Master端的数据,并在Slave端恢复
3、在slave端使用Change master命令配置复制

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值