dbeaver 修改数据_利用MySQL的Binlog实现数据同步与订阅(上)

本文介绍了MySQL的Binlog及其在数据同步和订阅中的应用。通过Binlog,可以实现数据库审计和事件驱动,文中讨论了Binlog的三种模式,并探讨了主流的Binlog处理方案,如Canal、Maxwell和Python-Mysql-Replication。作者提出自己的构想,计划使用.NET Core、RabbitMQ和Python实现一个轻量级的消息总线系统,以解决跨系统数据流转问题。
摘要由CSDN通过智能技术生成
利用MySQL的Binlog实现数据同步与订阅(上)​blog.yuanpei.me
597742b0ca2d9a91d7cfe32c7904840c.png

终于等到了周末,在经历了一周的忙碌后,终于可以利用空闲写篇博客。其实,博主有一点困惑,困惑于这个世界早已“堆积”起人类难以想象的“大”数据,而我们又好像执着于去“造”一个又一个“差不多”的“内容管理系统”,从前我们说互联网的精神是开放和分享,可不知从什么时候起,我们亲手打造了一个又一个的“信息孤岛”。而为了打通这些“关节”,就不得不去造一张巨大无比的蜘蛛网,你说这就是互联网的本质,对此我表示无法反驳。我更关心的是这其中最脆弱的部分,即:一条数据怎么从A系统流转到B系统。可能你会想到API或者ETL这样的关键词,而我今天想说的关键词则是Binlog。假如你经常需要让数据近乎实时地在两个系统间流转,那么你应该停下来听我——一个不甘心整天写CRUD换取996福报的程序员,讲讲如何通过Binlog实现数据同步和订阅的故事。

什么是Binlog

首先,来回答第一个问题,什么是Binlog?Binlog 即 Binary Log,是MySQL中的一种二进制日志文件。它可以记录MySQL内部对数据库的所有修改,故,设计Binlog最主要的目的是满足数据库主从复制和增量恢复的需要。对于主从复制,想必大家都耳熟能详呢,因为但凡提及数据库性能优化,大家首先想到的所谓的“读写分离”,而无论是物理层面的一主多从,还是架构层面的CQRS,这背后最大的功臣当属主从复制,而实现主从复制的更底层原因,则要从Binlog说起。而对于数据库恢复,身为互联网从业者,对于像“rm -f”“删库”“跑路”这些梗,更是喜闻乐见,比如像今年的绿盟删库事件,在数据被删除以后,工程师花了好几天时间去抢救数据,这其中就用到了Binlog。

可能大家会好奇,为什么Binlog可以做到这些事情。其实,从Binlog的三种模式上,我们就可以窥其一二,它们分别是:StatementRowMixed,其中Statement模式记录的是所有数据库操作对应的SQL语句,如INSERT、UPDATE 、DELETE 等DML语句,CREATE 、DROP 、ALTER 等DDL,所以,从理论上讲,只要按顺序执行这些SQL 语句,就可以实现不同数据库间的数据复制。而Row模式更关心每一行的变更,这种在实际应用中会更普遍一点,因为有时候更关心数据的变化情况,例如一个订单被创建出来,司机通过App接收了某个运输任务等。而Mixed模式可以认为是Statement模式和

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值