![MariaDB Cluster 与 MySQL 的 Percona Cluster](https://linux22.com/image/804618/MariaDB%20Cluster%20%E4%B8%8E%20MySQL%20%E7%9A%84%20Percona%20Cluster.png)
两者之间有什么优点和缺点?我只能找到有关这两种实现的信息,而没有关于集群的任何具体信息。
我目前正在实施 Percona 集群,但我目前唯一关心的是 MYISAM 数据库的复制。我在这些服务器上以 INNODB 运行多个 wordpress 数据库,但是当我需要从其他系统迁移数据库时,它们有时完全或部分是 MYISAM,这最近给我的设置带来了一些问题。
从 Percona 集群迁移到 MariaDB 集群是更好的选择吗?
答案1
两个平台都使用相同的复制机制:加莱拉。在该链接的页面上,您会注意到有包含 PXC 和 MariaDB Cluster 的图像。
Galera 库提供交易性复制。MyISAM 不执行事务,因此您现在遇到的问题很可能是相关的,并且在替代平台上不会有任何不同。
目前复制仅适用于 InnoDB 存储引擎。对其他类型的表(包括系统 (mysql.*) 表)的任何写入都不会被复制。但是,DDL 语句在语句级别被复制,对 mysql.* 表的更改将以这种方式被复制。因此,您可以安全地发出:CREATE USER...,但发出:INSERT INTO mysql.user...,将不会被复制。
—http://www.percona.com/doc/percona-xtradb-cluster/limitation.html
目前MariaDB Galera Cluster仅支持InnoDB/XtraDB存储引擎。
—https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/
当然,PXC 使用 XtraDB,这是 Percona 的 InnoDB 兼容替代品(名称中就有“XtraDB”)。MariaDB 还使用 Percona 的 XtraDB而不是 Oracle 的 InnoDB,但是为了在两个系统上兼容,存储引擎仍然称自己为 InnoDB。
由于这两个系统共享大量代码,并且都旨在成为彼此的替代品,因此使用哪个平台的决定在很大程度上取决于个人意见。我个人更喜欢供应商“x”,这可能意味着我个人建议您使用 MariaDB,也可能意味着我个人建议您坚持使用 PXC,但我实际上不需要告诉您我的偏好,因为这并不重要——它主要基于意见、印象、文档和个性,而不是任何有价值的证据。
迁移 MyISAM 的最佳解决方案可能是修改转储文件ENGINE=InnoDB
(以及任何其他必要的更改)或将它们暂存到独立服务器上,然后在尝试将它们导入集群之前将它们转换并导出为完全 InnoDB。
如果 MyISAM 问题是您唯一关心的问题,甚至只是您主要关心的问题,那么 MariaDB Cluster 和 PXC 在这方面本质上是相同的——出于一个非常合理的理由,它们不支持它——这样做是不可行的。
答案2
我为 Percona 工作,所以我有偏见。我想说,虽然表面上它们是类似的产品,但 PXC 发布了更多版本,我们进行了大量的 QA,并且到目前为止为 Codership 做出的贡献比 Maria 多得多。
但是,两者对 MyISAM 的支持都是一样的,很遗憾,如果 MyISAM 是您的一项设计要求,那么您可能不会对任何 Galera 产品感到满意。Galera 永远不会像支持 Innodb 那样真正支持 MyISAM 之类的非事务引擎,我同意 Michael 的观点,如果您要迁移到 Galera,那么从 MyISAM 迁移出去是您的最佳选择。