##基于CentOS 7 安装Percona XtraDB Cluster(PXC) 5.7
Percona XtraDB Cluster(简称PXC)是很多企业基于MySQL实现集群方案的不二选择。PXC它支持服务高可用,数据同步复制(并发复制),几乎无延迟;多个可同时读写节点,可实现写扩展等等
本文是基于CentOS 7 PXC 5.7版一个更为标准的安装,可供大家参考。
第一步:查看当前os环境
|
|
第二步:配置运行环境
|
|
第二步:配置运行环境
说明
192.168.81.142,主节点ip地址ryxx-dbfs-01主机名ryxx-dbfs-01.example.commore /etc/hosts 默认就有当前主机的域名- 后面就是第二个节点的ip 域名 主机名,依次添加
第三步 修改selinux配置文件
防止启动节点的时候sst报错
12[root@ryxx-dbfs-01 ~]# vim /etc/selinux/configSELINUX=disabled
第四步 分发配置文件到其余节点
|
|
说明
- [x] 注意仅列出一个主节点设置,其他节点记得依次操作12345[root@ryxx-dbfs-01 ~]# firewall-cmd --add-port=3306/tcp --permanent[root@ryxx-dbfs-01 ~]# firewall-cmd --add-port=4567/tcp --permanent[root@ryxx-dbfs-01 ~]# firewall-cmd --add-port=4568/tcp --permanent[root@ryxx-dbfs-01 ~]# firewall-cmd --add-port=4444/tcp --permanent[root@ryxx-dbfs-01 ~]# firewall-cmd --reload
第五步 配置时间同步服务(可以不操作,看自己需求)
|
|
第五步 分别重启3节点
|
|
第六步 安装Percona XtraDB Cluster 5.7
- [x] 注意仅列出一个主节点设置,其他节点记得依次操作123456789[root@ryxx-dbfs-01 ~]# rpm -Uvh https://www.percona.com/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm[root@ryxx-dbfs-01 ~]# yum install Percona-XtraDB-Cluster-57 -yyum安装时会提示UDFs功能,根据需要可以在mysql启动后执行以下语句Percona XtraDB Cluster is distributed with several useful UDFs from Percona Toolkit.Run the following commands to create these functions:mysql -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"mysql -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"mysql -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"
第七步 配置mysql及集群配置文件
主要包括mysqld.cnf,mysqld_safe.cnf,wsrep.cnf
在当前的这个版本中,my.cnf为主配置文件,其余的配置文件放在/etc/percona-xtradb-cluster.conf.d目录
在这几个配置文件中,大家根据自己的需要定制,本演示仅作基本修改
[ ] 1、备份配置文件
123[root@ryxx-dbfs-01 ~]# cp /etc/percona-xtradb-cluster.conf.d/mysqld.cnf{,.org}[root@ryxx-dbfs-01 ~]# cp /etc/percona-xtradb-cluster.conf.d/mysqld_safe.cnf{,.org}[root@ryxx-dbfs-01 ~]# cp /etc/percona-xtradb-cluster.conf.d/wsrep.cnf{,.org}[ ] 2、修改配置文件
12345678910111213141516171819202122232425262728293031323334353637383940[root@ryxx-dbfs-01 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf[root@ryxx-dbfs-01 ~]# more /etc/percona-xtradb-cluster.conf.d/mysqld.cnf# Template my.cnf for PXC# Edit to your requirements.[client]socket=/var/lib/mysql/mysql.sock[mysqld]server-id=142 #这个参数3个节点要使用不同的iddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidlog-binlog_slave_updatesexpire_logs_days=7# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0log_bin_trust_function_creators=oncharacter_set_server = utf8 ##Author : SongxiaoLangcollation_server = utf8_bin ##Blog : http://www.songxiaolang.com[root@ryxx-dbfs-01 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf[root@ryxx-dbfs-01 ~]# grep -vE "^#|^$" /etc/percona-xtradb-cluster.conf.d/wsrep.cnf[mysqld]wsrep_provider=/usr/lib64/galera3/libgalera_smm.sowsrep_cluster_address=gcomm://192.168.81.146,192.168.81.147,192.168.81.142 ##这个就是所有节点的ip,建议将主节点ip放在最后一个,可能有未知错误。binlog_format=ROWdefault_storage_engine=InnoDBwsrep_slave_threads= 8wsrep_log_conflictsinnodb_autoinc_lock_mode=2wsrep_node_address=192.168.81.142 ##这个参数要改成相应的IPwsrep_cluster_name=pxc-cluster ##集群名字,可以不做修改wsrep_node_name=ryxx-dbfs-01 ##这个参数要改成相应的节点名称pxc_strict_mode=PERMISSIVEwsrep_sst_method=xtrabackup-v2 ##sst连接方式,次节点启动报错建议修改为rsyncwsrep_sst_auth=sstuser:s3cretPass ##同步数据用户 密码记得不要是是弱口令[ ] 3、修改剩余节点配置文件
|
|
- [ ] 4、修改剩余节点配置文件,并且采用scp 发送,具体提示跟第四步scp 一样12345678910111213141516171819202122232425262728293031323334[root@ryxx-dbfs-01 ~]# cd /etc/percona-xtradb-cluster.conf.d/[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# diff mysqld.cnf mysqld.cnf.1467c7< server-id=142---> server-id=146[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# diff mysqld.cnf mysqld.cnf.1477c7< server-id=142---> server-id=147[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# diff wsrep.cnf wsrep.cnf.14628c28< wsrep_node_address=192.168.81.142---> wsrep_node_address=192.168.81.14632c32< wsrep_node_name=node142---> wsrep_node_name=node146[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# diff wsrep.cnf wsrep.cnf.14728c28< wsrep_node_address=192.168.81.142---> wsrep_node_address=192.168.81.14732c32< wsrep_node_name=node142---> wsrep_node_name=node147[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# scp mysqld.cnf.146 node146:/etc/percona-xtradb-cluster.conf.d/mysqld.cnf[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# scp wsrep.cnf.146 node146:/etc/percona-xtradb-cluster.conf.d/wsrep.cnf[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# scp mysqld.cnf.147 node147:/etc/percona-xtradb-cluster.conf.d/mysqld.cnf[root@ryxx-dbfs-01 percona-xtradb-cluster.conf.d]# scp wsrep.cnf.147 node147:/etc/percona-xtradb-cluster.conf.d/wsrep.cnf
第七步 启动PXC集群
[ ] 1、启动第一个节点
123456789[root@ryxx-dbfs-01 ~]# systemctl start mysql@bootstrap.service[root@ryxx-dbfs-01 ~]# grep "temporary password" /var/log/mysqld.log2017-12-28T08:57:24.231185Z 1 [Note] A temporary password is generated for root@localhost: wj!v<z/2)ctZ[root@ryxx-dbfs-01 ~]# mysql -uroot -pEnter password:mysql> alter user 'root'@'localhost' identified by '123456';mysql> create user 'sstuser'@'localhost' identified by 's3cretpass';mysql> grant reload, lock tables, replication client, process on *.* to 'sstuser'@'localhost';[ ] 2、启动剩余节点
1234[root@node146 ~]# systemctl start mysql[root@node147 ~]# systemctl start mysql注,如果你使用的是CentOS7.2.1511,会发现mysql可以正常启动,但是未加入集群的情况需要升级openssl,建议全部升级后再启动集群,这问题在CentOS 7.4.1708不存在即openssl版本较新
- 如果报错,请直接看最后解决办法
第八步 集群验证
|
|
错误信息归类
查看错误方法 grep “ERROR” /var/log/mysqld.log
systemctl start mysql@bootstrap.service
journalctl -xe
这三个命令
- [ ] 1.openssl版本过低导致的错误
12345678910 017-12-28T09:23:19.605353Z 0 [ERROR] WSREP: wsrep_load(): dlopen(): /usr/lib64/galera3/libgalera_smm.so:symbol SSL_COMP_free_compression_methods, version libssl.so.10 not defined in file libssl.so.10 with link time reference2017-12-28T09:23:19.605379Z 0 [ERROR] WSREP: Failed to load wsrep_provider (/usr/lib64/galera3/libgalera_smm.so).Error: Invalid argument (code: 22). Reverting to no provider.2017-12-28T09:23:19.605386Z 0 [Note] WSREP: Setting wsrep_ready to false[root@ryxx-dbfs-02 ~]# rpm -qa|grep opensslopenssl-1.0.1e-42.el7.9.x86_64openssl-libs-1.0.1e-42.el7.9.x86_64[root@ryxx-dbfs-02 ~]# yum update openssl -y
[ ] 2.启动主节点报错
1234567通过三个查看错误的方法说当mysql的错误日志文件不存在的时候,会产生这个无效用户的错误解决方法[root@ryxx-dbfs-01]# touch /var/log/mysqld.log[root@ryxx-dbfs-01]# chown mysql:mysql /var/log/mysqld.log通过三个查看错误的方法说当mysql已经存在的时候,会产生这个无效用户的错误[root@ryxx-dbfs-01]# cd /var/lib/[root@ryxx-dbfs-01]# mv mysql mysql.bak[ ] 3.第二个节点,点三个节点报错
123sst 与xtrabackup-v2 错误[root@ryxx-dbfs-02]vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf不妨先将wsrep_sst_method的方式设置为rsync或者mysqldump,看能否成功

