我尝试了主复制;作为它的一部分,我首先尝试了主从复制。复制连接是成功的,但是当我在主服务器上进行更改时,从服务器抛出了很多重复错误。
上一个\u sql \u错误:查询中键“primary”的错误“duplicate entry”1576”。默认数据库:“nagiosxi”。查询:插入到XiuAudiLogLoT(LogyTime,Soad,Author,Type,Mead,Enter Advices,Debug)值(2018—05-15 16:34:19),'NigiSi’,' NULL’,32,'CMDSys:Adv[ngiOsAdmin ]对NigoSoCo,'LoalHoal','''复制了一个新的配置席
根据我的理解,主服务器不能覆盖从服务器中的值。正在复制的数据库是应用程序数据库,主数据库和从数据库都会抛出很多错误,因为这些值无法重写。
有人能帮我做主机复制吗。我需要为此编写脚本吗?
1条答案
按热度按时间nfg76nw01#
为了使master或galera安全地使用自动增量,应该使用系统变量
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
至ROW
或者MIXED
--不是STATEMENT
--在两台服务器上。如果您正在备份binlog,那么log_slave_updates
还应启用。如果您有子副本,则它们所连接的主机必须启用此选项。另外,此时还需要销毁和重建其中一台服务器,因为它们的数据永远不会一致。
master/master的推荐做法是一次只向一台服务器写入数据。您的应用程序可以随意切换,但如果只有一个应用程序被视为可写,那么它是最稳定的。