1.删除之前的mariadb
1.1查找安装的MySQLrpm -qa | grep mariadbrpm -e --nodeps *******
2.设置系统防火墙,打开3306、4444、4567、4568四个端口,否则无法完成集群通信,除4567端口需要开通tcp和udp外,其它3个端口只需要开通tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcpfirewall-cmd --permanent --zone=public --add-port=4444/tcpfirewall-cmd --permanent --zone=public --add-port=4567/tcpfirewall-cmd --permanent --zone=public --add-port=4567/udpfirewall-cmd --permanent --zone=public --add-port=4568/tcpfirewall-cmd --reload (重新加载防火墙使修改生效)
3.降低SELinux的安全级别,否则SELinux会限制集群数据传输(setenforce 0 命令只能设置运行时的安全级别,想要完全设置安全级别,需要在SELinux的配置文件中进行配置更改)
3.1打开/etc/selinux/config配置文件,设置SELINUX=permissive 3.2使用reboot命令重启服务器使SELinux安全级别更改生效4.安装Percona的yum安装文件(以下是最新版本的安装文件地址)
yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
5.开始安装Percona Cluster
yum install Percona-XtraDB-Cluster-57
6.启动集群服务
service mysql start
7.在安装日志中查找临时生成的密码
grep 'temporary password' /var/log/mysqld.log
8.登录mysql
mysql -u root -p
9.修改root 用户的默认密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'binux';
10.创建后续在集群同步中拥有同步权限的用户并赋予最基本权限
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'binux';mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';mysql> FLUSH PRIVILEGES;
11.关闭mysql服务,为后续配置做准备
service mysql stop
12.修改第一台Percona XtraDB-Cluster的mysql 配置文件 /etc/my.cnf,写入以下内容
[mysqld] #这里要注意,一定把下面的配置信息放在一个组里面,这里的[mysqld]就是一个组,否则会报Found option without preceding group in config file: /etc/my.cnf at line:*****的错误wsrep_provider=/usr/lib64/galera3/libgalera_smm.so #galera同步库的文件位置wsrep_cluster_name=pxc_sst #集群的名称wsrep_cluster_address=gcomm://192.168.56.10,192.168.56.11,192.168.56.12 #集群几个服务器的IP地址,千万注意:第一个节点应该为空,这样才能正常启动集群,否则无法正常启动wsrep_node_name=pxc_master #本节点的名称wsrep_node_address=192.168.56.10 #本节点的IP地址wsrep_sst_method=xtrabackup-v2 #使用哪个同步引擎wsrep_sst_auth=sstuser:binux #mysql中建立的同步用户和密码,这里的用户是sstuser,密码是binuxpxc_strict_mode=ENFORCING #强制使用规则限制binlog_format=ROW #同步日志使用二进制的,这样复制会很快default_storage_engine=InnoDB #设置默认的存储引擎innodb_autoinc_lock_mode=2
13.按第一台配置对第二台、第三台进行配置,在后两台的my.cnf配置文件中要修改wsrep_node_name和wsrep_node_address两个属性
14.启动第一台节点(只要是集群中的节点,哪台都能作为第一个启动的节点,没有先后顺序,而且只要集群所有节点关闭后重启就要按此操作)
14.1 一定确保第一台my.cnf配置文件中的wsrep_cluster_address=gcomm:// ,也就是空值,否则无法正常启动 14.2 使用属于第一个节点启动的命令启动systemctl start mysql@bootstrap.service#注意,使用该命令启动的服务必须用同样的参数停用systemctl stop mysql@bootstrap.service除第一个节点第一次启动需要这样做外,如果集群已经部署启动完成,其它节点都启动,那么第一个节点需要重启后必须改为普通节点的配置信息(也就是节点中的gcomm://不能为空,和其它节点一致的IP地址列表)并使用普通命令(systemctl start mysql)重启,否则第一个节点无法启动。
15.使用普通命令启动其它节点,注意不要同时启动多个节点,可能会出现一些同步冲突,可以通过查看节点状态中的wsrep_local_state_comment看,如果启动中的所有节点只要有一个是Joiner就先不要再启动任何新的节点,直到该值状态变为Synced
systemctl start mysql
16.登录任意一台节点,查看集群数量,应该是有几个节点数量就会是几
$ mysql -uroot -pmysql> show status like ’wsrep%’; ... ... ... ...wsrep_cluster_size | 3 # 若显示参数=3,证明三个节点集群成功了mysql>create database percona; # 创建一个数据库,到其他两台机器看有同步就成功了
17.想要通过远程客户端连接集群中的任一节点,需要设置远程访问的用户账号和密码,这里以root为例,如果要设置其他用户,需要保证创建了用户后进行权限设置
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pswd' WITH GRANT OPTION;mysql> flush privileges;mysql> quit;
18.其它注意项
18.1如果在安装完percona xtradb cluster后修改root为简单密码显示密码强度过低,可以修改密码策略,完成密码修改后再将策略改为原状态 18.1.1先降低密码强度要求set global validate_password_policy=0;set global validate_password_length=4;
18.1.2修改密码(可以使用 mysql_secure_installation(有密码安全度限制))
set password=password('pswd');(没有密码安全级别限制)
18.1.3再将密码要求改回原级别
set global validate_password_length=8;set global validate_password_policy=1;
18.2集群无法实现服务自动重启,必须手工做,因为当所有集群节点关闭后重启的第一个节点必须有不同的配置和启动命令,所以基本排除随着操作系统自动重启的想法(设置自动重启的命令为systemctl enable mysql)。
18.3有什么无法启动等的问题最好到mysql日志中查找,mysql日志的位置在/var/log/mysqld.log
18.4整个集群关闭后想以某个节点作为第一个启动节点启动,但节点使用systemctl start mysql@bootstrap.service无法启动,一般是由于该节点关闭的时间不是集群中最晚的一个关闭时间,如果强制启动可能会有数据差异不安全,所以一种办法是找集群最后一个关闭的节点作为第一个启动节点重启整个集群,或者在确保不会有数据丢失的情况下修改mysql安装文件夹下的grastate.dat文件,将其中的safe_to_boostrap设置为1后强行启动。