这是关于复制的一个非常基本的问题。
如果您使用主从复制设置数据库,其中写入到主服务器并且读取转到从服务器,这并不意味着新写入的数据不一定会显示在读取中直到一段时间后?
例如,假设用户在您的网站上发布评论(写:INSERT INTO评论...)然后刷新页面(读取:SELECT * FROM评论...)。读取进入从属设备,其中INSERT语句尚未被复制,因此注释列表返回时没有新的注释。这实际上会违反“耐久性”#34; ACID的一部分,至少是暂时的。
它是如何实际运作的?或者是否有某种方法可以确保用户始终能够阅读他们刚才所写的内容?
答案 0 :(得分:2)
Master-> Slave复制数据库适用于写入master数据库并读取Slave的位置。当INSERT进入主数据库时,从属设备将包含该信息,因为master-> slave配置并同步。例如,如果我写了:
INSERT into TEST_TABLE (col1, col2) values ("test", 123);
如果我去了奴隶数据库并查询:
SELECT col1, col2 FROM TEST_TABLE;
我将看到我插入master数据库的值。我建议您查看有关正在使用的SQL风格的文档,以获取有关master-> slave replication的更多详细信息。正如评论中所提到的,您使用的SQL的风格以及必须启用复制频率的配置都很重要。