首页 文章

Mysql Master Master复制错误主/从

提问于
浏览
0

我尝试过master-master复制;作为其中的一部分,我首先尝试了主从复制 . 复制连接成功但是当我在master上进行更改时,slave会抛出大量重复错误 .

Last_SQL_Error:错误'重复条目'1576'用于查询时键'PRIMARY'' . 默认数据库:'nagiosxi' . 查询:'INSERT INTO xi_auditlog(log_time,source,user,type,message,ip_address,details)VALUES('2018-05-15 16:34:19','Nagios XI','NULL',32,'cmdsubsys:用户[nagiosadmin]将新配置应用于Nagios Core','localhost','')'Replicate_Ignore_Server_Ids:

根据我的理解,主服务器无法覆盖从服务器中的值 . 复制的数据库是应用程序数据库,主数据库和从属数据库都会抛出大量错误,因为无法覆盖这些值 .

有人可以帮助我掌握主复制 . 我是否需要为此目的编写脚本?

1 回答

  • 0

    要使master-master或Galera安全使用AUTO_INCREMENT,应使用系统变量auto_increment_increment和auto_increment_offset为每个服务器生成唯一值 . https://mariadb.com/kb/en/library/auto_increment/

    在两个主设备上将 auto_increment_increment 设置为2 . 在一台服务器上将 auto_increment_offset 设置为2,在另一台服务器上设置为1(默认值) .

    这会导致一个服务器仅创建偶数值,另一个服务器仅创建奇数值 . 它们仍然是顺序的,因为如果一个服务器创建1,3,5,7和9,并且在所有这些服务器复制之后下一个插入发生在另一个服务器上,则下一个id将是10 . 不可避免,但正如任何有经验的DBA会告诉你的那样,不要忽视差距 .

    您应该在两台服务器上将 binlog_format 设置为 ROWMIXED - 而不是 STATEMENT . 如果您正在备份binlogs,那么也应该启用 log_slave_updates . 如果您有对象副本,则它们所连接的主站必须启用此选项 .

    此外,此时您将需要销毁和重建其中一个服务器,因为它们的数据永远不会一致 .

    master / master的推荐做法是一次只写一个服务器 . 您的应用程序可以随意切换,但如果只有一个被视为可写,则它是最稳定的 .

相关问题