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