Percona XtraDB Cluster安装
1、Percona XtraDB Cluster简单介绍
官方文档: https://www.percona.com/doc/percona-xtradb-cluster/LATEST/install/yum.html
Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下:
1). 同步复制,事务要么在所有节点提交或不提交。
2). 多主复制,可以在任意节点进行写操作。
3). 在从服务器上并行应用事件,真正意义上的并行复制。
4). 节点自动配置。
5). 数据一致性,不再是异步复制。
Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:
1). 数据的兼容性
2). 应用程序的兼容性:无需更改应用程序
3). 集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。
4). 每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。
5). 每个节点都包含完整的数据副本。
优点如下:
1). 当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。
2). 无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。
3). 良好的读负载扩展,任意节点都可以查询。
缺点如下:
1). 加入新节点,开销大。需要复制完整的数据。
2). 不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
3). 有多少个节点就有多少重复的数据
2、各端口说明
注意:确保以下端口不会被防火墙阻止或被其他服务使用。Percona XtraDB集群需要它们进行通信。
3306 mysql服务端口
4444 SST全量传输(State Snapshot Transfer) 启动节点时,就通过此端口进行同步
4567 组成员之间沟通的端口 实现IST增量传输(Incremental state Transfer)
4568 传输IST,节点下线,重启加入时起作用
donor 给贡献数据者,SST进行传输的提供者
-A INPUT -m state --state NEW -m tcp -p tcp --dport xxx -j ACCEPT #开放xxx端口,每个节点执行
service iptables restart
3、基于rpm版本进行yum安装
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm #下载rpm软件库 yum install Percona-XtraDB-Cluster-56
rpm -qa |grep "Percona-XtraDB-Cluster"
#这里安装好默认是4个包: Percona-XtraDB-Cluster-galera-3-3.25-2.el6.x86_64
Percona-XtraDB-Cluster-shared-56-5.6.40-26.25.1.el6.x86_64
Percona-XtraDB-Cluster-client-56-5.6.40-26.25.1.el6.x86_64
Percona-XtraDB-Cluster-server-56-5.6.40-26.25.1.el6.x86_64
#也可以yum安装Percona-XtraDB-Cluster-full-56,其中会包含一些附加包
Percona-XtraDB-Cluster-devel-56-5.6.40-26.25.1.el6.x86_64
Percona-XtraDB-Cluster-test-56-5.6.40-26.25.1.el6.x86_64
Percona-XtraDB-Cluster-galera-3-debuginfo-3.25-2.el6.x86_6 4
yum install -y Percona-XtraDB-Cluster-test-56-5.6.40-26.25.1.el6.x86_64 Percona-XtraDB-Cluster-devel-56-5.6.40-26.25.1.el6.x86_64 Percona-XtraDB-Cluster-galera-3-debuginfo-3.25-2.el6.x86_64 #补充避免少安装
4、启动PXC
service mysql start
5、更改root用户登录密码
#mysqladmin -u root password '123456' ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; #set password for root@localhost = password('123456'); #update user set password=password('123456') where user='root' and host='localhost'; #mysqladmin -uroot -p123 password 123456
6、关闭mysql服务开始配置集群当中的每个节点 service mysql stop
配置示例假设有三个Percona XtraDB集群节点: node1 10.10.16.118 最先启动 node2 10.10.16.119 第二个加入 node3 10.10.16.151 最后一个加入 a.配置第一个节点:cat /etc/my.cnf wsrep_provider=/usr/lib64/galera3/libgalera_smm.so #引入Galera插件 wsrep_cluster_name=pxc-cluster #指定集群的逻辑名称。对于集群中的所有节点,它必须是相同的。 wsrep_cluster_address=gcomm://10.10.16.118,10.10.16,119,10.10.16.151 # 指定集群节点ip地址,做为启动时被同步数据的服务器使用此配置,实现列表中第一个节点不可用,连接节点就可以选择其他地址 wsrep_node_name=pxc1 #节点名 wsrep_node_address=10.10.16.118 #节点ip地址 wsrep_sst_method=xtrabackup-v2 #SST数据同步方式#一般有rsync,mysqldump wsrep_sst_auth=sstuser:sstuser #为SST指定身份验证凭证,这个必须要在第一个节点创建这个特权用户 pxc_strict_mode=ENFORCING #PXC严格模式在默认情况下是启用的,并设置为强制执行,这阻止了Percona XtraDB集群中实验性和不受支持的特性的使用。 binlog_format=ROW #二进制日志格式 default_storage_engine=InnoDB #默认存储引擎为INNODB innodb_autoinc_lock_mode=2 #Galera只支持InnoDB的交叉2为锁模式。设置传统的0或连续 1锁模式会导致由于未解决的死锁而导致复制失败。将这个变量设置为innodbautoinclockmode=2。 b.配置第二个节点: #除了wsrep_node_name和wsrep_node_address变量之外,对第二和第三个节点使用相同的配置
wsrep_node_name=pxc2
wsrep_node_address=10.10.16.119
c.配置第三个节点:
wsrep_node_name=pxc3 wsrep_node_address=10.10.16.151
7、为SST指定身份验证凭证
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstuser'; #必须在引导第一个节点并为其提供必要的权限时创建这个用户:
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
8、启动第一个节点
/etc/init.d/mysql bootstrap-pxc #它将在引导模式下运行wsrepclusteraddress=gcomm://。这将告诉节点用wsrepclusterid设置为1的集群初始化集群。当将其他节点添加到集群之后,你就可以正常地重新启动这个节点,并且它将再次使用标准配置。
9、查看集群状态
show status like 'wsrep%';

