MySQL主从复制

一、主从复制是啥?

简单说:

让一台数据库(主)的数据,自动复制到另一台或多台数据库(从)上,实现数据备份、分担查询压力。


二、怎么复制的?------ 三个步骤

  1. 主库记录操作日志

    主库把所有的写操作(增、删、改)记到一个叫"二进制日志"的文件里。

  2. 从库拉取日志

    从库有一个叫 IO 线程 的"搬运工",它去主库把二进制日志搬回来,存到自己本地的"中继日志"里。

  3. 从库执行日志

    从库还有一个叫 SQL 线程 的"执行工",它读取中继日志里的操作,在自己这边重新执行一遍。

最终结果: 从库和主库数据保持一致。


三、搭建主从复制需要做什么?

1. 基础环境准备(主库和从库都要做)

  • 时间同步:用阿里云的 NTP 服务,保证两台机器时间一致。

  • 关防火墙和 SELinux:避免网络不通。

2. 主库配置

  • 开启二进制日志

  • 设置 server-id(唯一标识)

  • 创建一个专门给从库用的账号(比如 slave)

  • 查看当前日志文件和位置,记住它(从库要用)

3. 从库配置

  • 设置 server-id(不能和主库一样)

  • 启动 MySQL

  • 告诉从库:"主库在哪、账号密码、从哪个日志文件的哪个位置开始复制"

  • 启动 slave 角色

  • 查看状态,确认 IO 线程和 SQL 线程都是 Yes


四、常见问题(尤其是 IO 线程连不上)

现象:
Slave_IO_Running: Connecting
Last_IO_Error: Can't connect to MySQL server

原因:

  • 网络不通(防火墙、IP 写错)

  • 主库账号密码不对

  • 日志文件名或位置写错了

解决:

  • 检查网络和防火墙

  • 确认主库能正常访问

  • 必要时用 reset replica; 重置从库的复制状态


一句话总结

主从复制就是主库写日志,从库把日志搬回来再执行一遍,最终两边数据一样。搭建时注意时间同步、网络通、server-id 不同、日志位置要对。连不上多半是网络或配置问题。

相关推荐
微微%8 小时前
mysql的安装和使用
数据库·mysql·mysql8安装
十年程序梦12 小时前
2026最新国内省市区县表,mysql表格
mysql
Random Glow13 小时前
二级索引与回表:一次回表到底多贵
数据库·mysql·性能优化·innodb·索引
sunburn-15 小时前
数据库聚合查询完整教程:从基础函数到实战统计
java·数据库·mysql·数据库开发
❀͜͡傀儡师16 小时前
MySQL REST Service 认证鉴权体系与 MySQL 26.10.0 内置化演进
数据库·mysql·adb
数据库小学妹17 小时前
MySQL binlog格式怎么选?ROW、STATEMENT、MIXED的区别与坑
数据库·mysql·binlog·主从复制·数据一致性
花间相见17 小时前
【计算基础|MySQL18】Buffer Pool 与内存管理
后端·sql·mysql
杨云龙UP18 小时前
生产实战:Keepalived + Nginx + MySQL 双向复制高可用架构部署与原理详解
运维·数据库·mysql·nginx·架构·keepalived·高可用架构
为思念酝酿的痛18 小时前
MySQL的基本查询
数据库·mysql
m0_6399069420 小时前
MySQL 实现分布式锁:悲观锁、乐观锁、唯一索引锁
数据库·分布式·mysql