博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 数据库集群搭建:(二)3台CentOS-7安装Percona-XtraDB-Cluster-57集群
阅读量:6432 次
发布时间:2019-06-23

本文共 3937 字,大约阅读时间需要 13 分钟。

  hot3.png

1.删除之前的mariadb

1.1查找安装的MySQL

rpm -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后强行启动。

转载于:https://my.oschina.net/ioooi/blog/1204247

你可能感兴趣的文章
Page页面生命周期——微信小程序
查看>>
Node.js编写CLI的实践
查看>>
Javascript数组对象的方法和属性
查看>>
SQL Server 2005自动异机备份
查看>>
MariaDB 10审计日志去除记录select操作
查看>>
Golang之环境配置
查看>>
03springmvc入门
查看>>
XenApp_XenDesktop_7.6实战篇之十一:站点设置
查看>>
zabbix1.8和2.0版本通用的安装脚本
查看>>
电商订单 + 物流信息对称补齐案例 - A, B表,到达时间交叉,增量JOIN补全C数据...
查看>>
vs2010新特性(下)
查看>>
WPF/E CTP Quick Start - 第四部分:绘图与填充(翻译)
查看>>
[CTO札记]架构改造(SOBS)4原则
查看>>
cocos2d-x一些核心概念介绍
查看>>
SAS硬盘驱动器走向成熟(10款SAS硬盘横评之一)
查看>>
linux常见服务介绍
查看>>
重新定义了左侧边栏
查看>>
《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
查看>>
“信息指纹”是什么
查看>>
ACT完善与修改测试
查看>>