mysql – 设置主到多主复制的最佳方法

原始问题:
我有多个服务器都需要充当主服务器,好像一个服务器失败,下一个服务器启动并接管.我只是想知道最好的复制方式是什么.所有服务器都位于不同的数据中心.

问题

>使用’supermaster’将每台服务器设置为主 – 主机是否可以?
>我会遇到什么样的冲突?
>有没有更好的方法来做到这一点?

更新的问题:
我们在世界各地的服务器位于不同的数据中心,每个服务器都需要访问数据库,通常是在本地主机上.

每个服务器都需要能够更新数据库,每个服务器几乎都是每个其他服务器的镜像.这些都通过一个可以与之通信的服务器(超级主管)保持同步.

所有服务器只与supermaster通信,他们不知道任何其他服务器.超级主人它自己是其他服务器的镜像,只是增加了同步它们的服务.

有时候超级主管出于各种原因离线;当发生这种情况时,其他服务器正常进行,包括读取和写入数据.当超级主管重新启动时,它会启动同步过程并排除并解决其他服务器之间的冲突,当完成此操作后,所有服务器都拥有数据镜像并且都“同步”.

因此,在对这个问题进行更多思考之后,我的问题是;

>有没有办法让每台服务器上的单个数据库相同
全面,没有一点我可以更新
数据拓扑中的数据库?
>对于我的情况,是否有更好的选择来全面复制mysql

任何帮助深表感谢.

解决方法:

您需要组合四(4)个选项

选项1:星形拓扑中的MySQL

为了不重新发明*,请阅读我过去关于这个主题的帖子

> Mysql Master-Master Replication Topologies on >2 machines
> https://*.com/questions/5273043/mysql-in-star-topology/5781504#5781504
> https://serverfault.com/questions/264374/mysql-in-star-topology/264444#264444

选项2:使用DRBD

> supermaster应该是DRBD对并使用DBVIP
> Star Topology的分发主机应该从DRBD主副本复制
>所有奴隶都应该从Star Topology的分发大师那里复制
> See my past post on using DRBD in Circular Replication between two datacenters(DRBD无法在地理距离内同步,但可以为每个数据中心提供磁盘级故障转移功能)

选项3:使用半同步复制

任何网络延迟都会影响二进制日志的收集,并且通过网络传输条目可能会成为瓶颈.使用MySQL 5.5’s Semisynchronous Replication可以允许您调整MySQL心跳特征,以便最大限度地减少由于任何重大网络延迟而失去其位置的复制.

选项4:循环复制

如果您有多个主服务器,则必须进行循环复制.有许多产品用于提供循环复制,例如mysql-mmm(在评论中提到),这在单个数据中心的范围内是很好的.这只是你的谜题的一部分,因为四(4)件事物必须在圆形复制之外进行调整:

>网络延迟
> Geogrpahic距离
>每个DataCenter的磁盘级冗余(由DRBD处理)
> DRBD的DBVIP骨干自动故障转移(通过ucarp)

警告

这可能不是您的完整答案,但这些选项可以提供您可以在不同场景中尝试的想法.例如,在星型拓扑中,您​​可以执行以下操作:

场景#1

>让一个数据中心的数据库服务器成为持有InnoDB数据的SuperMaster
>将分发主服务器放在同一数据中心(仅限二进制日志)
>让所有奴隶从分发大师复制

场景#2

>让一个数据中心的数据库服务器为SuperMaster,不保存数据,这意味着超级主服务器是分发主服务器(仅限二进制日志)
>让所有奴隶从分发大师复制

情景#3

>在循环复制中的每个数据中心中设置分发主服务器
>在每个数据中心内,使用InnoDB作为唯一的存储引擎的MySQL实例(本地SuperMaster)
>从每个本地SuperMaster中,挂起两个或多个读取从站.每个读取从站应使用MyISAM作为主存储引擎.每个MyISAM表应该有ROW_FORMAT = FIXED以提高读取速度20-30%

就可能性而言,这取决于你的想象力和部门预算.

MySQL和DRBD的链接

> http://dev.mysql.com/doc/mysql-ha-scalability/en/ha-drbd.html
> http://downloads.mysql.com/docs/mysql-ha-drbd-en.a4.pdf

磁盘级冗余的DRBD和DBVIP自动故障转移的ucarp

> http://www.drbd.org
> http://www.ucarp.org

上一篇:从服务器上的mysql复制损坏(错误1236)


下一篇:用于非标准端口的MySQL复制(3306)