主机名 | 主机IP | 系统配置 | 操作系统和内核版本 |
---|---|---|---|
mysql-galera1 | 192.168.221.131 | 2c4g/1c2g | CentOS Linux release 7.9.2009 (Core)/3.10.0-1160.66.1.el7.x86_64 |
mysql-galera2 | 192.168.221.132 | 2c4g/1c2g | CentOS Linux release 7.9.2009 (Core)/3.10.0-1160.66.1.el7.x86_64 |
mysql-galera3 | 192.168.221.133 | 2c4g/1c2g | CentOS Linux release 7.9.2009 (Core)/3.10.0-1160.66.1.el7.x86_64 |
特别说明:以下操作所有服务器都要操作!
[root@mysql-galera1 ~]# hostnamectl set-hostname mysql-galera1
[root@mysql-galera2 ~]# hostnamectl set-hostname mysql-galera2
[root@mysql-galera3 ~]# hostnamectl set-hostname mysql-galera3
在所有主机上执行:
[root@mysql-galera1 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@mysql-galera1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//SELINUX配置需要重启服务器生效,若要立马生效,执行如下命令
[root@mysql-galera1 ~]# setenforce 0
[root@mysql-galera1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.221.131 mysql-galera1
192.168.221.132 mysql-galera2
192.168.221.133 mysql-galera3
//修改时区:(时间必须一致)
[root@mysql-galera1 ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@mysql-galera1 ~]# timedatectl set-timezone Asia/Shanghai
(必须卸载,否则后期会有问题)
[root@mysql-galera1 ~]# yum erase `rpm -qa | grep mysql` -y ; yum erase `rpm -qa | grep mariadb` -y
[root@mysql-galera1 ~]# yum -y install epel-release
以下步骤所有主机都要操作!
(1)所有主机配置yum源
添加yum配置文件并使用yum安装配置yum源
[root@mysql-galera1 ~]# vim /etc/yum.repos.d/galera.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
enabled=1
gpgcheck=0
(2)清除旧的缓存,生成新的缓存
[root@mysql-galera1 ~]# yum clean all && yum makecache
(3)搜索galera相关的安装包
[root@mysql-galera1 ~]# yum list | grep 'galera'
Repository cr is listed more than once in the configuration
Repository fasttrack is listed more than once in the configuration
galera.x86_64 25.3.12-2.el7 epel
mysql-wsrep-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-client-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-common-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-devel-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-libs-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-libs-compat-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-server-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-test-5.7.x86_64 5.7.43-25.35.el7 galera
(4)yum在线安装galera
[root@mysql-galera1 ~]# yum install mysql-wsrep-5.7.x86_64 galera rsync -y
//在线安装的速度较慢
(5)安装完成后,查看已安装的mysql
[root@mysql-galera1 ~]# rpm -qa|egrep 'galera|rsync|mysql'
galera-25.3.12-2.el7.x86_64
mysql-wsrep-client-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-server-5.7-5.7.43-25.35.el7.x86_64
rsync-3.1.2-12.el7_9.x86_64
mysql-wsrep-libs-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-libs-compat-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-common-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-5.7-5.7.43-25.35.el7.x86_64
(6)安装报错
/var/lib/mysql下3个文件:grastate.dat gvwstate.dat galera.cache
如果出了错,把他们统统干掉
(7)所有主机启动mysqld并修改密码
[root@mysql-galera1 ~]# systemctl start mysqld
//启动mysqld并设置开机自启
//获取mysqld的初始密码
[root@mysql-galera1 ~]# mysql_pass=`grep 'password is generated' /var/log/mysqld.log |awk '{print $NF}' |awk 'END{print}'` && echo $mysql_pass
Lf*C!p1w!V(w
[root@galera1 ~]# mysqladmin -u root -p${mysql_pass} password 'JiannLT@123'
[root@galera1 ~]# mysql -u root -p'JiannLT@123'
(8)所有主机创建用于数据同步的用户
#每台机器都要创建用于数据同步的用户:
mysql> grant all on *.* to 'syncuser'@'%' identified by 'JiannLT@123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(9)所有主机配置galera集群
[root@mysql-galera1 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera1 ~]# vim /etc/my.cnf //[mysqld]以下为追加内容
server-id=1
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='galera1'
wsrep_node_address='192.168.221.131'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启mysql服务:
[root@mysql-galera1 ~]# systemctl restart mysqld
[root@mysql-galera2 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera2 ~]# vim /etc/my.cnf //[mysqld]追加内容如下:
server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.221.131,192.168.221.132,192.168.221.133'
wsrep_node_name='galera2'
wsrep_node_address='192.168.221.132'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启服务:
[root@galera2 ~]# systemctl restart mysqld
[root@mysql-galera3 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera3 ~]# vim /etc/my.cnf //[mysqld]追加内容如下:
server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.221.131,192.168.221.132,192.168.221.133'
wsrep_node_name='galera3'
wsrep_node_address='192.168.221.133'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启服务:
[root@mysql-galera3 ~]# systemctl restart mysqld
参数解释:
server-id=1:设置MySQL服务器的唯一标识符,用于复制和集群环境中的节点识别。
binlog_format=row:设置二进制日志的格式为行级别复制。这种格式记录了每个修改数据的具体行级别操作,以便在复制和恢复过程中更准确地重放和应用更改。
innodb_file_per_table=1:设置InnoDB存储引擎为每个表创建独立的表空间文件。这样每个表将有自己的数据文件,提供更好的性能和管理灵活性。
innodb_autoinc_lock_mode=2:设置InnoDB自增锁定模式为连续锁定模式。在这种模式下,自增列的锁定级别更低,可以提高并发性能。
wsrep_on=ON:启用Galera集群的插件,用于支持多主同步复制。
wsrep_provider=/usr/lib64/galera/libgalera_smm.so:指定Galera集群插件的位置。
wsrep_cluster_name=‘galera’:设置Galera集群的名称,用于识别相同集群中的节点。
wsrep_cluster_address=‘gcomm://’:设置Galera集群的地址。在这个示例中,使用了空的集群地址,表示将通过其他配置文件或命令行参数来指定集群中的节点。第一个节点使用了空的集群地址,是因为 Galera 集群底层使用了一种叫做 “组播(multicast)” 的方式让节点互相发现和通信。
wsrep_node_name=‘galera1’:设置Galera集群节点的名称,用于在集群中唯一标识节点。
wsrep_node_address=‘192.168.221.131’:设置Galera集群节点的网络地址,用于节点间的通信。
wsrep_sst_auth=syncuser:‘JiannLT@123’:指定用于执行状态快照传输(State Snapshot Transfer,SST)的身份验证信息。用户名是"syncuser",密码是"JiannLT@123。
wsrep_sst_method=rsync:设置状态快照传输(SST)的方法为rsync,即使用rsync工具来传输数据。
配置文件特别说明:
- 特别说明:”gcomm://” 是特殊的地址,第一个galera节点的wsrep_cluster_address 初始值要配置为 ‘gcomm://’ ,因为初始配置的时候是没有集群存在的;
- 当mysql-galera1节点启动以后才有集群。启动其他节点就可以添加到mysql-galera1所在的 galera cluster 集群了;其他节点要配置为所有节点的IP地址:wsrep_cluster_address=’gcomm://192.168.221.131,192.168.221.132,192.168.221.133’。
- 当 mysql-galera1 节点需要重启的时候,我们需要把配置信息修改为:wsrep_cluster_address=’gcomm://192.168.221.131,192.168.221.132,192.168.221.133’。
(10)所有主机查看集群状态
所有节点都配置完集群信息后,需要将mysql-galera1节点的 gcomm://修改一下,然后重启mysqld;不然后续重启galera1节点的mysql,会发现它在另外一个集群中!
[root@mysql-galera1 ~]# vim /etc/my.cnf
wsrep_cluster_address='gcomm://192.168.221.131,192.168.221.132,192.168.221.133'
[root@mysql-galera1 ~]# systemctl restart mysqld
#查看mysql版本
mysql> SHOW GLOBAL VARIABLES LIKE 'version';
#查看wsrep版本
mysql> SHOW GLOBAL STATUS LIKE 'wsrep_provider_version';
#查看集群地址
mysql> SHOW VARIABLES LIKE 'wsrep_cluster_address';
+-----------------------+------------------------------------------------------+
| Variable_name | Value |
+-----------------------+------------------------------------------------------+
| wsrep_cluster_address | gcomm://192.168.221.131,192.168.221.132,192.168.221.133 |
+-----------------------+------------------------------------------------------+
1 row in set (0.00 sec)
#查看Galera集群状态
mysql> show status like 'wsrep%';
+------------------------------+-------------------------------------------------------------+
| Variable_name | Value |
+------------------------------+-------------------------------------------------------------+
| wsrep_local_state_uuid | ea1a308f-425f-11ee-87ac-5fe2ff4351a2 |
| wsrep_protocol_version | 7 |
| wsrep_last_committed | 5 |
| wsrep_replicated | 2 |
| wsrep_replicated_bytes | 392 |
| wsrep_repl_keys | 2 |
| wsrep_repl_keys_bytes | 62 |
| wsrep_repl_data_bytes | 202 |
| wsrep_repl_other_bytes | 0 |
| wsrep_received | 13 |
| wsrep_received_bytes | 2456 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_max | 2 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_send_queue_avg | 0.250000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_max | 2 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_recv_queue_avg | 0.230769 |
| wsrep_local_cached_downto | 2 |
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_cert_deps_distance | 1.000000 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 1.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 1.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 3 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0.000000 |
| wsrep_incoming_addresses | 192.168.221.131:3306,192.168.221.132:3306,192.168.221.133:3306 |
| wsrep_evs_delayed | |
| wsrep_evs_evict_list | |
| wsrep_evs_repl_latency | 0/0/0/0/0 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_gcomm_uuid | 0291c744-4264-11ee-bd79-feb3b518c4ad |
| wsrep_cluster_conf_id | 8 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | ea1a308f-425f-11ee-87ac-5fe2ff4351a2 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_index | 0 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 3.12(r9921e73) |
| wsrep_ready | ON |
+------------------------------+-------------------------------------------------------------+
56 rows in set (0.00 sec)
参数解释:
wsrep_local_state_uuid: 当前节点的Galera集群状态UUID。
wsrep_protocol_version: Galera集群使用的通信协议版本。
wsrep_last_committed: 最后一次提交的事务序号。
wsrep_replicated: 已复制的事务数。
wsrep_replicated_bytes: 已复制的字节数。
wsrep_repl_keys: 复制的键数。
wsrep_repl_keys_bytes: 复制的键字节数。
wsrep_repl_data_bytes: 复制的数据字节数。
wsrep_received: 接收到的事务数。
wsrep_received_bytes: 接收到的字节数。
wsrep_local_commits: 本地提交的事务数。
wsrep_local_cert_failures: 本地认证失败的次数。
wsrep_local_replays: 本地重放的事务数。
wsrep_local_send_queue: 本地发送队列中待发送的事务数。
wsrep_local_send_queue_max: 本地发送队列的最大大小。
wsrep_local_send_queue_min: 本地发送队列的最小大小。
wsrep_local_send_queue_avg: 本地发送队列的平均大小。
wsrep_local_recv_queue: 本地接收队列中待处理的事务数。
wsrep_local_recv_queue_max: 本地接收队列的最大大小。
wsrep_local_recv_queue_min: 本地接收队列的最小大小。
wsrep_local_recv_queue_avg: 本地接收队列的平均大小。
wsrep_local_cached_downto: 本地缓存的最低已应用事务序号。
wsrep_flow_control_paused_ns: 由于流控而暂停的时间(纳秒)。
wsrep_flow_control_paused: 由于流控而暂停的时间(秒)。
wsrep_flow_control_sent: 发送的流控消息数。
wsrep_flow_control_recv: 接收的流控消息数。
wsrep_cert_deps_distance: 当前事务的依赖关系距离。
wsrep_apply_oooe: 超出顺序执行的应用事务数。
wsrep_apply_oool: 超出限制的顺序执行的应用事务数。
wsrep_apply_window: 应用事务窗口大小。
wsrep_commit_oooe: 超出顺序提交的事务数。
wsrep_commit_oool: 超出限制的顺序提交的事务数。
wsrep_commit_window: 提交事务窗口大小。
wsrep_local_state: 本地节点的Galera状态。
wsrep_local_state_comment: 本地节点的Galera状态说明。
wsrep_cert_index_size: 事务认证索引的大小。
wsrep_causal_reads: 执行的因果一致性读取数。
wsrep_cert_interval: 事务认证间隔。
wsrep_incoming_addresses: 集群中接收到的节点地址列表。
wsrep_evs_state: EVS(Endpoint Visibility State)状态。
wsrep_gcomm_uuid: 当前节点的GCOMM(Group Communication)UUID。
wsrep_cluster_conf_id:表示 Galera 集群配置的标识符。每当你更改 Galera 集群的配置时,这个标识符都会增加,以便节点能够识别出配置更改。
wsrep_cluster_size: Galera集群中的节点数。
wsrep_cluster_state_uuid: Galera集群的状态UUID。
wsrep_cluster_status: Galera集群的状态。
wsrep_connected: 是否与Galera集群连接。
wsrep_local_bf_aborts: 本地节点的BF(BF-LRU Bloom Filter)中的中止数。
wsrep_local_index: 本地节点的索引。
wsrep_provider_name: 使用的Galera提供程序的名称。
wsrep_provider_vendor: Galera提供程序的供应商。
wsrep_provider_version: Galera提供程序的版本。
wsrep_ready: 是否准备就绪。
监控状态说明
集群完整性检查:
节点状态检查:
复制健康检查:
最慢的节点的wsrep_flow_control_sent和wsrep_local_recv_queue_avg这两个值最高。这两个值较低的话,相对更好。
检测慢网络问题:wsrep_local_send_queue_avg:网络瓶颈的预兆,如果这个值比较高的话,可能存在网络瓶颈
冲突或死锁的数目:
(11)创建数据库、数据表,插入数据,测试数据同步情况
在mysql-galera1服务器中创建数据库,在mysql-galera2中创建数据表,在mysql-galera3中插入数据,观察是否同步
1.galera1上操作
[root@mysql-galera1 ~]# hostname -I
192.168.221.131
[root@mysql-galera1 ~]# mysql -uroot -p'JiannLT@123'
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
2.galera2上操作
[root@mysql-galera2 ~]# hostname -I
192.168.221.132
[root@mysql-galera2 ~]# mysql -uroot -p'JiannLT@123'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test | //有test这个库了
+--------------------+
5 rows in set (0.00 sec)
//在test库中创建表格
mysql> create table test.t1(id int);
Query OK, 0 rows affected (0.02 sec)
3.galera3上操作
[root@mysql-galera3 ~]# hostname -I
192.168.221.133
[root@mysql-galera3 ~]# mysql -uroot -p'JiannLT@123'
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> show tables from test;
+----------------+
| Tables_in_test |
+----------------+
| t1 |
+----------------+
1 row in set (0.00 sec)
mysql> select * from test.t1;
Empty set (0.05 sec)
//插入数据
mysql> insert into test.t1 values(1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test.t1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
//再到galera1中查看test库的t1表是否有数据
[root@mysql-galera1 ~]# hostname -I
192.168.221.131
[root@mysql-galera1 ~]# mysql -uroot -p'JiannLT@123'
mysql> select * from test.t1;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
数据同步成功!!!
centos7 yum在线部署galera集群完成!
(1)安装前的准备请参考上面
(2)下载集群软件包并安装
需要以下rpm包,可以提前下载。(本地终端上传也可以,更快一点)
官网下载地址:https://galeracluster.com/downloads/
可在这个网址下载:http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/ http://releases.galeracluster.com/galera-3.37/centos/7/x86_64/galera-3-25.3.37-1.el7.x86_64.rpm
安装本地的rpm包,建议使用yum安装,会自动安装依赖
[root@mysql-galera1 ~]# yum erase `rpm -qa | grep mysql` -y ; yum erase `rpm -qa | grep mariadb` -y
[root@mysql-galera1 ~]# yum -y install ./mysql-*
[root@mysql-galera1 ~]# yum -y install galera rsync
//安装完看看是否都已安装成功
[root@mysql-galera1 ~]# rpm -qa|egrep 'mysql|galera|rsync'
mysql-wsrep-libs-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-5.7-5.7.43-25.35.el7.x86_64
galera-3-25.3.37-1.el7.x86_64
mysql-wsrep-common-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-client-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-libs-compat-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-server-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-test-5.7-5.7.43-25.35.el7.x86_64
mysql-wsrep-devel-5.7-5.7.43-25.35.el7.x86_64
rsync-3.1.2-12.el7_9.x86_64
(3)所有主机启动mysqld并修改密码
[root@mysql-galera1 ~]# systemctl restart mysqld //启动mysql
//获取mysqld的初始密码
[root@mysql-galera1 ~]# mysql_pass=`grep 'password is generated' /var/log/mysqld.log |awk '{print $NF}' |awk 'END{print}'` && echo $mysql_pass
Lf*C!p1w!V(w
[root@mysql-galera1 ~]# mysqladmin -u root -p${mysql_pass} password 'JiannLT@123'
[root@mysql-galera1 ~]# mysql -u root -p'JiannLT@123'
(4)所有主机创建用于数据同步的用户
#每台机器都要创建用于数据同步的用户:
mysql> grant all on *.* to 'syncuser'@'%' identified by 'JiannLT@123';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(5)所有主机配置galera集群
详细步骤参照上面的(9)
1.galera1配置文件如下
[root@mysql-galera1 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera1 ~]# vim /etc/my.cnf //[mysqld]追加内容如下:
server-id=1
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='galera1'
wsrep_node_address='192.168.221.128'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启galera1的mysql
[root@mysql-galera1 ~]# systemctl restart mysqld
//查看端口
[root@mysql-galera1 ~]# netstat -ntlp|grep mysql
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 3111/mysqld
tcp6 0 0 :::3306 :::* LISTEN 3111/mysqld
2.galera2配置文件如下
[root@mysql-galera2 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera2 ~]# vim /etc/my.cnf //[mysqld]追加内容如下:
server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.221.128,192.168.221.129,192.168.221.130'
wsrep_node_name='galera2'
wsrep_node_address='192.168.221.129'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启galera2的mysql
[root@mysql-galera1 ~]# systemctl restart mysqld
//查看端口
[root@mysql-galera2 ~]# netstat -ntlp|grep mysql
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 2385/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2385/mysqld
3.galera3配置文件如下
[root@mysql-galera3 ~]# cp /etc/my.cnf{,.bak}
[root@mysql-galera3 ~]# vim /etc/my.cnf //[mysqld]追加内容如下:
server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.221.128,192.168.221.129,192.168.221.130'
wsrep_node_name='galera3'
wsrep_node_address='192.168.221.130'
wsrep_sst_auth=syncuser:'JiannLT@123'
wsrep_sst_method=rsync
//重启galera3的mysql
[root@mysql-galera1 ~]# systemctl restart mysqld
//查看端口
[root@mysql-galera3 ~]# netstat -ntlp|grep mysql
tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 2497/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2497/mysqld
4.所有节点查看集群地址
mysql> SHOW VARIABLES LIKE 'wsrep_cluster_address';
+-----------------------+------------------------------------------------------+
| Variable_name | Value |
+-----------------------+------------------------------------------------------+
| wsrep_cluster_address | gcomm://192.168.221.128,192.168.221.129,192.168.221.130 |
+-----------------------+------------------------------------------------------+
1 row in set (0.00 sec)
5.所有节点查看Galera集群状态,观察wsrep_cluster_size、wsrep_incoming_addresses、wsrep_ready是否都一致
mysql> show status like 'wsrep%';
6.插入测试数据,参考5.4.3.1.12
mysql> create database qftest;
Query OK, 1 row affected (0.03 sec)
//修改Yum源
[root@mysql-galera1 ~]# cat /etc/yum.repos.d/galera.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
enabled=1
gpgcheck=0
//为了方便其他节点安装Galera、我们把Yum源下载的内容缓存下来做成本地Yum源加快安装速度
[root@mysql-galera1 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever //缓存目录,默认已经就存在的
keepcache=1 //开启缓存
......
//galera Yum源包含的包
[root@mysql-galera1 ~]# yum clean all && yum makecache
[root@mysql-galera1 ~]# yum list | egrep 'wsrep|galera'
Repository cr is listed more than once in the configuration
Repository fasttrack is listed more than once in the configuration
galera.x86_64 25.3.12-2.el7 epel
mysql-wsrep-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-client-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-common-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-devel-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-libs-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-libs-compat-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-server-5.7.x86_64 5.7.43-25.35.el7 galera
mysql-wsrep-test-5.7.x86_64 5.7.43-25.35.el7 galera
//执行安装命令
[root@mysql-galera1 ~]# yum install mysql-wsrep-5.7.x86_64 galera rsync -y
//把缓存下来的galera包拷贝到galera目录
[root@mysql-galera1 ~]# mkdir -p galera
[root@mysql-galera1 ~]# find /var/cache/yum/x86_64/7/ -iname "*.rpm" -exec cp -a {} galera \;
[root@mysql-galera1 ~]# ls galera/
boost-program-options-1.53.0-28.el7.x86_64.rpm mysql-wsrep-libs-5.7-5.7.43-25.35.el7.x86_64.rpm
galera-25.3.12-2.el7.x86_64.rpm mysql-wsrep-libs-compat-5.7-5.7.43-25.35.el7.x86_64.rpm
libpcap-1.5.3-13.el7_9.x86_64.rpm mysql-wsrep-server-5.7-5.7.43-25.35.el7.x86_64.rpm
lsof-4.87-6.el7.x86_64.rpm nmap-ncat-6.40-19.el7.x86_64.rpm
mysql-wsrep-5.7-5.7.43-25.35.el7.x86_64.rpm rsync-3.1.2-12.el7_9.x86_64.rpm
mysql-wsrep-client-5.7-5.7.43-25.35.el7.x86_64.rpm socat-1.7.3.2-2.el7.x86_64.rpm
mysql-wsrep-common-5.7-5.7.43-25.35.el7.x86_64.rpm stunnel-4.56-6.el7.x86_64.rpm
//安装vsftpd和createrepo
[root@mysql-galera1 ~]# yum install vsftpd createrepo -y
[root@mysql-galera1 ~]# cp -r galera /var/ftp
[root@mysql-galera1 ~]# ls /var/ftp/galera/
boost-program-options-1.53.0-28.el7.x86_64.rpm mysql-wsrep-libs-compat-5.7-5.7.43-25.35.el7.x86_64.rpm
galera-25.3.12-2.el7.x86_64.rpm mysql-wsrep-server-5.7-5.7.43-25.35.el7.x86_64.rpm
libpcap-1.5.3-13.el7_9.x86_64.rpm nmap-ncat-6.40-19.el7.x86_64.rpm
lsof-4.87-6.el7.x86_64.rpm
mysql-wsrep-5.7-5.7.43-25.35.el7.x86_64.rpm rsync-3.1.2-12.el7_9.x86_64.rpm
mysql-wsrep-client-5.7-5.7.43-25.35.el7.x86_64.rpm socat-1.7.3.2-2.el7.x86_64.rpm
mysql-wsrep-common-5.7-5.7.43-25.35.el7.x86_64.rpm stunnel-4.56-6.el7.x86_64.rpm
mysql-wsrep-libs-5.7-5.7.43-25.35.el7.x86_64.rpm
//创建本地Yum仓库
[root@mysql-galera1 ~]# createrepo /var/ftp/galera/
Spawning worker 0 with 2 pkgs
Spawning worker 1 with 2 pkgs
Spawning worker 2 with 2 pkgs
Spawning worker 3 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
//启动vsftp、Yum源就已经做好了
[root@mysql-galera1 ~]# systemctl start vsftpd
[root@mysql-galera1 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@mysql-galera2 ~]# yum erase `rpm -qa | grep mysql` -y ; yum erase `rpm -qa | grep mariadb` -y
#配置本地Yum源
[root@mysql-galera2 ~]# cat /etc/yum.repos.d/galera.repo
[galera]
name=galera
baseurl=ftp://192.168.221.128/galera
gpgcheck=0
//安装galera
[root@mysql-galera2 ~]# yum install mysql-wsrep-5.7.x86_64 galera rsync -y
[root@mysql-galera2 ~]# systemctl enable --now mysqld //启动mysql并设置开机自启
[root@mysql-galera2 ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::3306 :::* LISTEN 2234/mysqld
//修改默认密码
[root@mysql-galera2 ~]# mysql_pass=`grep 'password is generated' /var/log/mysqld.log |awk '{print $NF}' |awk 'END{print}'` && echo $mysql_pass
Lf*C!p1w!V(w
[root@mysql-galera2 ~]# mysqladmin -u root -p${mysql_pass} password 'JiannLT@123'
单独重启galera2和galera3节点的mysqld服务能正常加入到集群中,重启galera1节点会发现galera1单独在一个新的集群中,galera2和galera3在另一个集群中,这是由于galera1的配置文件中wsrep_cluster_address='gcomm://'
会使galera1新建一个集群
如下,当galera启动后,查看集群信息是正常的,但是当重启galera1节点的mysqld后,查看集群信息就不是正常的了
因此在重启galera1前,应该修改配置文件
[root@mysql-galera1 ~]# vim /my.cnf
wsrep_cluster_address='gcomm://192.168.221.131,192.168.221.132,192.168.221.133'
//此时重启galera的mysqld服务将会重新进入集群中
当所有节点的mysqld都停止后或者服务器断电了需要重启galera集群,想要重启集群:
wsrep_cluster_address='gcomm://'
wsrep_cluster_address='gcomm://192.168.221.128,192.168.221.129,192.168.221.130'
,最后重启mysqld否则,直接重启所有节点mysqld,会出现以下报错信息:
[root@localhost ~]# tailf /var/log/mysqld.log
2023-08-24T07:19:31.990200Z 0 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
at gcomm/src/pc.cpp:connect():162
2023-08-24T07:19:31.990222Z 0 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():206: Failed to open backend connection: -110 (Connection timed out)
2023-08-24T07:19:31.990282Z 0 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1379: Failed to open channel 'galera' at 'gcomm://192.168.221.128,192.168.221.129,192.168.221.130': -110 (Connection timed out)
2023-08-24T07:19:31.990295Z 0 [ERROR] WSREP: gcs connect failed: Connection timed out
2023-08-24T07:19:31.990299Z 0 [ERROR] WSREP: wsrep::connect(gcomm://192.168.221.128,192.168.221.129,192.168.221.130) failed: 7
2023-08-24T07:19:31.990301Z 0 [ERROR] Aborting