Bri*_*enk 7 mysql database replication database-design database-replication
可以说我有一个汽车数据库.我有制作和模特(FK制作).我打算让用户跟踪他们的汽车.每辆车都有FK到型号.现在,我有很多用户,我想分割我的数据库来分配负载.Makes和Models表不会发生太大变化,但需要跨分片共享.我的想法是使用从复制品和模型的主数据库到每个从数据库的MySQL复制.我的问题是:我可以安全地写入从数据库,假设我不写入主数据库上的那些表吗?
而在这个问题上,无论如何都要保证一个从数据库有最新的数据?例如,有人刚刚添加了"金牛座"制作,然后想要添加他们的汽车.我可以确保他们使用的从数据库具有最新的主数据吗?
是的,通常您可以安全地写入未在主服务器上写入的从服务器上的表.如果你auto_increment
在奴隶和主人身上单独插入行,你当然会遇到问题.您应该将该表配置为完全从复制中排除.
要检查您是否拥有最新数据,请SHOW SLAVE STATUS
包含一个字段Seconds_Behind_Master
,告诉您从站是否是最新的.显然你希望它为零.当然,要确保插入和复制的数据存在,您需要等待一秒钟,然后才能看到它Seconds_Behind_Master
为零.
小智 5
这是我在搜索时收集的一个好解决方案
我在这里包括了要点:
MySQL主-主复制和自动增量索引
如果使用的是主从复制,则极有可能将应用程序设计为写入主数据库并从一个或多个从数据库读取的方式。但是,当您使用主-主复制时,您将要读写任何主服务器。因此,在这种情况下,自动递增索引的问题将会出现。当两台服务器都必须向同一表中添加一条记录(每台服务器同时不同)时。每个人都将为其分配相同的索引,并尝试复制到从属服务器,这将产生冲突。简单的技巧可以避免在MySQL服务器上发生此类冲突。
在Master 1 / Slave 2上,添加到/etc/my.cnf:
auto_increment_increment= 2
auto_increment_offset = 1
Run Code Online (Sandbox Code Playgroud)
在Master 2 / Slave 1上,添加到/etc/my.cnf:
auto_increment_increment= 2
auto_increment_offset = 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10332 次 |
最近记录: |