PXC + LVS + Keepalived实践总结文档
目录
2.1 先卸载CentOS7及以上版本自带的mariadb. 3
4.2 配置LVS(强烈建议在keepalived配置文件中进行配置以自动切换管理).. 24
5.2 配置keepalived(包含LVS配置).. 29
5.4 测试利用keepalived实现高可用-自动切换LVS. 31
第6章 RealServer网络配置(PXC MySQL 节点).. 32
6.2 启动/etc/init.d/realserver测试.. 33
第7章 启动PXC + RealServer + LVS + Keepalived 测试负载均衡分发情况.. 35
7.2 启动所有PXC节点的/etc/init.d/realserver服务脚本.. 35
7.3 启动所有LVS节点的Keepalived服务.. 35
- 单纯的PXC(Percona XtraDB Cluster)环境官方强烈建议至少三个服务器节点及以上的单数节点数(以便于节点间的心跳投票),本例为实验环境,为节省资源,只采用两个PXC节点
2. 服务器部署规划如下表:
| 节点类型 |
主机名 |
IP地址 |
VIP地址 (Keepalived) |
操作系统 及版本 |
CPU配置 |
| LVS(keepalived) |
centos-mysql-mycat-1 |
192.168.56.6 |
192.168.56.99 |
CentOS 7.2 x86_64 |
Intel i5 2.5GHz 2 Cores 4 Threads |
| LVS(keepalived) |
centos-mysql-mycat-2 |
192.168.56.7 |
CentOS 7.2 x86_64 |
Intel i5 2.5GHz 2 Cores 4 Threads |
|
| PXC节点1 |
centos-mysql-pxc-1 |
192.168.56.8 |
192.168.56.99 |
CentOS 7.2 x86_64 |
Intel i5 2.5GHz 2 Cores 4 Threads |
| PXC节点2 |
centos-mysql-pxc-2 |
192.168.56.9 |
CentOS 7.2 x86_64 |
Intel i5 2.5GHz 2 Cores 4 Threads |
|
| 软件包及版本 |
Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101.tar.gz |
ssl101:表示对应CentOS6/7系统,其它对应关系见官方文档。 |
|||
| percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm |
mysql或pxc执备份工具,使用pxc的sst特性必须组件 |
||||
| ipvsadm-1.27-7.el7.x86_64(yum安装) |
HA高可用负载均衡管理软件 |
||||
| keepalived-1.3.5-8.el7_6.x86_64(yum安装) |
高可用VIP漂移切换软件 |
||||
(以下操作在所有节点进行,所有包最好所有节点都安装,多总比少好)
[root@centos-mysql-pxc-1 tmp]# rpm -qa | grep -i mariadb ##查询是否已经安装了mariadb相关软件包
[root@centos-mysql-pxc-1 tmp]# yum remove -y mariadb* ##卸载mariadb相关软件包
[root@centos-mysql-pxc-1 tmp]# find / -name "*my.cnf*" 2>/dev/null | xargs rm -rf ##删除mariadb创建的mysql配置文件
[root@centos-mysql-pxc-1 tmp]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \
libaio \ ## pxc 或 mysql 依赖包
numactl-libs \ ## pxc 或mysql 5.7.19及以上版本numa特性依赖包
perl-DBI \ ## xtrabackup的依赖包
perl-DBD-MySQL \ ## xtrabackup的依赖包
perl-IO-Socket-SSL \ ## xtrabackup的依赖包
perl-Digest-MD5 \ ## xtrabackup的依赖包
libev \ ## xtrabackup的依赖包
libev-devel \ ## xtrabackup的依赖包
nc \ ## CentOS7中软件包名为nmap-ncat
socat \
mysql-libs \ ## xtrabackup的依赖包,CentOS7后,用 mariadb 替代了 mysql ,对应的 mysql-libs 变成了 mariadb-libs
##可先不用安装也能成功安装xtrabackup2.4.11,后续安装了pxc后,会有libmysqlclient.so文件的
pcre \
pcre-devel \
openssl \
openssl-devel \
zlib \
zlib-devel \
percona-release \
perl-Time-HiRes \
percona-xtrabackup | sort
-
- 安装缺少的依赖包
- 先安装比较齐全的yum软件包资源库 epel-release
- 安装缺少的依赖包
[root@centos-mysql-pxc-1 tmp]# yum install epel-release
-
-
- 安装缺少的依赖包
-
[root@centos-mysql-pxc-1 tmp]# yum install -y \
libaio \
numactl-libs \
perl-DBI \
perl-DBD-MySQL \
perl-IO-Socket-SSL \
perl-Digest-MD5 \
libev \
libev-devel \
nc \
socat \
mysql-libs \
pcre \
pcre-devel \
openssl \
openssl-devel \
zlib \
zlib-devel \
perl-Time-HiRes
【注】:CentOS系统的,建议先安装以上依赖包,如无需要,可不安装percona-release-0.1-6.noarch.rpm软件包,否则可能会导致安装以上依赖包失败,报如下图错误:
-
- 配置防火墙和关闭selinux
- 关闭或添加相应防火墙端口
- 配置防火墙和关闭selinux
[root@centos-mysql-pxc-1 tmp]# systemctl stop firewalld ##关闭防火墙
[root@centos-mysql-pxc-1 tmp]# systemctl disable firewalld ##禁用开机启动防火墙
[root@centos-mysql-pxc-1 tmp]# systemctl status firewalld ##查看防火墙状态
-
-
- 关闭selinux
-
[root@centos-mysql-pxc-1 tmp]# setenforce 0 ##即时关闭
[root@centos-mysql-pxc-1 tmp]# vi /etc/selinux/config ##把SELINUX=enforcing 改成 SELINUX=disabled,禁止开机启用
[root@centos-mysql-pxc-1 tmp]# getenforce ##查看selinux状态
(以下操作在所有PXC节点进行)
[root@centos-mysql-pxc-1 tmp]# rpm -ivh percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm
-
- 创建mysql用户与安装目录
- 创建mysql用户及用户组
- 创建mysql用户与安装目录
[root@centos-mysql-pxc-1 tmp]# groupadd -r mysql
[root@centos-mysql-pxc-1 tmp]# useradd -r -g mysql -s /bin/false mysql
[root@centos-mysql-pxc-1 tmp]# passwd mysql
-
-
- 创建安装目录
-
[root@centos-mysql-pxc-1 tmp]# mkdir /app
[root@centos-mysql-pxc-1 tmp]# mkdir -p /data/mysql/{data,logs/binlog,tmp}
[root@centos-mysql-pxc-1 tmp]# chown -R mysql:mysql /data/mysql ##必须更改mysql目录属主为mysql:mysql
-
- 安装配置PXC
- 解压PXC
- 安装配置PXC
[root@centos-mysql-pxc-1 tmp]#
tar --no-same-owner -zxvf Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101.tar.gz -C /app/
[root@centos-mysql-pxc-1 tmp]# cd /app
[root@centos-mysql-pxc-1 app]# mv Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101 mysql ##程序主目录改名为mysql
[root@centos-mysql-pxc-1 app]# chown -R mysql:mysql mysql ##必须更改mysql程序主目录属主为mysql:mysql
[root@centos-mysql-pxc-1 app]# du -sh mysql
1006M mysql ##解压后的pxc主目录大约1G左右
-
-
- 链接PXC初始化数据库时需要的库文件
-
(如果系统是最小化安装,事先做这两个软链接,避免初始化报库文件缺失的错误)
-
-
- 创建编辑/etc/my.cnf文件
-
[root@centos-mysql-pxc-1 tmp]# vi /etc/my.cnf
[client]
port = 3306
socket = /data/mysql/tmp/mysql.sock
[mysql]
port = 3306
socket = /data/mysql/tmp/mysql.sock
default_character_set = utf8mb4
prompt = '\\u@\\d*\\h \\R:\\m:\\s> '
no-auto-rehash
user = root
password = caserver
[mysqldump]
quick
max_allowed_packet = 16M
[mysqld]
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#transaction_isolation = READ-COMMITTED
default_storage_engine = InnoDB
default_authentication_plugin = mysql_native_password
basedir = /app/mysql
datadir = /data/mysql/data
pid_file = /data/mysql/logs/mysqld.pid
log_error = /data/mysql/logs/mysqld.err
log_timestamps = SYSTEM
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow_query.log
long_query_time = 10 ##设置慢查询时长阀值,默认10
port = 3306
socket = /data/mysql/tmp/mysql.sock
tmpdir = /data/mysql/tmp
explicit_defaults_for_timestamp = 1
lower_case_table_names = 1
skip_name_resolve = 1
character_set_server = utf8mb4
server_id = 1 ##必须唯一,其它节点,请改为不冲突的ID号
log_bin = /data/mysql/logs/binlog/mysql-bin
log_bin_index = /data/mysql/logs/binlog/mysql-bin.index
binlog_rows_query_log_events = 1
binlog_row_image = MINIMAL
gtid_mode = on ##开启GTID
enforce_gtid_consistency = 1 ##开启GTID
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 64M
innodb_max_dirty_pages_pct = 50
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
max_allowed_packet = 16M
max_connections = 1000
max_user_connections = 200
max_connect_errors = 100
#query_cache_type = 2
user = mysql
### Configure for PXC ###
innodb_autoinc_lock_mode = 2
binlog_format = ROW
pxc_strict_mode = ENFORCING
wsrep_cluster_name = pxc-cluster
wsrep_cluster_address = gcomm://192.168.56.8,192.168.56.9
wsrep_node_address = 192.168.56.8
wsrep_provider = /app/mysql/lib/libgalera_smm.so
#wsrep_provider_options="gcache.size = 1G;debug = yes"
wsrep_provider_options="gcache.size = 64M"
wsrep_slave_threads = 2
#wsrep_sst_method = rsync ##很大,上T用这个
wsrep_sst_method = xtrabackup-v2 ##100-200G用
wsrep_sst_auth = sst:xxxxxx
-
-
- 初始化数据库文件
-
[root@centos-mysql-pxc-1 tmp]# cd /app/mysql
[root@centos-mysql-pxc-1 mysql]#
bin/mysqld --defaults-file=/etc/my.cnf --basedir=/app/mysql --datadir=/data/mysql/data --user=mysql –initialize
- 提前告诉你,如果系统是最小化安装的,事先做这两个软连接避免初始化报so库文件缺失错误,操作如下(操作前请先记录原链接位置并备份,避免对其它应用产生影响):
#> ls -l /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
#> ls -l /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6
#> ln -sv /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
#> ln -sv /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6
#> ls -l /usr/lib64/libcrypto.so.10 /lib64/libcrypto.so.6
#> ls -l /usr/lib64/libssl.so.10 /lib64/libssl.so.6
#> ln -sv /usr/lib64/libcrypto.so.10 /lib64/libcrypto.so.6
#> ln -sv /usr/lib64/libssl.so.10 /lib64/libssl.so.6
- 本例没有做以上so库文件链接,初始化数据库文件也是成功的,本例的这些so库文件默认链接版本如下:
-
-
- 查看并记录生成的数据库root用户的临时密码
-
执行如上

本文详述了一种使用PXC(Percona XtraDB Cluster)作为数据库集群,结合LVS负载均衡器和Keepalived实现高可用性的实践过程。从系统规划、依赖包安装、PXC节点配置、LVS和Keepalived的安装配置,到RealServer网络配置,每个步骤都有详细的指导。通过这种方法,可以确保在单个节点故障时,服务能够自动切换,保持连续性和稳定性。
最低0.47元/天 解锁文章
1072

被折叠的 条评论
为什么被折叠?



