【MySQL】之MySQL5.7版本集群Galera部署—添加新节点
目录
【MySQL】之MySQL5.7版本集群Galera部署—添加新节点
测试集群数据同步,插入数据、删除数据和修改数据,其他节点查询,数据是否一致。
项目需求:
根据企业项目和业务需求,随着业务的增长,现有的Galere数据库集群压力较大,需要新添加一台节点作为分支,可以实现对数据业务的读写操作。
1、分担集群压力,实现异地数据库的多写环境要求。
2、可实现数据库的多主架构的读写分离。
3、现有集群中的服务器节点故障,不能继续提供服务,需要新添加一台节点,维持现有集群节点的业务需求。
一、新节点环境部署
根据业务需要添加新节点到集群时,需要对新的节点做系统初始配置。如操作系统,设置RAID、关闭CPU节点,关闭内存最大页等。Galera部署的架构和环境部署参考《【MySQL】之MySQL5.7版本集群Galera部署https://mp.csdn.net/console/editor/html/109219150》。
主机名 | 地址 | 端口 | 数据目录 | 配置文件 |
manager | 172.21.209.122 | 3306 | /var/lib/mysql |
/etc/my.cnf |
mysql01 | 172.21.209.123 | 3306 | /var/lib/mysql |
/etc/my.cnf |
mysql02 | 172.21.209.124 | 3306 | /var/lib/mysql |
/etc/my.cnf |
mysql03 | 172.21.209.125 | 3306 | /var/lib/mysql |
/etc/my.cnf |
1、新节点系统初始化
操作系统内部初始化配置,如关闭防火墙,配置SSH服务端口、关闭SeLinux、配置主机名和网卡配置文件等。
关闭防火墙和selinux,如果是多物理服务器,需要在每一台执行操作。
systemctl disable firewalld
systemctl stop firewalld
sed -ri '/SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
查看配置主机解析
[root@mysql03 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.21.209.122 manager
172.21.209.123 mysql01
172.21.209.124 mysql02
172.21.209.125 mysql03
网卡配置文件
[root@mysql03 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
#UUID=bccb7fa9-d980-451e-9237-2fe39de797dd
DEVICE=ens33
ONBOOT=yes
IPADDR=172.21.209.125
NETMASK=255.255.255.0
GATEWAY=172.21.209.254
DNS1=114.114.114.114
DNS2=8.8.8.8
2、配置软件所需要的YUM源
配置yum源
cat >>/etc/yum.repos.d/galera.repo<<EOF
[galera1]
name=galera1
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
gpgcheck=0
[galera2]
name=galera2
baseurl=http://releases.galeracluster.com/galera-3/centos/7/x86_64/
gpgcheck=0
EOF
3、安装数据库服务和集群软件包
确认安装有gcc和gcc-c++
[root@mysql03 ~]# yum install gcc gcc-c++
确认安装有boost-devel
[root@mysql03 ~]# yum install boost-devel
安装scons check-devel openssl-devel
[root@mysql03 ~]# yum install scons check-devel openssl-devel
二、安装部署新节点
官网地址,下载对应的版本手动安装。
https://galeracluster.com/downloads/
本案例是通过yum安装部署,因在之前配置了yum源。安装mysql的galera插件
[root@mysql03 ~]# yum repolist
[root@mysql03 ~]# yum list | egrep "wsrep|galera"
[root@mysql03 ~]# yum -y install mysql-wsrep-server-5.7.x86_64 rsync galera-3.x86_64 -y
安装完成后检查,所有的节点上都有。
[root@mysql03 ~]# yum list | grep 'galera'
mysql-wsrep-5.7.x86_64 5.7.31-25.23.el7 @galera
mysql-wsrep-client-5.7.x86_64 5.7.31-25.23.el7 @galera
mysql-wsrep-common-5.7.x86_64 5.7.31-25.23.el7 @galera
mysql-wsrep-libs-5.7.x86_64 5.7.31-25.23.el7 @galera
mysql-wsrep-libs-compat-5.7.x86_64 5.7.31-25.23.el7 @galera
mysql-wsrep-server-5.7.x86_64 5.7.31-25.23.el7 @galera
galera-3.x86_64 25.3.31-1.el7 galera2
mysql-wsrep-devel-5.7.x86_64 5.7.31-25.23.el7 galera1
mysql-wsrep-test-5.7.x86_64 5.7.31-25.23.el7 galera1
2、创建数据同步用户
172.21.209.125实例:
启动数据库
[root@mysql03 ~]# ps -ef|grep mysqld
root 52682 51654 0 17:28 pts/1 00:00:00 grep --color=auto mysqld
[root@mysql03 ~]# systemctl restart mysqld
创建数据同步用户
mysql> grant all on *.* to 'copy'@'%' identified by '3edc$RFV';
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> grant all on *.* to 'root'@'%' identified by '3edc$RFV';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select host,user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | copy |
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
5 rows in set (0.00 sec)
或使用如下命令:
mysql -uroot -p3edc$RFV -e "grant all on *.* to 'copy'@'%' identified by 'copy@123';"
mysql -uroot -p3edc$RFV -e "flush privileges;"
mysql -uroot -p3edc$RFV -e "select host,user from mysql.user;"
关闭数据库服务
[root@mysql03 ~]# systemctl stop mysqld
3、准备好配置文件。
配置文件
cat>> /etc/my.cnf<<EOF
[mysqld]
#mysql base settings
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid
user=mysql
symbolic-links=0
skip-name-resolve
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
#galera settings
wsrep_on=ON
#wsrep_provider=/usr/lib/galera/libgalera_smm.so
#注意:查找wsrep提供者的路径:find / -type f -name libgalera_smm.so
#/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name="wsrep_cluster"
wsrep_cluster_address="gcomm://172.21.209.122,172.21.209.123,172.21.209.124.172.21.209.125"
wsrep_node_address="172.21.209.125"
wsrep_node_name="mysql03"
wsrep_sst_method=rsync
server-id=4
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_