MySQL多源复制解决方案

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

MySQL轻松实现一主多从,但要将多个实例的数据复制到一个实例中就比较难啦,幸好在MariaDB中已经实现multi-master replication 功能;

在介绍MariaDB的功能前,我们先看看一些开源的解决方案:

1、Tungsten replicator 支持异构数据复制,java实现,成本较高;

2、使用mysqlbinlog或者类似工具拉取binlog,实现较为简单;

3、采用级联复制,比如在两个master之间实现复制,M1->M2,M2上对应的表存储引擎使用Blackhole引擎,并且开启log-slave-update选项;最后在M2之后再挂一台slave即可;

4、采用Federated存储引擎,在一台实例上创建远端数据表的“软链接”

5、其他各种patch或者工具

以上几种方式,大家可能已经都接触过,最近MariaDB 10.0.5 beta版中已经集成这个功能:

实现方式:

多个复制通道管理:

MySQL管理每个复制通道都是通过Master_Info类,这些函数: start_slave|change_master|stop_slave|show_slave函数都需要一个Master_info指针即可;所以添加通道标示:

CHANGE MASTER ‘connection-name’ TO,START SLAVE ‘connection-name’,STOP SLAVE ‘connection-name’,SHOW SLAVE ‘connection-name’ STATUS;

其中可以通过设置默认connection name :

set @@default_master_connection='';

通道信息保存(暂不考虑类似5.6中的功能):

文件:

multi-master-info-file (master.info带上了multi-前缀),存储使用中的master connection name;

master-info-connection-name.info 当前slave连接master的信息;

relay-log-connection-name.seq-num 从master读取的复制信息;

这些文件的名称均被转换为小写;

此时,show slave status 显示为空,只能单个查看 show slave 'connection name';或者 show all slaves status 来查看状态;

其中binlog为做更改,全部记录在一起;

其他:

如果使用这种方案的话,业务数据不能重叠;

相关限制:

1、目前最多只能拥有64个master;

2、复制线程只能是两个:IO,SQL (解决中。。。);

3、xtradb innodb-recovery-update-relay-log 这个选项需要关闭;

4、slave_net_timeout 影响的是所有connection;

5、slave_heartbeat_period 不起作用;

6、半同步复制不能使用(解决中。。。。)






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1325322,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
173 1
|
6月前
|
druid 前端开发 关系型数据库
mysql使用druid时自动断开连接解决方案
mysql使用druid时自动断开连接解决方案
148 0
|
2月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
82 0
|
6天前
|
运维 负载均衡 关系型数据库
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
|
1月前
|
缓存 NoSQL 关系型数据库
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
25 0
MySQL与Redis的默契协作:解析数据一致性难题与解决方案
|
1月前
|
Ubuntu 关系型数据库 MySQL
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
解决方案:MySQL数据表明明存在,但是就是报错表不存在,原来是需要配置 MySQL 忽略表名大小写!
21 0
|
5月前
|
存储 关系型数据库 MySQL
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
Flink CDC中mysql cdc 抽取这个时间字段的值为null 有什么好的解决方案吗 ?
107 0
|
5月前
|
关系型数据库 MySQL
MySQL中数据插入与主键冲突解决方案
MySQL中数据插入与主键冲突解决方案
207 0
|
3月前
|
关系型数据库 MySQL 数据库
Host 'XXX' is not allowed to connect to this MySQL server 解决方案
Host 'XXX' is not allowed to connect to this MySQL server 解决方案
|
3月前
|
SQL 关系型数据库 MySQL
MySQL - 死锁的产生及解决方案
MySQL - 死锁的产生及解决方案
213 0