前言
在高可用架构中,数据库往往是系统最脆弱的一环。一旦主库意外宕机,轻则服务中断、用户流失,重则数据丢失、业务停摆——这是每个运维和开发者都不愿面对的噩梦。
但别慌!MySQL 主从复制正是你的“保命底牌”。通过实时同步数据到从库,它不仅能在主库崩溃时快速切换、保障服务连续性,还能分担读压力、提升系统整体健壮性。
本文将手把手带你搭建 MySQL 主从复制环境,从原理到实操,从配置到验证,让你真正掌握这项关键的高可用技能——主库崩了也不怕,业务照常跑。

1.配置前准备
环境准备
- 操作系统:建议Linux系统(这里以Centos7为例)。
- MySQL版本:5.7及以上。
- 配置:假设主库IP为192.168.42.140,从库IP为192.168.42.145。
确保两台机器都安装了mysql。


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

记下File和Position字段的值,稍后会用到:
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_FILE和MASTER_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_Running和Slave_SQL_Running状态。如果都是Yes,恭喜你,主从同步配置成功!

验证是否同步:
在主库创建一个数据库,看从库是否显示:
主库:
create database shan;
show databases;

从库:
show databases;

常见问题,及解决办法:
- 同步延迟:可通过
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步骤:
使用一键脚本安装命令:
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 将其映射到公网,从而实现从任意设备远程连接开发环境的目的。
- 隧道名称:可自定义,本例使用了:mysql,注意不要与已有的隧道名称重复
- 协议:tcp
- 本地地址:3306
- 端口类型:随机临时TCP端口
- 地区:China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可。
- tcp 表示使用的协议类型
- 2.tcp.cpolar.top是 Cpolar 提供的域名
- 11862是随机分配的公网端口号

通过Cpolar提供的公网地址和端口,尝试用从库开启主从同步:
主库记下File和Position字段的值:
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_Running和Slave_SQL_Running状态。如果都是Yes,恭喜你,主从同步配置成功!

7.保留固定TCP公网地址
使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化。

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

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

修改隧道信息,将保留成功的TCP端口配置到隧道中。
- 端口类型:选择固定TCP端口
- 预留的TCP地址:填写保留成功的TCP地址
点击更新。

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

这样我们的地址就永远不会发生变化啦!
总结
MySQL 主从复制不是“高级功能”,而是现代应用的基础设施标配。
花半天时间搭建一套主从架构,可能在未来某次深夜故障中,让你免于“背锅”、保住 KPI,甚至赢得团队信任。
今天就检查你的 MySQL 是否已配置主从?如果没有——现在就是最好的开始时机!
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站



