赞
踩
主机名 | 主机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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。