主库崩了也不怕:MySQL主从复制保命

前言

在高可用架构中,数据库往往是系统最脆弱的一环。一旦主库意外宕机,轻则服务中断、用户流失,重则数据丢失、业务停摆——这是每个运维和开发者都不愿面对的噩梦。

但别慌!MySQL 主从复制正是你的“保命底牌”。通过实时同步数据到从库,它不仅能在主库崩溃时快速切换、保障服务连续性,还能分担读压力、提升系统整体健壮性。

本文将手把手带你搭建 MySQL 主从复制环境,从原理到实操,从配置到验证,让你真正掌握这项关键的高可用技能——主库崩了也不怕,业务照常跑

MySQL主从同步详解_mysql同步模式-CSDN博客

1.配置前准备

环境准备

  • 操作系统:建议Linux系统(这里以Centos7为例)。
  • MySQL版本:5.7及以上。
  • 配置:假设主库IP为192.168.42.140,从库IP为192.168.42.145。

确保两台机器都安装了mysql。

image-20251125155208616

image-20251125155220489

没有mysql的小伙伴可以参考这篇文章:手把手教你:Centos7下MySQL的安装与初始配置 – cpolar 极点云官网

2.配置主库

修改主库的MySQL配置文件:

vi /etc/my.cnf
server-id=1              # 主库的ID,必须是唯一的
log-bin=mysql-bin        # 开启二进制日志功能

重启一下mysql:

image-20251125161502700

登录mysql:

mysql -uroot -p

image-20251125161613612

创建用于同步的用户:

CREATE USER 'repl_user'@'192.168.42.145' IDENTIFIED BY 'Sx520!';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.42.145';
FLUSH PRIVILEGES;

image-20251125163249986

记下FilePosition字段的值,稍后会用到:

SHOW MASTER STATUS;

image-20251125163401523

3.配置从库

修改主库的MySQL配置文件:

vi /etc/my.cnf
server-id=1              # 主库的ID,必须是唯一的
log-bin=mysql-bin        # 开启二进制日志功能

image-20251126113417904

重启一下mysql:

image-20251125161502700

登录mysql:

mysql -uroot -p

image-20251126113432296

4.开启主从同步

登录从库后,输入MySQL同步命令,将MASTER_LOG_FILEMASTER_LOG_POS替换为刚刚在主库记录的二进制文件和位置:

CHANGE MASTER TO
    MASTER_HOST='192.168.42.140',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='Sx520!',
    MASTER_LOG_FILE='mysql-bin.000002',
    MASTER_LOG_POS=154;

image-20251126113406361

启动从库:

START SLAVE;

检查同步状态:

SHOW SLAVE STATUS\G

检查Slave_IO_RunningSlave_SQL_Running状态。如果都是Yes,恭喜你,主从同步配置成功!

image-20251126115022314

验证是否同步:

在主库创建一个数据库,看从库是否显示:

主库:

create database shan;
show databases;

image-20251126142516016

从库:

show databases;

image-20251126142527482

常见问题,及解决办法:

  • 同步延迟:可通过Seconds_Behind_Master查看延迟,增加网络带宽或从库性能可减少延迟。
  • 主从不同步:可以尝试重新启动从库(STOP SLAVE;然后START SLAVE;)。
  • 无法连接到主库:检查网络连通性及防火墙配置,确保从库能访问主库。

至此主从同步部署成功!

那么,我现在有如下问题:

  • 你有一台 公司/家庭局域网内的 MySQL 主库(如 IP:192.168.42.140),没有公网 IP。
  • 你想在 云服务器(如阿里云 ECS)或异地办公电脑 上部署一个 从库(Slave),实现数据实时同步。
  • 但云服务器无法直接访问你内网的主库(因为 NAT、防火墙、无公网 IP)。

这种时候我们怎么办呢?别急!cpolar替你解决!

“MySQL 主从 + cpolar” 是一种在缺乏公网 IP 条件下,快速实现跨网络数据同步的实用技巧,特别适合开发测试、远程办公、边缘设备数据回传等轻量级场景。

跟我一起安装cpolar吧!

5.主库安装cpolar内网穿透工具

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

image-20250814101639846

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

8a6698b1bf26d64ba3645827fbfb1c29

6.配置公网地址

通过配置,你可以在本地 WSL 或 Linux 系统上运行 SSH 服务,并通过 Cpolar 将其映射到公网,从而实现从任意设备远程连接开发环境的目的。

  • 隧道名称:可自定义,本例使用了:mysql,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:3306
  • 端口类型:随机临时TCP端口
  • 地区:China Top

image-20251121161040290

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可。

  • tcp 表示使用的协议类型
  • 2.tcp.cpolar.top是 Cpolar 提供的域名
  • 11862是随机分配的公网端口号

image-20251126144416225

通过Cpolar提供的公网地址和端口,尝试用从库开启主从同步:

主库记下FilePosition字段的值:

SHOW MASTER STATUS;

image-20251126145426411从库执行同步命令:

CHANGE MASTER TO
    MASTER_HOST='2.tcp.cpolar.top',
    MASTER_PORT=11862,
    MASTER_USER='repl_user',
    MASTER_PASSWORD='Sx520!',
    MASTER_LOG_FILE='mysql-bin.000002',
    MASTER_LOG_POS=938;

启动从库:

START SLAVE;

检查同步状态:

SHOW SLAVE STATUS\G

检查Slave_IO_RunningSlave_SQL_Running状态。如果都是Yes,恭喜你,主从同步配置成功!

image-20251126145138012

7.保留固定TCP公网地址

使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化。

image-20251126150541333

选择区域和描述:有一个下拉菜单,当前选择的是“China Top”。
右侧输入框,用于填写描述信息。
保留按钮:在右侧有一个橙色的“保留”按钮,点击该按钮可以保留所选的TCP地址。
列表中显示了一条已保留的TCP地址记录。

  • 地区:显示为“China Top”。
  • 地址:显示为“23.tcp.cpolar.top:10140”。

image-20251126150610886

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道mysql,点击右侧的编辑

image-20251126150651707

修改隧道信息,将保留成功的TCP端口配置到隧道中。

  • 端口类型:选择固定TCP端口
  • 预留的TCP地址:填写保留成功的TCP地址

点击更新

image-20251126150733393

创建完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址。

image-20251126150932627

这样我们的地址就永远不会发生变化啦!

总结

MySQL 主从复制不是“高级功能”,而是现代应用的基础设施标配。

花半天时间搭建一套主从架构,可能在未来某次深夜故障中,让你免于“背锅”、保住 KPI,甚至赢得团队信任。

今天就检查你的 MySQL 是否已配置主从?如果没有——现在就是最好的开始时机!

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章