10、依次加入其它节点
/etc/init.d/mysql start #在node2 node3 上执行
11、验证复制
a.在第二个节点创建一个数据库Percona b.在第三个节点创建一张表test #create table test(id int primary key,name varchar(20)); c.在第一个节点插入一些数据
#insert into test values (1,'zhangsan'),(2,'lisi'); d. 在第二个节点查看数据,复制成功
12、负载均衡引入
a.pen引入:http://galeracluster.com/documentation-webpages/pen.html#using-pen #介绍:PEN是一个可伸缩、高可用性、强大的负载均衡中间件,基于TCP和UDP通信,可以使用它来平衡应用程序和Galera集群之间的连接。默认是以Round robin轮询的方式将所有请求引导到一个循环的ip列表中,根据服务器间的负载均衡性来实现调度 #安装: yum install -y pen #启动: pen -l pen.log -p pen.pid 10.10.16.118:3307 10.10.16.118:3306 10.10.16.119:3306 10.10.16.151:3306 #查看日志:tailf pen.log b.proxySQL引入:https://www.percona.com/doc/percona-xtradb-cluster/LATEST/howtos/proxysql.html#load-balancing-with-proxysql #介绍:ProxySQL是一个高性能的SQL代理,它以监视着守护进程的方式运行,并且在节点宕机时以最短的时间重新启动它。这个守护进程接受来自MySQL客户端的传入流量,并将其转发到后端MySQL服务器。 #安装:yum install -y proxysql #启动:service proxysql start #配置:Percona的ProxySQL包包括proxysql-admin工具,它可以使用ProxySQL配置Percona XtraDB集群节点。proxysql-admin工具只能用于初始的ProxySQL配置。 /etc/proxysql-admin.cnf #提供连接和认证信息,为Percona XtraDB集群节点提供超级用户凭证。proxysql-admin脚本将自动检测集群中的其他节点。 1)proxysql-admin --config-file=/etc/proxysql-admin.cnf --enable #使用——enable选项将Percona XtraDB集群节点自动配置为ProxySQL .(目前仅支持Percona XtraDB集群,并支持ProxySQL) 2)mysql --user=proxysql_user -p --host=localhost --port=6033 --protocol=tcp #使用登录认证用户来通过ProxySQL连接应用程序 3)proxysql-admin --config-file=/etc/proxysql-admin.cnf --disable #禁用ProxySQL并删除Percona XtraDB集群节点: 4)proxysql-admin --config-file=/etc/proxysql-admin.cnf --adduser #将Percona XtraDB集群应用程序用户添加到ProxySQL数据库中。 5)proxysql-admin --config-file=/etc/proxysql-admin.cnf --galera-check-interval=5000 --enable #当为集群启用ProxySQL时,设置用于监视proxysql galera检测器脚本(以毫秒为单位)的时间间隔。 6)grep "MODE" /etc/proxysql-admin.cnf #export MODE="singlewrite" 模式设置 proxysql-admin --config-file=/etc/proxysql-admin.cnf --write-node=127.0.0.1:25000 --enable 7)检查你可以运行的配置:SELECT hostgroup_id,hostname,port,status,comment FROM mysql_servers; 未完,待续。。。

浙公网安备 33010602011771号