🗣 Wd提问: MySQL双主架构
🤖 Ai回答: MySQL双主架构详解
1、概述
MySQL双主架构(Master-Master Replication)是一种高可用性的数据库解决方案,通过两个MySQL服务器互为主从关系,实现数据的双向同步。
2、架构原理
Master1 ←→ Master2
| |
| |
数据库 数据库
核心特点:
双向同步:两个主服务器可以相互同步数据
高可用性:一个节点故障时,另一个节点可继续提供服务
负载分担:可以同时处理读写请求
3、配置步骤
3.1 基础配置
配置文件修改(my.cnf):
ini
[mysqld]
基本设置
server-id = 1 主服务器ID,必须唯一
log-bin = mysql-bin 启用二进制日志
binlog-format = ROW 推荐使用ROW格式
binlog-row-image = FULL
复制相关设置
relay-log = relay-bin
log-slave-updates = 1
read-only = 0 主服务器可写
auto_increment_increment = 2 自增步长
auto_increment_offset = 1 自增偏移量
安全设置
skip-name-resolve = 1
3.2 双主配置示例
Master1配置:
ini
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
auto_increment_increment = 2
auto_increment_offset = 1
Master2配置:
ini
[mysqld]
server-id = 2
log-bin = mysql-bin
binlog-format = ROW
auto_increment_increment = 2
auto_increment_offset = 2
3.3 创建复制用户
在两个主服务器上执行:
sql
创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
刷新权限
FLUSH PRIVILEGES;
3.4 初始化数据
sql
在Master1上执行
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
记录File和Position值
在Master2上执行
CHANGE MASTER TO
MASTER_HOST='master1_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
在Master2上执行
CHANGE MASTER TO
MASTER_HOST='master2_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
4、高级配置优化
4.1 避免冲突的配置
ini
[mysqld]
自增ID配置
auto_increment_increment = 2
auto_increment_offset = 1 Master1
auto_increment_offset = 2 Master2
禁止自动提交(可选)
autocommit = 0
事务隔离级别
transaction-isolation = READ-COMMITTED
4.2 性能优化参数
ini
[mysqld]
缓冲池设置
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
复制相关优化
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
5、监控与维护
5.1 常用监控命令
sql
查看复制状态
SHOW SLAVE STATUS\G
检查复制延迟
SELECT
Slave_IO_Running,
Slave_SQL_Running,
Seconds_Behind_Master,
Last_Error
FROM information_schema.slave_status;
查看主服务器状态
SHOW MASTER STATUS;
SHOW PROCESSLIST;
5.2 故障排查
sql
停止复制
STOP SLAVE;
重置复制
RESET SLAVE ALL;
查看错误日志
SHOW WARNINGS;
6、注意事项
6.1 数据冲突问题
自增ID冲突解决方案:
sql
Master1: 自增ID从1开始,步长为2
Master2: 自增ID从2开始,步长为2
示例表结构
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);
6.2 常见问题
1、重复键冲突:确保自增ID配置正确
2、复制延迟:监控Seconds_Behind_Master
3、网络中断:配置适当的重试机制
4、数据不一致:定期检查数据一致性
7、实际应用建议
7.1 生产环境部署
bash
1、确保网络连通性
ping master1_ip
ping master2_ip
2、验证配置文件
mysql defaults-file=/etc/my.cnf -e SHOW VARIABLES LIKE 'server_id';
3、启动服务
systemctl start mysqld
systemctl enable mysqld
7.2 安全加固
sql
删除不必要的用户
DROP USER IF EXISTS 'test_user'@'%';
限制连接数
SET GLOBAL max_connections = 500;
启用SSL
在my.cnf中添加
ssl-ca = /path/to/ca.pem
ssl-cert = /path/to/server-cert.pem
ssl-key = /path/to/server-key.pem
8、故障恢复流程
8.1 主服务器故障恢复
sql
1、停止故障主服务器
systemctl stop mysqld
2、在备机上提升为主服务器
STOP SLAVE;
RESET SLAVE ALL;
3、修改配置文件中的server-id
4、重启MySQL服务
5、更新应用程序连接配置
8.2 数据一致性检查
sql
使用pt-table-checksum工具
pt-table-checksum \
host=master1 \
user=repl \
password=password \
databases=test_db
检查结果
SELECT * FROM mysql.pt_osc_checksums;
MySQL双主架构提供了良好的高可用性和容错能力,但在实际应用中需要仔细规划和持续监控,以确保系统的稳定运行。
📣 商家广告:





0
IP地址: 110.239.103.53
搜索次数: 0
提问时间: 2025-11-06 01:43:24
🛒 域名购买:
s-k.com.cn
84.gs
2223.com.cn
mmmf.com.cn
n-f.cn
yk.gs
kt6.cn
pai.pw
45.gold
663.net.cn
❓️ 热门提问:
rust需要加速器吗
windows 2003服务器
服务器改dns
美国服务器cn2
美国主机空间租用
机柜 38u
腐蚀租服务器多少钱
云计算是运维吗
ip地址分配表
机房钥匙
豌豆Ai站群搜索引擎系统
🌐 域名评估:
oibj.cn
nfwq.cn
59.gold
tab.ltd
5a.tw.cn
mqwy.cn
oxvc.cn
qktb.cn
ii.xj.cn
tieba.cyou
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
站群推广
公共考典
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。