Percona XtraDB Cluster有众多的优秀特性,使得mysql集群得以轻松实现。但是不要忽略了它的一些限制。如果你无法接受,或者你的应用程序或数据库(比如使用了memory引擎)对限制无法做出调整,那PXC对你而言是不合适。限制有哪些呢,下文是其描述。
基于PXC的复制仅适用于InnoDB存储引擎。 对其他存储引擎的表,包括mysql.*表之类的系统表,任何写入都不会被复制。 那创建用户那岂不是无法同步了?关于这个问题。对于基于DDL方式的语句还是被支持的。 DDL语句使用基于语句级别的方式来实现(即不使用row模式)。 对mysql.*表的所有已DDL方式的更改都将以语句级别式进行复制。 如:CREATE USER… DDL被复制(语句级) INSERT INTO mysql.user… myisam存储引擎,不会被复制,因为非DDL语句 当然也可以配置wsrep_replicate_myisam参数实现(不建议使用)
LOCK TABLES在多主模式中不支持UNLOCK TABLES以及LOCK TABLES 锁定功能,如GET_LOCK(),RELEASE_LOCK()等也不被支持
如果启用查询日志记录,则必须将日志转发到文件 使用general_log和general_log_file选择查询日志记录和日志文件名称 log_output = file # Author : Leshami # Blog : https://blog.csdn.net/leshami
允许的最大事务大小由wsrep_max_ws_rows和wsrep_max_ws_size变量定义 LOAD DATA INFILE方式处理每10000行提交一次。对于大的事务将被分解众多小型事务
PXC集群使用乐观并发控制,事务发出COMMIT可能仍会在该阶段中止 可以有两个事务写入相同的行并在单独的Percona XtraDB集群节点中提交,并且只有其中一个可以成功提交。 失败的将被中止。对于集群级中止,Percona XtraDB集群返回死锁错误代码: (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
整个群集的写吞吐量受最弱节点的限制。如果一个节点变慢,整个集群变慢。 如果您对稳定的高性能有要求,那么它应该由相应的硬件支持。
在集群模式下运行Percona XtraDB集群时,请避免ALTER TABLE … IMPORT / EXPORT工作负载。 如果未在所有节点上同步执行,则可能导致节点不一致。
参考链接:https://www.percona.com/doc/percona-xtradb-cluster/LATEST/limitation.html