pxc_cluster集群

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: pxc_cluster集群

屏幕截图 2023-08-28 195743.png

PXC(Percona XtraDB Cluster)

   是基于Galera的MySQL高可用集群解决方案

   Galera Cluster是Codership公司开发的一套免费开源的高可用方案

   PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步、多主复制插件)

PXC特点:

   数据强一致性、无同步延迟

   没有主从切换操作,无需使用虚拟IP

   支持InnoDB存储引擎

   多线程复制

   部署使用简单

   支持节点自动加入,无需手动拷贝数据

相应端口:

   3306:数据库服务端口

   4444:SST端口

   4567:集群通信端口

   4568:IST端口

SST:State Snapshot Transfer 全量同步

IST:Incremental State Transfer 增量同步

========================================

环境:

   pxc1: 192.168.8.10

   pxc2: 192.168.8.20

   pxc3: 192.168.8.30

1. 删除mysql或mariadb,关闭防火墙和selinux,修改主机名为pxc1、pxc2、pxc3,修改/etc/hosts

vim /etc/hosts

添加:

192.168.8.10    pxc1

192.168.8.20    pxc2

192.168.8.30    pxc3

保存退出

scp /etc/hosts root@192.168.8.20:/etc

scp /etc/hosts root@192.168.8.30:/etc

2  在线安装

yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

yum -y install Percona-XtraDB-Cluster-57

systemctl start mysql

3 修改密码

grep 'temporary password' /var/log/mysqld.log

复制代码使用 root 账户登录,并修改其账户密码:

# 登录服务

mysql -u root -p

# 修改密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

# 退出服务

mysql> exit

复制代码之后使用以下命令停止 MySQL 服务:

systemctl stop mysql

4 搭建集群

以上安装过程在三台主机上均相同执行,之后就可以开始集群的搭建。

首先需要修改每个服务器上的 /etc/my.cnf 文件,第一个节点上需要增加的内容如下:

[mysqld]
server-id=1  
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=mysql1
wsrep_cluster_address=gcomm://192.168.8.10,192.168.8.20,192.168.8.30
wsrep_node_name=pxc1 
wsrep_node_address=192.168.8.10
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth= sstuser:123456
pxc_strict_mode=ENFORCING  
binlog_format=ROW 
default_storage_engine=InnoDB 
innodb_autoinc_lock_mode=2

第二个节点的配置与上面基本相同,但是需要修改 server id 以及当前节点的名称和地址,

具体如下:

[mysqld]
server-id=2  
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=mysql1
wsrep_cluster_address=gcomm://192.168.8.10,192.168.8.20,192.168.8.30
wsrep_node_name=pxc2
wsrep_node_address=192.168.8.20
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth= sstuser:123456
pxc_strict_mode=ENFORCING  
binlog_format=ROW 
default_storage_engine=InnoDB 
innodb_autoinc_lock_mode=2

第三个节点:

[mysqld]
server-id=3  
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=mysql1
wsrep_cluster_address=gcomm://192.168.8.10,192.168.8.20,192.168.8.30
wsrep_node_name=pxc3 
wsrep_node_address=192.168.8.30
wsrep_sst_method=xtrabackup-v2 
wsrep_sst_auth= sstuser:123456
pxc_strict_mode=ENFORCING  
binlog_format=ROW 
default_storage_engine=InnoDB 
innodb_autoinc_lock_mode=2

5 启动集群

第一个节点需要以引导模式启动:

systemctl start mysql@bootstrap.service

在将其他节点添加到群集之前,需要登录当前节点,来为 SST 操作创建用户并提供权限,命令如下:

# 创建用户
CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '123456';
# 授予权限
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
# 刷新权限
FLUSH PRIVILEGES;

接着在第二和第三个节点上正常启动数据库服务,命令如下:

systemctl start mysql

启动后,可以登录任意节点并使用以下命令查看集群状态。输出中的 wsrep_cluster_size 的值应该为 3 ,

即集群中节点总数为 3,此时代表所有节点都已成功加入集群,至此集群已经搭建完成。

mysql> show status like 'wsrep%';
+----------------------------------+----------------------------------------------------------+
| Variable_name                    | Value                                                    |
+----------------------------------+----------------------------------------------------------+
| wsrep_local_state_uuid           | 8bcc22cf-bfab-11e9-8a49-6e46c7af709e                     |
.......
| wsrep_incoming_addresses         | 192.168.8.20:3306,192.168.8.30:3306,192.168.8.10:3306 |
| wsrep_gcomm_uuid                 | c8afc276-c623-11e9-a9ea-677d72419479                     |
| wsrep_cluster_conf_id            | 3                                                        |
| wsrep_cluster_size               | 3                                                        |
| wsrep_cluster_state_uuid         | 8bcc22cf-bfab-11e9-8a49-6e46c7af709e                     |
| wsrep_cluster_status             | Primary                                                  |
| wsrep_connected                  | ON                                                       |
| wsrep_local_bf_aborts            | 0                                                        |
| wsrep_local_index                | 2                                                        |
| wsrep_provider_name              | Galera                                                   |
| wsrep_provider_vendor            | Codership Oy                         |
| wsrep_provider_version           | 3.37(rff05089)                                           |
| wsrep_ready                      | ON                                                       |
+----------------------------------+----------------------------------------------------------+

6 节点下线

PXC 集群允许动态下线节点,但需要注意的是节点的启动命令和关闭命令必须一致,如以引导模式启动的第一个节点必须

以引导模式来进行关闭:

systemctl stop mysql@bootstrap.service

其他节点则可以按照正常方式关闭:

service stop mysql

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
网络协议 关系型数据库 MySQL
MySQL PXC集群配置IPv6
前阵子为PXC集群配置IPv6支持,遇见奇怪的问题,就是SST同步时总是报错,为此在官网论坛提交了问题,未得到答案,最后偶然得到了答案
36 0
|
4月前
|
存储 NoSQL Redis
redis集群cluster
redis集群cluster
48 0
|
存储 关系型数据库 MySQL
MySQL部署PXC集群(很详细)
MySQL部署PXC集群(很详细)
731 0
|
SQL 前端开发 关系型数据库
PXC集群脑裂导致节点是无法加入无主的集群
PXC集群脑裂导致节点是无法加入无主的集群
229 0
|
运维 关系型数据库 MySQL
PXC集群第3个节点无法加入故障处理
PXC集群第3个节点无法加入故障处理
409 0
|
关系型数据库 MySQL
高可用PXC
1.Percona XtraDB Cluster的搭建 安装环境: 节点1:A: 192.168.91.18 节点2:B:192.168.91.20 节点3:C:192.168.
1189 0
|
监控 关系型数据库 MySQL
|
缓存 数据库 数据安全/隐私保护