MySQL部署PXC集群(很详细)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL部署PXC集群(很详细)

MySQL部署PXC集群

一,PXC了解

1.PXC介绍

  1. Percona XtraDB Cluster(简称PXC)
  2. 是基于Galera的MySQL高可用集群解决方案
  3. Galera Cluster是Codership公司开发的一套免费开源的高可用方案
  4. PXC集群主要由两部分组成:Percona Server with XtraDB(数据存储插件)和 Write Set Replication patches(同步、多主复制插件)


2.PXC特点

  1. 数据强一致性,无同步延迟(写入主服务器的数据,所有从服务器必须马上也得有)
  2. 没有主从切换操作,无需使用虚拟IP(无需一主多从的结构,无需vip地址)
  3. 支持InnoDB存储引擎
  4. 多线程复制(多线程同步工作)
  5. 部署使用简单
  6. 支持节点自动加入,无需手动拷贝数据(服务器会自动同步宕机期间的数据,无需手动配置)


二,开始部署PXC

1.实施环境image.png2.设置主机名和主机名解析

每一台都需要做

[root@localhost ~]# hostnamectl set-hostname my01
[root@localhost ~]# bash
[root@my01 ~]# vi /etc/hosts
192.168.2.1 my01
192.168.2.2 my02
192.168.2.3 my03

3.安装软件image.png

1.将所有软件包上传到服务器端(三台相同)

[root@my01 ~]# cd /usr/local/src/
[root@my01 src]# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/AndreasStieger%3A/branches%3A/Archiving/RedHat_RHEL-6/x86_64/qpress-1.1-14.11.x86_64.rpm
[root@my01 src]# ls
percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm  Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar  qpress-1.1-14.11.x86_64.rpm
#上传
[root@my01 src]# scp /usr/local/src/ 192.168.2.2:/usr/local/
[root@my01 src]# scp /usr/local/src/ 192.168.2.3:/usr/local/

2.安装percoa-xtrabackup(三台相同)

[root@my01 ~]# cd /usr/local/src/
[root@my01 src]# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/AndreasStieger%3A/branches%3A/Archiving/RedHat_RHEL-6/x86_64/qpress-1.1-14.11.x86_64.rpm
[root@my01 src]# ls
percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm  Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar  qpress-1.1-14.11.x86_64.rpm
#上传
[root@my01 src]# scp /usr/local/src/ 192.168.2.2:/usr/local/
[root@my01 src]# scp /usr/local/src/ 192.168.2.3:/usr/local/

3.安装qpress(三台相同)

[root@my01 src]# yum -y localinstall qpress-1.1-14.11.x86_64.rpm

4.安装Percona-xtradb-cluster(三台相同)

[root@my01 src]# mkdir per-cluster
[root@my01 src]# tar -xf Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar -C per-cluster/
[root@my01 src]# cd per-cluster/
[root@my01 per-cluster]# ls
Percona-XtraDB-Cluster-57-5.7.41-31.65.1.el7.x86_64.rpm            Percona-XtraDB-Cluster-garbd-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-57-debuginfo-5.7.41-31.65.1.el7.x86_64.rpm  Percona-XtraDB-Cluster-server-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-client-57-5.7.41-31.65.1.el7.x86_64.rpm     Percona-XtraDB-Cluster-shared-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-devel-57-5.7.41-31.65.1.el7.x86_64.rpm      Percona-XtraDB-Cluster-shared-compat-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-full-57-5.7.41-31.65.1.el7.x86_64.rpm       Percona-XtraDB-Cluster-test-57-5.7.41-31.65.1.el7.x86_64.rpm
[root@my01 per-cluster]# rpm -ivh ./*  --nodeps --force

4.修改配置文件

1.修改mysql的配置(三台都需要修改)

[root@my01 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=1     #只需要修改这里 保证每台都不同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.soc
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

2.修改PXC集群配置文件(三台都需要修改)

配置要求

wsrep_cluster_address=gcomm://             #集群成员列表,3台必须相同
wsrep_node_address=192.168.70.63         #本机IP地址
wsrep_cluster_name=pxc-cluster              #集群名称,可自定义,3台必须相同
wsrep_node_name=pxc-cluster-node       #本机主机名
wsrep_sst_auth="sstuser:s3cretPass"         #SST数据同步用户授权,3台必须相同
1.my01的配置
[root@my03 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://192.168.2.1,192.168.2.2,192.168.2.3
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# Slave thread to use
wsrep_slave_threads= 8
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
wsrep_node_address=192.168.2.1
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified,  then system hostname will be used
wsrep_node_name=my01
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
# SST method
wsrep_sst_method=xtrabackup-v2
#Authentication for SST method
wsrep_sst_auth="sstuser:1234.Com"

5.服务启动

1.在my01上去执行

[root@my01 per-cluster]# systemctl start mysql@bootstrap.service
• 1

2.查询MySQL的初始化密码

[root@my01 per-cluster]#  grep pass /var/log/mysqld.log
2023-05-30T13:54:20.274979Z 1 [Note] A temporary password is generated for root@localhost: L(sz/!ua,6h0
[root@my01 per-cluster]# mysql -uroot -p'L(sz/!ua,6h0'
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.01 sec)                                                                             
mysql> grant reload,lock tables,replication client,process on *.* to sstuser@"%" identified by "1234.Com";
Query OK, 0 rows affected, 1 warning (0.00 sec)

添加授权用户,数据会自动同步到主机my02和03上。reload装载数据的权限;lock tables锁表的权限;replication client查看服务状态的权限;process管理服务的权限(查看进程信息);授权用户和密码必须是配置文件中指定的。


3.其他两台服务上开启MySQL

[root@my02 per-cluster]# systemctl start mysql

三,测试配置

1.查看集群信息

show status like "%wsrep%";

2.测试集群功能

  • 在任意一台服务器上添加访问数据的授权用户
  • 在客户端使用授权用户连接任意数据库服务器都可以存储数据,且可以查看到同样的数据
  • 建表时,必须有主键字段

3.测试集群高可用

  • 测试故障自动恢复
  • 任何一台数据库服务器宕机都不影响用户存取数据
  • 服务器运行后自动同步宕机期间的数据
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
49 3
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
45 0
|
3月前
|
Kubernetes 关系型数据库 MySQL
k8s快速部署MySQL单机
k8s快速部署MySQL单机
|
2月前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
59 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
138 1
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
84 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
37 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
46 0