Mysql之BinlogServer

我们在数据库的应用里,经常会使用到数据同步的场景, 从简单的单主单从同步, 到从单主多从, 再到多主多从等。 不同的数据库同步架构,都是为了解决不同的业务需求, 读写分离, 同城多活,异地多活等等。

常用的数据同步方式大概分为两种:

1、基于共享存储  , 以oracle的 RAC为代表

2、基于数据的复制, 以mysql的binlog复制为代表

目前互联网行业使用最多的数据库就是mysql, 因此基于mysql数据库,业内也拓展出了一系列基于复制的数据同步架构。 无论基于数据库的上层架构如何设计, 都离不开binlog日志的同步。

如:

1、基于MySQL原生复制主主/主从同步方案  

2、基于Galera replication方案  

3、基于Mysql5.7之后的Group Replication方案  

4、基于canal,otter的增量binlog解析同步方案

5、consul + haproxy 的服务注册发现和自动切换方案

6、sharding-proxy/ mycat 等中间件的路由方案

7、Tungsten Replicator

等等。 这些方案有个特点,就是根据具体需求去设计,满足特定条件,特定场景下的某些业务。

但这些方案我们今天都不谈,今天要讲的是如何搭建一个和任何业务技术需求都无关的binlog server。 它可以说是数据资产的集中化管理, 不同的业务线可以针对自己的业务需求从binlog server拉取相对应的增量数据信息, 比如读写分离的需求, 大数据的流数据需求, 甚至是特定场景下的双活多活需求,都可以基于binlog server去做。  而且, 从binlog  server里同步数据,不会对生产的主库产生任何影响。

而且基于binlogserver可以灵活的进行架构设计,延伸出一系列有意思且好用的数据架构, 大家可以看看booking的架构师以前写的一篇文章:

https://medium.com/booking-com-infrastructure/abstracting-binlog-servers-and-mysql-master-promotion-without-reconfiguring-all-slaves-44be1febc8a0


目前搭建binlog server的技术有以下几种:

1、基于google 开源的mysql-ripple, 

相关介绍可参考: https://github.com/google/mysql-ripple

2、github开源软件kingbus

相关介绍可参考: https://github.com/flike/kingbus

3、基于Mariadb的中间件Maxscale



这三种binlogserver MaxScale的使用最为广泛,也最为稳定,有官方持续支持,目前发布版本为2.4, 上面Booking使用的也是maxscale.

而且max不只能用来做binlogserver, 还可以实现读写分离、负载均衡、请求路由、数据库监控等,可谓中间件之利器。


所以后面接下来就介绍下 基于Maxscale的使用。

下一篇: BinlogServer 之MaxScale 介绍和简单部署手册

你可能感兴趣的:(Mysql之BinlogServer)