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