我正在努力解决以下问题:我有两个MySQL服务器,配置为主从服务器,但它们不在同一个内部网络上,因此有时会出现明显的延迟,写入后从从服务器读取可能会导致不一致性问题。
我想知道是否有一种方法可以让mysql从从属程序中读取,如果在从服务器或其他解决方案上没有结果的话,它会以某种方式退回到从属服务器。
不确定是否可以这样做,也不确定是否应该在应用层或mysql级别。
当前的设置是带有mysqlnd扩展的php5,通过遵循文档(在yaml http://symfony.com/doc/current/reference/configuration/doctrine.html上添加从程序),我设法让应用程序从从服务器读取并在主服务器上写入。
发布于 2014-11-12 14:53:37
最后,我在Doctrine\DBAL\Connections\MasterSlaveConnection的PHP上发现,只要调用以下命令,就可以在任何时候强制使用主服务器:
$conn->connect('master'); 因此,我的解决方案是在需要数据一致性的控制器操作的开头放置以下行:
$this->getDoctrine()->getConnection()->connect('master');这样,它总是在执行流期间从主程序读取,而应用程序的其余部分则保持读/写之间的平衡。我不确定这是否是最好的解决方案,但它对我的目的是有效的。
我希望这对处于类似情况的人有所帮助。
https://stackoverflow.com/questions/26889844
复制相似问题