MySQL数据的主从复制、半同步复制和主主复制详解
发布日期:2025-04-17 23:29:44
浏览次数:57
分类:精选文章
本文共 3187 字,大约阅读时间需要 10 分钟。
MySQL 数据库的主从复制、半同步复制及双主架构详解
MySQL 是目前数据库领域中占据重要地位的开源数据库管理系统之一,其高性能和免费特性使其成为许多开发者的首选工具。在实际应用中,MySQL 的主从复制功能能够有效地实现数据的高效同步与备份。本文将详细介绍 MySQL 的主从复制、半同步复制以及双主架构的实现方法与配置步骤。
一、MySQL 数据复制的基本概述
1. 数据复制的基本介绍
MySQL 数据库支持多种复制模式,包括同步复制、单向复制和异步复制。在主从复制中,主服务器负责记录数据变化并通过二进制日志文件传递给从服务器,从服务器则根据主服务器的日志文件进行数据同步。这种机制不仅实现了数据的高效同步,还支持了数据库的备份与恢复。
2. MySQL 数据复制的原理
MySQL 的复制机制基于二进制日志的记录机制。主服务器在执行数据库操作时,会将这些操作记录到二进制日志文件中。从服务器通过连接主服务器,获取主服务器二进制日志中的更新内容,并根据这些内容同步本地数据库。需要注意的是,主服务器上的所有更新操作都必须在主服务器上执行,否则可能导致数据不一致。
二、MySQL 主从复制架构与实现
1. 环境架构
- 主服务器:IP 地址为
172.16.7.1 - 从服务器:IP 地址为
172.16.7.2 - 数据库版本:MySQL 5.5.28
- 安装环境:RedHat Enterprise 5.8
2. 安装与配置
1. 主服务器安装
- 软件安装:
# 解压并安装 MySQLtar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/# 创建符号链接ln -sf mysql-5.5.28-linux2.6-i686.tar.gz mysql# 修改属主属组chown -R root:mysql /usr/local/mysql/# 初始化数据库scripts/mysql_install_db --user=mysql --datadir=/mydata/data# 配置 MySQLcp support-files/my-large.cnf /etc/my.cnf# 启用并添加服务cp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig --list mysqldchkconfig mysqld on# 配置日志echo "log-bin = master-bin" >> /etc/my.cnfecho "innodb_file_per_table = 1" >> /etc/my.cnfecho "server-id = 1" >> /etc/my.cnfecho "datadir = /mydata/data" >> /etc/my.cnf# 启动服务service mysqld start# 设置环境变量echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh# 生效环境变量. /etc/profile.d/mysql.sh
2. 从服务器安装
- 软件安装:
# 解压并安装 MySQLtar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/# 创建符号链接ln -sf mysql-5.5.28-linux2.6-i686.tar.gz mysql# 修改属主属组chown -R root:mysql /usr/local/mysql/# 初始化数据库scripts/mysql_install_db --user=mysql --datadir=/mydata/data# 配置 MySQLcp support-files/my-large.cnf /etc/my.cnf# 启用并添加服务cp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig --list mysqldchkconfig mysqld on# 配置日志echo "log-bin = relay-mysql" >> /etc/my.cnfecho "relay-log = relay-mysql" >> /etc/my.cnfecho "innodb_file_per_table = 1" >> /etc/my.cnfecho "server-id = 2" >> /etc/my.cnf# 启动服务service mysqld start# 设置环境变量echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh# 生效环境变量. /etc/profile.d/mysql.sh
三、MySQL 半同步复制
1. 插件安装
主服务器:
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 = 1000;
从服务器:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';SET GLOBAL rpl_semi_sync_slave_enabled = 1;
配置生效:停止相关线程并重新启动:
STOP SLAVE IO_THREAD;START SLAVE IO_THREAD;
永久配置:在
my.cnf中添加配置:[mysqld]rpl_semi_sync_master_enabled = 1rpl_semi_sync_master_timeout = 1000
2. 检查配置
- 主服务器:
SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';
- 从服务器:
SHOW DATABASES;
四、双主架构
1. 用户权限设置
主服务器:
GRANT REPLICATION SLAVE ON *.* TO 'chrisli'@'172.16.%.%' IDENTIFIED BY 'work';
从服务器:
GRANT REPLICATION SLAVE ON *.* TO 'chrislee'@'172.16.%.%' IDENTIFIED BY 'work';
2. 配置主从关系
主服务器:
CHANGE MASTER TO MASTER_HOST='172.16.7.2', MASTER_USER='chrisli', MASTER_PASSWORD='work', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=344;
从服务器:
CHANGE MASTER TO MASTER_HOST='172.16.7.1', MASTER_USER='chrislee', MASTER_PASSWORD='work', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=345;
五、总结
通过上述配置,MySQL 的主从复制、半同步复制及双主架构已经完成。接下来可以进行数据库的测试,并根据实际应用需求进行优化和扩展。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2026年06月16日 06时24分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Pipenv 与 Conda?
2023-03-02
QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小//Android虚拟机分辨率
2023-03-02
pipy国内镜像的网址
2023-03-02
quiver绘制python语言
2023-03-02
pip下载缓慢
2023-03-02
PIP使用SSH从BitBucket安装自定义软件包,无需输入SSH密码
2023-03-02
pip在安装模块时提示Read timed out
2023-03-02
pip更换源
2023-03-02
SpringBoot之Banner源码深度分解
2023-03-02
Pix2Pix如何工作?
2023-03-02
QuickBI助你成为分析师——搞定数据源
2023-03-02
pkl来存储python字典
2023-03-02
quick sort | 快速排序 C++ 实现
2023-03-02
pkpmbs 建设工程质量监督系统 文件上传漏洞复现
2023-03-02
queue队列、deque双端队列和priority_queue优先队列
2023-03-02
PKUSC2018游记
2023-03-02