第四章 ReplicaSet高可用配置原创
# 第四章 ReplicaSet高可用配置
# 4.1 环境准备
# 软件包安装
# 安装MySQL官方YUM源
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm
# 安装MySQL Shell和Router
yum install -y mysql-shell mysql-router
# 也可以使用RPM包安装
wget https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.34-1.el7.x86_64.rpm
wget https://downloads.mysql.com/archives/get/p/41/file/mysql-router-community-8.0.34-1.el7.x86_64.rpm
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 网络配置
# 配置节点间通信
sudo iptables -I INPUT -s 192.168.01/32 -p tcp -j ACCEPT
sudo iptables -I INPUT -s 192.168.02/32 -p tcp -j ACCEPT
sudo iptables -I INPUT -s 192.168.03/32 -p tcp -j ACCEPT
sudo service iptables save
1
2
3
4
5
2
3
4
5
# 系统优化
# 禁用透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
# 优化磁盘调度器
echo noop >/sys/block/sdb/queue/scheduler
1
2
3
4
5
6
2
3
4
5
6
# 4.2 复制链路建立流程
# 基于GTID的自动定位配置
-- 在从节点执行
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='master_host',
SOURCE_PORT=3306,
SOURCE_USER='repl_user',
SOURCE_PASSWORD='repl_password',
SOURCE_AUTO_POSITION=1;
-- 启动复制线程
START REPLICA;
-- 查看复制状态
SHOW REPLICA STATUS\G
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
CHANGE MASTER TO参数说明
- SOURCE_HOST:主节点主机名或IP
- SOURCE_PORT:主节点MySQL端口
- SOURCE_USER:复制用户名
- SOURCE_PASSWORD:复制用户密码
- SOURCE_AUTO_POSITION:启用GTID自动定位
# 4.2 半同步复制配置
# 主节点配置
-- 安装半同步主插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
-- 启用半同步复制
SET GLOBAL rpl_semi_sync_master_enabled = 1;
-- 设置超时时间(毫秒)
SET GLOBAL rpl_semi_sync_master_timeout = 10000;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 从节点配置
-- 安装半同步从插件
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
-- 启用半同步复制
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
1
2
3
4
5
2
3
4
5
# 网络抖动处理
# 4.3 自动故障转移方案
# MySQL Router配置
[mysqld]
# --- Binlog ---
server_id = 1 # 主节点 ID (必须唯一)
log_bin = /data/mysql/logs/binlog/mysql-bin # 启用 Binlog
binlog_format = ROW
sync_binlog = 1
expire_logs_days = 7
max_binlog_size = 1G
# --- GTID (MySQL 8.0 默认开启) ---
gtid_mode = ON
enforce_gtid_consistency = ON
# --- 其他推荐 ---
# binlog_expire_logs_seconds = 604800 # 替代 expire_logs_days (8.0.1+)
# log_slave_updates = ON # 如果主库也可能作为其他主库的从库 (级联复制)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 4/24/2025