最新消息:

单个MySQL Instance 接多个 Master 的一点想法

大话技术 admin 2774浏览 0评论

时常遇到一些希望从多个 MySQL 实例将数据复制到单个MySQL 实例上的需求场景,又苦于原生的 MySQL 并不支持这样的实现方案,开源社区中也没有哪位大拿提供解决这方面需求的插件。 有时候就想,要不公司里面组织力量修改一下 MySQL 代码来搞定这个问题得了。可转念一想,后面如果需要升级版本的时候怎么办呢?再修改一次代码?这样的成本有多大呢?如此的问题让人很是纠结。 最近突然想明白了:为啥非要在现在代码中来实现这个需求呢?为啥不能通过在外部想办法呢?我们需要的不是看上去的美,而是最终的结果。看上去漂亮完美的架构方案并不一定就是最好的。 如是就有了下面这样的想法:

  • 通过在 Master 和 Slave 之间增加一层复制代理服务
  • 多个线程连接上多个 Master 上请求 Binlog(完全模拟 Slave 上的IO线程)
  • 多个线程连接上单个 Slave 实例,直接以类似于应用程序的方式并行应用 Binlog中的Event(部分模拟Slave 上的SQL线程)
  • 由于很清楚业务场景,在应用线程方面可以在一些特定规则约束下实现并行应用以改善 Slave 端延时

由于 MySQL 开源的特性,实现上述功能其实很简单,还可以保持原生 MySQL 不会被动任何手术即可完成我们的需求,看来是该动手的时候了。

BTW: 我的需求中,各个 Master 中的数据是不会有任何重叠的。

原文出自: 单个MySQL Instance 接多个 Master 的一点想法

转载请注明:爱开源 » 单个MySQL Instance 接多个 Master 的一点想法

您必须 登录 才能发表评论!