当前位置: 首页 > news >正文

MySQL 主从复制

数据的高可用性、读写分离以及数据备份是至关重要的需求。MySQL 作为一款广泛使用的开源关系型数据库,其主从复制功能为解决这些问题提供了有效的方案。本文将详细介绍 MySQL 主从复制的原理、搭建步骤以及实际应用。

一、MySQL 主从复制原理

1.1 基本概念

MySQL 主从复制是一种将主数据库(Master)的数据复制到一个或多个从数据库(Slave)的过程。主数据库负责处理所有的写操作,而从数据库则接收主数据库的更新并同步数据,主要用于处理读操作。

1.2 复制过程

二进制日志记录:主数据库会将所有的写操作记录到二进制日志(Binary Log)中。这些日志包含了对数据库进行修改的 SQL 语句,是复制的基础。

中继日志传输:从数据库通过 IO 线程连接到主数据库,并请求主数据库发送二进制日志。主数据库接收到请求后,会将二进制日志发送给从数据库,从数据库将接收到的日志存储在中继日志(Relay Log)中。

SQL 语句执行:从数据库的 SQL 线程会读取中继日志中的内容,并在本地执行这些 SQL 语句,从而实现数据的同步。

1.3 复制模式

异步复制:主数据库在执行完写操作后,不会等待从数据库确认就返回结果。这种模式下,主从数据库之间的复制延迟可能会比较大,但对主数据库的性能影响较小。

半同步复制:主数据库在执行完写操作后,会等待至少一个从数据库确认接收到中继日志后才返回结果。这种模式可以减少数据丢失的风险,但会增加主数据库的响应时间。

二、MySQL 主从复制搭建步骤

2.1 环境准备

两台或多台安装了 MySQL 数据库的服务器。

确保服务器之间可以相互通信,并且防火墙允许 MySQL 端口(默认 3306)的流量通过。

2.2 配置主数据库

编辑主数据库的配置文件 my.cnf,添加以下配置:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = your_database_name

server-id 是服务器的唯一标识,log-bin 开启二进制日志,binlog-do-db 指定需要复制的数据库。

重启 MySQL 服务:

systemctl restart mysql

创建用于复制的用户并授予权限:

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;

查看主数据库的二进制日志信息:

SHOW MASTER STATUS;

记录下 File 和 Position 的值,后续配置从数据库时会用到。

2.3 配置从数据库

编辑从数据库的配置文件 my.cnf,添加以下配置:

[mysqld]
server-id = 2

确保 server-id 与主数据库不同。

重启 MySQL 服务:

systemctl restart mysql

配置从数据库连接到主数据库:

CHANGE MASTER TO
MASTER_HOST='master_host_ip',
MASTER_USER='replication_user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.xxxxxx',
MASTER_LOG_POS=xxxxxx;

将 master_host_ip 替换为主数据库的 IP 地址,mysql-bin.xxxxxx 和 xxxxxx 替换为主数据库 SHOW MASTER STATUS 命令中记录的 File 和 Position 的值。

启动从数据库的复制进程:

START SLAVE;

检查从数据库的复制状态:

SHOW SLAVE STATUS\G

确保 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,表示复制正常运行。

三、MySQL 主从复制的应用场景

3.1 读写分离

在高并发的应用场景中,将读操作分发到从数据库,写操作集中在主数据库,可以显著提高系统的性能和可扩展性。例如,电商网站的商品展示页面可以从从数据库读取数据,而用户下单等写操作则在主数据库上执行。

3.2 数据备份与恢复

从数据库作为主数据库的副本,可以在主数据库出现故障时快速切换到从数据库,实现数据的备份和恢复。同时,定期对从数据库进行备份,也可以进一步提高数据的安全性。

3.3 数据的异地容灾

将从数据库部署在不同的地理位置,可以实现异地容灾。当主数据库所在地区发生自然灾害或网络故障时,位于其他地区的从数据库仍然可以正常提供服务,保障业务的连续性。

http://www.xdnf.cn/news/188803.html

相关文章:

  • 图像保边滤波之BEEPS滤波算法
  • KUKA机器人自动备份设置
  • vscode 使用gitcode团队管理项目
  • 区块链随学随记
  • jetson nano上Ubuntu系统调用摄像头bug
  • 塔能科技:点亮节能之光,赋能工厂与城市
  • 20250428-AI Agent:智能体的演进与未来
  • 包装产线通过canopen转Profinet网关控制伺服
  • 关于常量指针和指向常量的指针
  • 泰山派常用命令
  • map和set:
  • ai环境conda带torch整体迁移。
  • 一文了解 模型上下文协议(MCP)
  • word插入APA格式的参考文献
  • NGINX ngx_http_addition_module 模块响应体前后注入内容
  • VS2022+OpenCasCade配置编译
  • 【leetcode】最长公共子路径问题
  • 从大众传媒到数字生态:开源AI智能名片链动2+1模式S2B2C商城小程序驱动的营销革命
  • prompt提示词编写技巧
  • Context7 MCP:提供实时、版本特定的文档以解决AI幻觉问题
  • Go 语言入门:(一) 环境安装
  • 大语言模型(LLMs)微调技术总结
  • web 基础与 http 协议
  • 【JAVA ee初阶】多线程(3)
  • es+kibana---集群部署
  • MYOJ_1349:(洛谷P3951)[NOIP 2017 提高组] 小凯的疑惑(数学公式套用,两步搞定代码)
  • 快速上手QEMU:创建你的第一个虚拟机实例
  • 深入浅出限流算法(一):简单但有“坑”的固定窗口计数器
  • 大数据应用开发和项目实战
  • 第五章、SpringBoot与消息通信(三)