Life, half is memory, half is to continue.

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

By Vincent. @2025.11.28 • 91
主库崩了也不怕:MySQL主从复制保命

前言

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

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

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

1.配置前准备

环境准备

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

2.配置主库

修改主库的MySQL配置文件:

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

重启一下mysql:

登录mysql:

mysql -uroot -p

创建用于同步的用户:

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

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

SHOW MASTER STATUS;

3.配置从库

修改主库的MySQL配置文件:

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

重启一下mysql:

登录mysql:

mysql -uroot -p

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;

启动从库:

START SLAVE;

检查同步状态:

SHOW SLAVE STATUS\G

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

验证是否同步:

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

主库:

create database shan;
show databases;

从库:

show databases;

常见问题,及解决办法:

至此主从同步部署成功!

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

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

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

跟我一起安装cpolar吧!

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

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

❤️以下是安装cpolar步骤:

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

使用一键脚本安装命令:

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

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

sudo systemctl status cpolar

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

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

6.配置公网地址

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

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

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

主库记下FilePosition字段的值:

SHOW MASTER STATUS;

从库执行同步命令:

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,恭喜你,主从同步配置成功!

7.保留固定TCP公网地址

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

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

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

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

点击更新

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

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

总结

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

扫码分享收藏
扫码分享收藏