mysql insert 不需要日志_Mysql数据库主从复制,有哪些坑?

26a060e20692a07d8daa7cf41f0535c4.png
应用背景

为了提高应用数据库的整体性能,通常情况下需要配置Mysql数据的读写分离,也就是一主多从的模式;数据库的写只发生在master角色的节点上,读发生在slave节点上,从而提高了数据库的读的吞吐量。

问题: Mysql数据库是通过那些方式实现主从复制的呢?

Mysql数据库通过日志的方式实现主从复制,也就是常说的binlog,通常具有两种方式:

基于语句(Statement-based replication)和基于行(Row-based replication)(以下简称SBR,RBR);

问题:SBR(基于语句)有什么优点,又有什么缺点呢?

实现方式:当leader收到客户端的请求,也就是执行语句,然后将每一个insert,update,delete语句发送给slave节点;

优点:

  • 因为直接发送执行语句,所以会产生比较少的日志数量;并且当机器因为故障停机需要备份时,可以很快的完成数据的恢复;

缺点:

  • sql语句含有不确定的函数时,比如Now()或者Rand(),会使每一个slave节点产生不同的值,造成主从不一致;
  • sql表定义中auto_incrementde列或者依赖已存在的数据的语句,比如update ...where ..condition...,需要每个slave角色节点与master节点的执行顺序抑制,否则也会造成主从不一致的现象。
问题:RBR(基于行)有什么优点,又有什么缺点呢?

实现方式:

插入:对于插入,日志中会包含表定义所有列的值。

删除:删除会包含足够的信息标识需要删除的行,通常情况下是表中的主键;如果表中没有主键,日志会记录需要删除行的旧值;

更新:更新操作会包含信息标识需要删除的行,并包含更新列的新值;

优点:

  • 因为日志中记录的是表数据修改的逻辑日志,对于主从复制模式没有数据不一致的现象出现;
  • 相比SBR模式的复制模式,对于insert,udpate 和update语句会减少锁住行的数量,相应地提高数据库的并发。

缺点:

  • RBR模式相比SBR模式会产生更多的日志文件;对于数据修改语句(DML)比如update、delete会把每一行的数据修改都会产生一条日志;
  • 在日志中,不能看到用户执行的sql语句,只能看到每一行数据列的变化;
  • 对于BLOB等类型大的数据类型,会产生较大的主从复制延迟。
总结

Mysql数据库目前支持SBR,RBR和MIXED三种方式,通过数据库的配置文件(my.cnf)可以通过修改binlog的的复制模式,新版本的Mysql会根据执行的语句,动态选择日志复制方式;比如DDL语句会以SBR的方式复制,而DML语句一般选用RBR的方式进行日志记录;而像GRANT,REVOKE等语句已定会采用SBR的模式记录日志;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库主从复制是一种用于解决MySQL单点故障和提高整体服务性能的技术。它的原理是通过将主数据库的更新操作复制到从数据库,使得从数据库可以保持与主数据库的数据一致性。[1] 在实际的生产环境中,主从复制被广泛应用于增加MySQL的可用性和性能。通过配置主从复制,可以实现数据的备份和读写分离,从而提高整体的系统性能。 主从复制MySQL中具有很多优势,它可以提供高可用性、高性能和灵活性。通过主从复制,可以简化MySQL的部署过程,并根据不同的业务需求进行灵活的调整。 总结来说,MySQL数据库主从复制是一种解决单点故障和提高性能的技术,它通过复制主数据库的更新操作到从数据库来实现数据的备份和读写分离。这种技术可以提供高可用性、高性能和灵活性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL数据库——主从复制](https://blog.csdn.net/qq_41808387/article/details/107009748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MySQL主从复制](https://blog.csdn.net/m0_62473957/article/details/124140928)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值