大家好!我是不加班的运维,今天给大家分享的是高可用数据库集群的搭建
1.PXC介绍
Percona XtraDB Cluster是MySQL的数据库集群解决方案。它确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可扩展性。
Percona XtraDB 集群(PXC)是一个 100%开源的企业级高可用集群解决方案,适用于基于 Galera 的 MySQL 多主设置。PXC 帮助企业最大限度地减少意外停机和数据丢失,降低成本,并提高数据库环境的性能和可扩展性,在最苛刻的公共、私有和混合云环境中支持关键业务应用程序。
集群特点
2.PXC环境规划
架构图

环境规划
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 测试集群高可用
• 测试故障自动恢复 • 任何一台数据库服务器宕机都不影响用户存取数据 • 服务器运行后自动同步宕机期间的数据
文章转载自运危说点废话,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




