gpt4 book ai didi

PHP/PDO MariaDB Galera 集群

转载 作者:可可西里 更新时间:2023-11-01 00:44:42 29 4
gpt4 key购买 nike

我正处于配置可从全局四个位置访问的服务的最后阶段(计划稍后添加更多)。我将在装有 MariaDB 的 Ubuntu 12.04 机器上运行服务器。我最初的想法是创建具有 4 个不同数据库且彼此独立运行的服务器,并遵守用户只能登录到他们最初注册的服务器的限制。

但是,我刚刚遇到了this article这让我开始思考...。

根据我的阅读,如果我按照文章中的建议设置一个具有主-主复制的 Galera 集群,我就可以拥有一个在所有四台服务器上始终可用的大型数据库。我已经收集到(并希望)在集群设置正确且运行良好的情况下,我几乎不需要在我的 PHP 代码中做任何事情(四个 MariaDB 实例将具有相同的用户来访问数据库)——甚至不需要更改 PDO 连接字符串.

然而,这听起来好得令人难以置信。我的问题是:

  • 这里是否涉及其他导致并发症的问题?
  • 是否需要更改 PHP PDO 连接字符串?
  • 我的应用程序的结构已经确保两台服务器尝试同时写入同一行的可能性绝对为零,这一事实是否有帮助?
  • 最后,阅读 MariaDB docs , 这不适用于 TokuDB 存储引擎?
  • 有没有办法专门停止选定表的复制?我真的可以利用“仅 InnoDB/XtraDB”约束并在我不想复制的表上使用另一个存储引擎吗?

最佳答案

are there other issues involved here that make for complications?

有一些Known Limitations你应该知道的。通常,对于集群,理想情况下您应该拥有奇数个节点以防止出现裂脑情况,但偶数个节点通常也能正常工作。

Do the PHP PDO connection strings need to be altered in anway?

没有。您现有的连接字符串应该可以工作。

Does the fact that my application is already structured to ensure that there is absolutely zero chance of two servers attempting to simultaneously write the same row help?

查看已知的限制并确保您的应用程序仍会这样做。如果您使用的是命名锁,则需要更改您的应用程序。

And finally, reading from the MariaDB docs, that this will not work with the TokuDB storage engine?

最近的 galera 集群发行版中添加了 TokuDB 支持。我已经使用了一些,它确实像 InnoDB 一样复制,但我不会依赖它,因为它是 galera 集群构建中的新功能。

Is there a way to specifically stop the replication of a selected table? Could I in fact exploit the "only InnoDB/XtraDB" constraint and use another storage engine on the table I do not want to have replicated?

我听到很多人问他们是否可以从复制中省略表或数据库,但我仍然没有听到一个很好的理由。 Galera 复制提供 HA 并且便宜且简单,因此即使某些表不重要,我也找不到不复制数据的任何现实理由。也就是说,您可以使用 MyISAM/Aria 不复制数据。

我一直在多个中等规模的项目中使用带有 galera 的 MariaDB,这是我找到的最佳高可用性解决方案,它还提供了性能优势。其他解决方案通常价格昂贵或不成熟。您应该考虑的一件事是设置一个代理来连接到数据库服务器,例如 HA Proxy、mysql-proxy 或 glbd(我使用的),以提供更好的冗余和连接平衡以提高性能。


在下面回应 DroidOS 的评论:

  1. 集群中的每次写入都需要得到每个节点的同意,因此节点之间的任何延迟都会添加到每次写入中。因此,基本上,每次写入在写入服务器和添加到其中的其他节点之间的往返时间最长。

  2. 没有。 Galera 复制在整个集群中是全有或全无。如果任何节点在写入数据时遇到问题(如果表没有主键,就会发生这种情况),该节点将优雅地 self 终止,因为它无法保证其数据与集群的其余部分保持一致。如果发生这种情况,集群的其余部分将继续正常运行。如果出现网络问题,如果其中一个网段有法定人数,它将继续正常运行。任何没有法定人数的段将等待更多节点获得法定人数但不会接受查询。通过这种行为,您可以确保您能够查询的任何节点都与集群的其余部分保持一致。

关于PHP/PDO MariaDB Galera 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432633/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com