还有其他问题涉及并发症吗?
您应该注意一些已知的限制.通常,对于群集,理想情况下,您应该使用奇数个节点来防止裂脑情况,但偶数通常也可以正常工作.
是否需要改变PHP PDO连接字符串?
不.您现有的连接字符串应该有效.
事实上我的应用程序是否已经构建,以确保两台服务器尝试同时写入同一行的绝对零帮助?
查看已知限制并确保您的应用程序仍然可以执行此操作.如果您使用的是命名锁,则需要更改应用程序.
最后,从MariaDB文档中读到,这不适用于TokuDB存储引擎?
在最近的galera集群分发中添加了TokuDB支持.我已经使用了一些,它确实像InnoDB一样复制,但我不会依赖它,因为它是galera集群构建中的新功能.
有没有办法专门停止复制选定的表?我实际上可以利用"唯一的InnoDB/XtraDB"约束并在表上使用另一个我不想复制的存储引擎吗?
我听说很多人问他们是否可以从复制中省略表或数据库,但我还没有听到一个很好的理由.Galera复制提供HA并且便宜且容易,因此即使某些表不重要,我也找不到任何不复制数据的现实理由.话虽这么说,你可以使用MyISAM/Aria来复制数据.
我一直在多个中等规模的项目中使用MariaDB和galera,这是我发现的HA的最佳解决方案,它还提供了性能优势.其他解决方案通常很昂贵或不成熟.您应该考虑的一件事是设置一个代理来连接数据库服务器,如HA Proxy,mysql-proxy或glbd(我使用它),以提供更好的冗余和连接性能平衡.
针对DroidOS的评论如下:
群集中的每次写入都需要由每个节点达成一致,因此节点之间的任何延迟都会添加到每次写入.因此,基本上,每次写入都会在写入服务器和添加到其中的其他节点之间具有最大的往返时间.
没有.Galera复制在整个集群中是全部或全部.如果任何节点在写入数据时出现问题(如果表没有主键,则会发生这种情况),节点将优雅地自行终止,因为它无法保证其数据与群集的其余部分一致.如果发生这种情况,群集的其余部分将继续正常运行.如果存在网络问题,如果其中一个段具有仲裁,则它将继续正常运行.没有仲裁的任何段将等待更多节点获取仲裁但不接受查询.通过此行为,您可以确保您能够查询的任何节点与群集的其余部分一致.