暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式高可用MySQL数据库集群使用

运危说点废话 2025-03-10
179

 

大家好!我是不加班的运维,今天给大家分享的是高可用数据库集群的搭建

1.PXC介绍

Percona XtraDB Cluster是MySQL的数据库集群解决方案。它确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可扩展性。

Percona XtraDB 集群(PXC)是一个 100%开源的企业级高可用集群解决方案,适用于基于 Galera 的 MySQL 多主设置。PXC 帮助企业最大限度地减少意外停机和数据丢失,降低成本,并提高数据库环境的性能和可扩展性,在最苛刻的公共、私有和混合云环境中支持关键业务应用程序。

集群特点

特点
描述
同步复制
数据同时写入所有节点,或者在即使单个节点出现故障的情况下也完全不写入。
多源复制
任何节点都能触发数据更新
数据一致性
数据具有强一致性

2.PXC环境规划

架构图


环境规划

节点IP及角色
主机名
系统信息
PXC版本
192.168.70.61(Database)
node01
CentOS Linux release 7.9.2009 (Core)
8.0.37
192.168.70.62(Replica)
node02
CentOS Linux release 7.9.2009 (Core)
8.0.37
192.168.70.63(Replica)
node03
CentOS Linux release 7.9.2009 (Core)
8.0.37
192.168.70.64(ProxySQL代理)
proxysql
CentOS Linux release 7.9.2009 (Core)
8.0.37

3.PXC基础配置

依次node01-node03上执行

yum install -y openssl socat procps-ng chkconfig procps-ng coreutils shadow-utils grep libaio libev libcurl perl-DBD-MySQL perl-Digest-MD5 libgcc libstdc++ libgcrypt libgpg-error zlib glibc openssl-libs 
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
percona-release setup pxc-80
yum install percona-xtradb-cluster -y 

4.修改配置文件

编辑my.cnf文件,以下是整理的示例配置文件,请根据需求更改:

# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/data/mysql/tmp/mysql.sock

[mysqld]
log_timestamps=system
#PXC集群中MySQL实例的唯一ID,不能重复,且必须是数字
server-id=1
mysqlx-bind-address=0.0.0.0
port=3306
#设置数据目录
datadir=/data/mysql/data
#设置socket文件
socket=/data/mysql/tmp/mysql.sock
#设置慢查询日志
slow_query_log=1
#设置慢查询日志的文件
slow_query_log_file = data/mysql/log/slow.log
#设置日志文件
log-error = data/mysql/log/mysqld.log
#设置慢查询日志的阈值
long_query_time=0.1
#设置pid文件
pid-file=/data/mysql/tmp/mysqld.pid
#设置binlog过期时间,7天
binlog_expire_logs_seconds=604800
#设置字符集
character-set-server=utf8mb4
#设置最大文件打开数
open_files_limit=65535
#设置跳过DNS解析,加快连接速度
skip_name_resolve=1
#设置允许的最大连接数
max_connections=5120
#设置允许的最大连接错误数
max_connect_errors=1000000
#设置表缓存的数量
table_open_cache=1024
#设置表定义缓存的数量
table_definition_cache=1024
#设置表缓存实例的数量
table_open_cache_instances=64
#设置线程栈的大小
thread_stack=512K
#设置是否使用外部的锁定
external-locking=FALSE
#设置允许的最大包大小
max_allowed_packet=32M
#设置是否使用查询缓存
sort_buffer_size=4M
#设置是否使用查询缓存
join_buffer_size=4M
#设置线程缓存的大小
thread_cache_size=768
#设置交互式连接的超时时间,默认600秒
interactive_timeout=600
#设置非交互式连接的超时时间,默认600秒
wait_timeout=600
#设置临时表的大小
tmp_table_size=32M
#设置最大堆表的大小
max_heap_table_size=32M

#设置GTID的模式
gtid_mode=on
#设置是否强制GTID一致性
enforce_gtid_consistency=on

#设置是否使用中继日志
relay_log_recovery=1

######## wsrep ###############
#设置是否加密集群流量
pxc_encrypt_cluster_traffic=0
#设置集群性能的参数
wsrep_provider_options="gcs.fc_limit=256;gcs.fc_factor=1.0;gcs.fc_master_slave=yes;gcache.size=10G"
#设置库的路径
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so

#设置集群的连接地址
wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63

#设置binlog格式为ROW
binlog_format=ROW

#设置从节点的线程数量
wsrep_slave_threads=8
#设置是否输出冲突日志
wsrep_log_conflicts

#设置innodb的自动增量锁
innodb_autoinc_lock_mode=2

#设置节点的IP地址
wsrep_node_address=192.168.70.61
#设置集群的名称
wsrep_cluster_name=pxc-cluster

#设置节点的名称
wsrep_node_name=pxc-cluster-node01

#设置集群的严格模式,values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING

#设置集群的备份方法,values: rsync, xtrabackup-v2, mysqldump
wsrep_sst_method=xtrabackup-v2

注意

server-id=X                                #pxc实例在pxc集群中的唯一id,必须是数字,不能重复,不同pxc集群节点依次设置1,2,3....
wsrep_cluster_address=gcomm://             #集群成员列表,3台必须相同
wsrep_node_address=192.168.70.61           #本机IP地址
wsrep_cluster_name=pxc-cluster             #集群名称,可自定义,3台必须相同
wsrep_node_name=pxc-cluster-node           #本机主机名

5.启动第一个节点

假设node01为集群第一个节点,执行如下命令

systemctl start mysql@bootstrap.service

获取初始密码

grep pass data/mysql/log/mysqld.log

使用初始密码登录并修改

mysql -uroot -p 
ALTER USER 'root'@'localhost' IDENTIFIED BY '<Your password>';
FLUSH PRIVILEGES;

CREATE USER 'root'@'%' IDENTIFIED BY '<Your password>' ;
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

#查看集群信息,确认wsrep_cluster_size值是否为1
show status like "%wsrep%";

6.其余节点加入集群

在其余节点上执行如下命令

 #启动服务
 systemctl start mysql
 #登录mysql服务,查看集群数量
 show status LIKE 'wsrep%';

至此,集群部署启动完毕!!!

7.测试

7.1 测试集群功能

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

7.2 测试集群高可用

  • • 测试故障自动恢复
  • • 任何一台数据库服务器宕机都不影响用户存取数据
  • • 服务器运行后自动同步宕机期间的数据

结语:下期给大家更新结合数据库代理proxySql的使用

 

文章转载自运危说点废话,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论