您的位置:首页 > 运维架构 > 网站架构

Percona XtraDB Cluster---MySQL高可用性解决方案

2014-03-23 00:00 591 查看
Percona XtraDB Cluster---MySQL高可用性解决方案 一.介绍 项目地址: http://www.percona.com/doc/percona-xtradb-cluster/intro.html Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案. Percona XtraDB Cluster提供的特性有: 1.同步复制,事务要么在所有节点提交或不提交。 2.多主复制,可以在任意节点进行写操作。 3.在从服务器上并行应用事件,真正意义上的并行复制。 4.节点自动配置。 5.数据一致性,不再是异步复制。 Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在: 1.数据的兼容性 2.应用程序的兼容性:无需更改应用程序 1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。 2.每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。 3.每个节点都包含完整的数据副本。 优点如下: 1.当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。 2.无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作。 3.良好的读负载扩展,任意节点都可以查询。 缺点如下: 1.加入新节点,开销大。需要复制完整的数据。 2.不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。 3.有多少个节点就有多少重复的数据。 架构图如下:


Percona XtraDB Cluster与MySQL Replication区别在于: 分布式系统的CAP理论。 C---一致性,所有节点的数据一致。 A---可用性,一个或多个节点失效,不影响服务请求。 P---分区容忍性,节点间的连接失效,仍然可以处理请求。 任何一个分布式系统,需要满足这三个中的两个。 MySQL Replication: 可用性和分区容忍性 Percona XtraDB Cluster: 一致性和可用性 因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性。 Percona XtraDB Cluster组件: Percona XtraDB Cluster基于XtraDB的Percona Server以及包含写复制集补丁。使用Galera 2.x library,事务型应用下的通用的多主同步复制插件。 Galera 2.x新特性有: 1.IST(Incremental State Transfer)增量状态传输。对于WAN特别有用。 2.RSU(Rolling Schema Update)旋转更新架构。不会阻止对表进行操作。 二.安装配置 1.RHEL or CentOS系统 # rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm # yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel # yum install Percona-XtraDB-Cluster-server Percona-XtraDB-Cluster-client xtrabackup 2.Debian or ubuntu系统 # gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A # gpg -a --export CD2EFD2A | sudo apt-key add - # apt-get update # apt-get install build-essential flex bison automake autoconf bzr libtool cmake libaio-dev mysql-client libncurses-dev zlib1g-dev # sudo apt-get install percona-xtradb-cluster-client-5.5 percona-xtradb-cluster-server-5.5 percona-xtrabackup 3.初始配置 为了使用XtraDB集群,需要在my.cnf文件中配置以下选项: wsrep_provider -- a path to Galera library. wsrep_cluster_address -- cluster connection URL. binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 innodb_locks_unsafe_for_binlog=1 # 额外的参数有: wsrep_slave_threads #指定线程数量 wsrep_sst_method 4.安装XtraBackup SST方法 为了使用Percona XtraBackup的State Transfer method(节点间数据的快照副本拷贝)。可以使用支持Galera信息的脚本的正式的xtrabackup包,可以从innobackupex源码包中得到innobackupex脚本。同时在my.cnf文件中制定: wsrep_sst_method=xtrabackup 三.局限性 1.目前的复制仅仅支持InnoDB存储引擎。任何写入其他引擎的表,包括mysql.*表将不会复制。但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user...将不会被复制的。 2.DELETE操作不支持没有主键的表。没有主键的表在不同的节点顺序将不同,如果执行SELECT...LIMIT... 将出现不同的结果集。 3.在多主环境下LOCK/UNLOCK TABLES不支持。以及锁函数GET_LOCK(), RELEASE_LOCK()... 4.查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。 5.允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。 6.由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)). 7.XA事务不支持,由于在提交上可能回滚。 8.整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。 9.集群节点建议最少3个。 10.如果DDL语句有问题将破坏集群。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息