在mysql中将数据从slave更新到master

Posted

技术标签:

【中文标题】在mysql中将数据从slave更新到master【英文标题】:updating data from slaves to master in mysql 【发布时间】:2013-11-14 20:49:42 【问题描述】:

我正在运行一个带有多个从属服务器的主 mysql 服务器。从主服务器到从服务器的复制过程工作正常。但是有一个问题:我需要将一张表中的内容从slave推送到master。

同样的表也被master自己使用,但是每个mysql服务器在那个表中都有自己的数据。因此我需要将数据从从站添加到主站。

我曾想过跟踪每个从属服务器的查询,然后将查询推送到主服务器,但它看起来很混乱,每当我遇到错误时,我都会被卡住。

表格如下所示:

服务器 ID(关键字段)- 日期(关键字段)- 统计信息

每台服务器都会跟踪其服务器上的统计数据,并且主服务器需要整合所有这些以用于报告目的。

有什么想法吗?

【问题讨论】:

你真的需要将这些数据从slave合并到master上的同一张表吗?您如何看待使用 crontab+bash 从复制中排除该表并整合数据(从主服务器发送到从服务器并返回)? 我确实已经从复制中排除了它。我只需要将来自从属的数据更新到该表的主控。我现在正在考虑在从属服务器上执行 mysqldump,然后使用 crontab 将其推回主服务器,使用 REPLACE 而不是 INSERT 如果你不能避免写入奴隶你可以去合并,没关系。你也可以看看钨复制器。您可以轻松设置从属多个主控(在这种情况下,您的主控将成为从属,所有从属将成为主控)。你也跟着去 【参考方案1】:

我最终用 mysqldump 转储了表,然后通过 crontab 将其添加到主数据库。

我意识到在这种情况下使用带有替换选项的 mysqldump 很重要,因为我可能已经在其中输入了条目。请注意,我使用的密钥确保条目仅来自某个从属/主控,因此没有服务器位于另一台服务器的方式。

解决方案:

mysqldump -u xxx -pyyyy database table | mysql -h host -u xxxx -p yyy database

【讨论】:

以上是关于在mysql中将数据从slave更新到master的主要内容,如果未能解决你的问题,请参考以下文章

在centos上创建MariaDB/Mysql主从(Master/Slave)

Slave没有在mysql主从复制中将任何数据写入表中

mysql (master/slave)复制原理及配置

MySQL主从复制(Master-Slave)实践

mysql主从复制如何实现

实现MYSQL的主从复制