系统用的Centos 7.3 , 安装之前先关闭 selinux , 端口开放
3306 , 4444, 4567 , 4568。
PXC 集群依赖于qpress的内存管理,所以qpress 是必须得安装的,安装的方法很多,举例一种:
下载 https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-1.0-15.noarch.rpm
yum localinstall percona-release-1.0-15.noarch.rpm
yum源更新之后就可以直接安装qpress了
yum -y install qpress
去percona的官网,下载 PXC集群(集群已经包含了percona,不需要额外下载)和xtrabackup。(注意版本对应)
解压到同一个文件夹下。
yum localinstall -y *.rpm
PXC集群就安装好了。(3个节点的安装是一样的)
1 配置
修改 /etc/hosts 文件 (3个节点都要改)
js-ypt-percona1-t 192.168.50.130
js-ypt-percona2-t 192.168.50.131
js-ypt-percona3-t 192.168.50.132
在配置集群之前,先创建 集群节点间同步数据需要的用户。(3个节点都要创建)
mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Pxc123456#';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO 'admin'@'localhost';
mysql> FLUSH PRIVILEGES;
PS: 可以通过 grep 'temporary password' /var/log/mysqld.log 的方式得到procona的初始root密码
修改集群配置
vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster ##集群的名字,可以随意命名
wsrep_cluster_address=gcomm://192.168.50.130,192.168.50.131,192.168.50.132 ##集群包含的节点
wsrep_node_name=pxc1 ##当前节点在集群中的名字,其他2个节点我都顺手改成pxc2, pxc2
wsrep_node_address=192.168.50.130 ##当前节点的服务器IP
wsrep_sst_method=xtrabackup-v2 ## 这个节点间同步的方式(名字叫SST),官网推荐的方式,最好不要改
wsrep_sst_auth="admin:Pxc123456#" ## 这个是SST的时候需要的 用户和密码
pxc_strict_mode=ENFORCING ## 官方推荐方式的严格模式
binlog_format=ROW ## binlog的日志模式
default_storage_engine=InnoDB ## 存储引擎
innodb_autoinc_lock_mode=2 ##自增列的锁模式,性能最好就是2,缺点是健值可能不连续
复制到 第2 和 第3 个节点, 除了 wsrep_node_name and wsrep_node_address 这个两个参数不同,其他相同
【当然了,看到最开始的[mysqld] ,说明这些参数都是可以放在 /etc/my.cnf里面的,这样就不用分开配置。看个人习惯】
2 启动
在启动集群之前,不要忘了先关闭percona , 因为刚才需要创建同步用户。
第一个启动节点的启动方式:
systemctl start mysql@bootstrap.service ##第一个节点除了需要启动percona,还需要构建集群环境,以便后面的节点加入集群
第2,3 节点的启动方式就是正常的了:
systemctl start mysqld.service
任意一个节点查看: show global status like 'wsrep_cluster%';
集群关闭的时候就略有不同了。
简单来说,怎么开启的节点,就怎么关闭的节点。最后退出的节点是 下一次集群开启的第一个节点。
就上面的例子来说:
1 节点的关闭方式为 systemctl stop mysql@bootstrap.service
这个时候2,3几点就组成了2节点的集群,这时候集群还是可以正常使用的。
接着2 节点关闭 systemctl stop mysqld.service
3节点关闭 systemctl stop mysqld.service
然后再一次开启集群的时候,就得是 3节点 第一个启动:systemctl start mysql@bootstrap.service
接着 1,2 节点启动(无所谓顺序):systemctl start mysqld.service
其实,这样的启动方式是因为,最后一个关闭的节点有着最新的事务记录,当它第一个启动时,那些先停机的节点就可以同步到最新的数据。
决定谁第一个启动的配置文件是:/var/lib/mysql/grastate.dat 的参数 safe_to_bootstrap ,
哪个节点的safe_to_bootstrap 为1,那这个节点就有着最新的事务记录(类似oracle的scn),它就可以当成第一个节点启动。
PXC集群的最简单搭建方式就是这样,更多的内容会在以后再写。