Skip to main content

PXC的限制

  1. 必须有主键,不设置主键的话表可以新建表保存,但是不能添加数据。
  2. 只支持InnoDB存储引擎。

Percona XtraDB Cluster有众多的优秀特性,使得mysql集群得以轻松实现。但是不要忽略了它的一些限制。如果你无法接受,或者你的应用程序或数据库(比如使用了memory引擎)对限制无法做出调整,那PXC对你而言是不合适。限制有哪些呢,下文是其描述。

1、存储引擎:

基于PXC的复制仅适用于InnoDB存储引擎。
  对其他存储引擎的表,包括mysql.*表之类的系统表,任何写入都不会被复制。
  那创建用户那岂不是无法同步了?关于这个问题。对于基于DDL方式的语句还是被支持的。
  DDL语句使用基于语句级别的方式来实现(即不使用row模式)。
  对mysql.*表的所有已DDL方式的更改都将以语句级别式进行复制。
  如:CREATE USER… DDL被复制(语句级)
    INSERT INTO mysql.user… myisam存储引擎,不会被复制,因为非DDL语句
    当然也可以配置wsrep_replicate_myisam参数实现(不建议使用)

2、不支持的查询:

LOCK TABLES在多主模式中不支持UNLOCK TABLES以及LOCK TABLES
  锁定功能,如GET_LOCK(),RELEASE_LOCK()等也不被支持

3、查询日志不能定向到表:

如果启用查询日志记录,则必须将日志转发到文件
  使用general_log和general_log_file选择查询日志记录和日志文件名称
  log_output = file # Author : Leshami # Blog : https://blog.csdn.net/leshami

4、最大事务大小:

允许的最大事务大小由wsrep_max_ws_rows和wsrep_max_ws_size变量定义
  LOAD DATA INFILE方式处理每10000行提交一次。对于大的事务将被分解众多小型事务

5、集群乐观并发控制:

PXC集群使用乐观并发控制,事务发出COMMIT可能仍会在该阶段中止
  可以有两个事务写入相同的行并在单独的Percona XtraDB集群节点中提交,并且只有其中一个可以成功提交。
  失败的将被中止。对于集群级中止,Percona XtraDB集群返回死锁错误代码:
    (Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).

6、由于可能的提交回滚,XA事务不受支持:

7、硬件配置短板限制:

整个群集的写吞吐量受最弱节点的限制。如果一个节点变慢,整个集群变慢。
如果您对稳定的高性能有要求,那么它应该由相应的硬件支持。

8、建议的最小群集大小是3个节点。第三个节点可以是仲裁者。

9、InnoDB虚假更改功能不受支持。

10、enforce_storage_engine=InnoDB与wsrep_replicate_myisam=OFF(默认)不兼容 。

11、binlog_rows_query_log_events变量不受支持。

12、高负载时避免ALTER TABLE … IMPORT / EXPORT

在集群模式下运行Percona XtraDB集群时,请避免ALTER TABLE … IMPORT / EXPORT工作负载。
  如果未在所有节点上同步执行,则可能导致节点不一致。