概述

由于目前生产环境的mysql数据库分布在两台服务器,若从单一主从来看,配置很简单,但是需要将两台服务器的数据库同步到一台从库上面,需要进行更多配置和注意事项。多源复制有两种方案,Binlog+Position和GTID,我们采用的是第一种方案Binlog+Position进行的多源复制。

安装mysql

在从库的服务器上安装mysql-5.7版本的,目前只有mysql5.7以上的版本才支持多源复制。

配置mysql

1、配置两台master的mysql

在my.cnf配置文件中增加或修改以下参数:

server_id = 90

log_bin = master_1

log-bin-index = master_1.index

2、配置slave

在my.cnf配置文件中增加或修改以下参数

server_id = 92

relay_log = slave

relay_log_index = slave.index

master-info-repository = TABLE

relay-log-info-repository = TABLE

replicate_ignore_db = mysql

开始配置多源主从复制

1、设置master

在master新建slave复制用户:

grant replication slave,replication client on *.* to repl@'192.168.2.92' identified by 'repl';

flush privileges;

分别进入两台master的mysql终端执行以下命令将mysql进行锁表操作

flush tables with read lock;

然后执行show master status; 获取master的log_bin_file的文件名和file_size。

分别导出两台master的mysql需要备份的数据库的结构和数据。

2、设置slave

登入slave的mysql终端,新建需要备份的数据库(例:CREATE DATABASE `order_00` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;)

进入各个数据库导入master备份的数据库的结构和数据(所花时间长短取决于数据量的大小)。

在slave执行完以上步骤后开始配置从复制,先执行stop slave; 然后slave复制master配置如下:

change master to master_host='192.168.2.91',master_port=3507,master_user='repl',master_password='repl',master_log_file='master_91.000001',master_log_pos=376 FOR CHANNEL 'master_91';

注意:需要分别配置两台master,然后分别执行。

以上配置命令执行完成后,启动slave执行命令:start slave;

检查slave有没有启动成功:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上两项为yes代表配置多源主从复制成功。

最后分别在master库执行命令unlock tables;解除锁表。

测试

分别在两台master中的数据库中抽查几个数据库进行新建数据表和数据,对master的新建表数据进行手动增删改查,然后查询slave有没有进行同步,若和master的数据一致,则表示多源主从复制成功,若没有同步则不成功,不成功从第一步开始检查。

注意事项

1、遇到Slave_IO_Running: connection的时候,检查master和slave的防火墙,若防火墙没有问题,检查change master配置的时候IP,port,user,pwd等。

2、遇到Slave_IO_Running: Yes,Slave_SQL_Running: Yes都是yes却数据不同步的时候检查my.cnf配置文件中replicate-do-db参数。可以将其注释或者分库单独写。

3、一定要在master锁表后才能进行数据的导出,不然可能会导致主从数据不一致。

4、再所有步骤完成后一定要解除master的锁表,不然master插入数据会报错。

mysql数据库多源复制方案的更多相关文章

  1. MySQL数据库的高可用方案总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  2. MySQL 数据库双向同步复制

    MySQL 复制问题的最后一篇,关于双向同步复制架构设计的一些设计要点与制约. 问题和制约 数据库的双主双写并双向同步场景,主要考虑数据完整性.一致性和避免冲突.对于同一个库,同一张表,同一个记录中的 ...

  3. 烂泥:学习mysql数据库主从同步复制原理

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 说明本篇文章部分转载自互联网. MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对 ...

  4. mysql架构解读~mysql的多源复制

    一 场景需求 多源复制版本 5.7,目标主机5.6.21 4个DB机器的某些数据库需要数据汇总进行连表查询 二 进行搭建  1 导出相应的目的库     mysqldump -uuser -ppass ...

  5. mysql数据库主从同步复制原理

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...

  6. MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...

  7. PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

    PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...

  8. 后端分布式系列:分布式存储-MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适.最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类.结合实际工作中碰到的问题,以寻找答案的方式来剖 ...

  9. MySQL 5.7--多源复制(非GTID模式)

    ==================================================== 在MYSQL5.7版本中引入多源复制,一个从库允许复制多个主库的数据,每个主库被配置为一个单独 ...

随机推荐

  1. ioc和aop的区别?

    ioc:控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语.它包括依赖注入(Dependency Inject ...

  2. Zookeeper 应用程序

    Zookeeper为分布式环境提供灵活的协调基础架构.ZooKeeper框架支持许多当今最好的工业应用程序.我们将在本章中讨论ZooKeeper的一些最显着的应用. 雅虎 ZooKeeper框架最初是 ...

  3. erlang二进制的难理解的地方,有点神奇

    40> <<A:16>> = <<1,2>>.<<1,2>>41> <<B:16/bits>> ...

  4. python中使用@property

    class Student(object): @property def score(self): return self._score @score.setter def score(self, v ...

  5. Sql server中根据存储过程中的部分信息查找存储过程名称的方法【视图和Function】

    .查询的语句: select a.id,b.name,a.*,b.* from syscomments a join sysobjects b on a.id=b.id where b.xtype=' ...

  6. 解决RaycastTarget勾选过多的烦恼

    看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发.UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到 ...

  7. java jdk-awt.font在centos上中文乱码的问题, 安装中文字体

    有需求生成一个二维码,并且有一段文本说明,但是使用awt.font来生成中文时,一直存在乱码的问题.网上的解决办法有几种,但是在centos上亲测有用的就是如下的方法. Java代码如下:new ja ...

  8. 对于jsp中编码的理解

    1.会话都是从客户端也就是浏览器开始发起的,首先用户将地址输入到地址栏中, 当用户输入enter或者点击转到的按钮时,浏览器会根据当前页面的charset对地址栏中的地址进行encode一次,当服务器 ...

  9. 实现Runnable接口和继承Thread类区别

    如果一个类继承Thread,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享. 实现Runnable接口比继承Thread类所具有的优势: 1):适合多个相同的程序代码的 ...

  10. Spring new对象时注解失效

    新建了一个新类(A)后,在类中用注解将属性注入.类名(A)上用 @Component ,类中的一个属性(name)上用 @Autowired或@Resource, 方法(fun)中通过 属性(name ...