Percona XtraDB Cluster 是一个开源的、免费的Mysql 高可用方案,它提供下面的:
1、同步复制,事务在所有节点上要么都成功,要么都失败。
2、多主复制,任何一个节点都是主,你可以在任何一个节点上写,然后会自动部署到其它所有节点上。
3、并行复制,以事务为单位,多线程并行推送到所有集群节点上。
4、节点自动部署,启动mysqld进程并加入到集群后,数据自动同步,保持一致。
备注:自动同步的实现的方式是cache、sst、ist
采用PXC架构的好处是:
1、所有的数据在所有节点都一样,当你发起一个事务,会在本地的节点上执行,而不获取到远程执行。
2、任何时候丢失集群中的任一个节点,集群照样提供服务。
缺点:
1、新节点加入PXC集群前,需要copy PXC集群的完整数据集。
2、不是一个扩展写方案。虽然前端HAprxoy会把请求按算法分发到集群中的节点,起到负载均衡,但是PXC的特性(你可以在任何一个节点上写,然后会自动部署到其它所有节点上。)
所以负载均衡只是主机层的。
3、PXC有多少个节点,就有多少个数据集。
PXC和复制的区别
从分布式数据库系统CAP理论开始:
C - Consistency :所有数据在所有节点上一致。
A - Availability :一个或几个节点故障,整个系统仍能提供服务。
P - Partitioning tolerance (节点间连接失败,还能否提供服务)。
每个分布式数据库系统只能满足3个中的其中2个,PXC满足C和A,Replication满足A和P
PXC的限制
1、PXC复制只工作在InnoDB存储引擎上,其它存储引擎的表,DDL操作以statement 级别进行复制,DML不复制。
2、不支持的查询:
LOCK/UNLOCK TABLES
lock 函数 (GET_LOCK(), RELEASE_LOCK()... )
3、query log不能指向表。如果开启了查询日志,必须指定到文件里。
4、wsrep_max_ws_rows和wsrep_max_ws_size 决定了最大事务大小。LOAD DATA INFILE 每10k rows 进行commit。因为LOAD DATA产生的大事务可能会被
分隔成几个小的事物。
5、集群是乐观的并发控制,然而很可能有两个事物写同一个row,并在不同的节点上同时commit,这时只有一个会成功的commit,失败的会被终止并返回
deadlock error code:(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).
6、不支持XA事务,因为XA事务有可能在commit的时候出现异常放生rollback。
7、整个集群的性能受制于性能最弱的那个节点,所以所有节点的配置应该相当。
8、enforce_storage_engine=InnoDB 和wsrep_replicate_myisam=OFF (default). 不兼容,所以在.cnf中不要设置enforce_storage_engine=InnoDB了
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| enforce_storage_engine | |
+------------------------+-------+
9、binlog_rows_query_log_events variable not supported.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29974949/viewspace-1813810/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29974949/viewspace-1813810/