可通过宝塔面板配置MySQL主从复制实现读写分离与故障转移:需确保主从版本兼容、网络互通;主库启用binlog并设server-id=1;创建REPLICATION SLAVE专用账号;记录主库binlog文件名与position;从库设server-id=2,执行CHANGE MASTER TO连接主库并启动复制,最后验证同步状态。

如果您在宝塔面板中部署了 MySQL 数据库,希望提升数据可靠性与服务连续性,则可通过配置主从复制实现读写分离与故障转移基础能力。以下是完成该配置的具体操作步骤:
一、确认主从服务器环境准备
主从复制要求主库(Master)与从库(Slave)运行相同或兼容的 MySQL 版本,并确保网络互通、端口开放、用户权限正确。宝塔面板需已安装并分别管理两台服务器上的数据库服务。
1、登录主服务器宝塔面板,进入【数据库】页面,记录主库 MySQL 的版本号与运行状态。
2、登录从服务器宝塔面板,核对 MySQL 版本是否与主库一致,不建议主库为 8.0 而从库为 5.7。
3、在主服务器防火墙中放行 MySQL 默认端口(3306),并确认宝塔安全组或云服务商安全策略允许该端口入站。
二、配置主库(Master)开启二进制日志
主库必须启用 binlog 并设置唯一 server-id,这是主从同步的数据源基础。宝塔默认未启用 binlog,需手动修改配置文件。
1、在宝塔面板中点击【软件商店】→ 找到已安装的 MySQL → 点击【设置】→ 【配置修改】。
2、在配置文件中找到 [mysqld] 段落下方添加以下三行:
log-bin = mysql-bin
server-id = 1
binlog-format = ROW
3、保存后点击【重启】按钮使配置生效。
4、通过【终端】执行命令验证:mysql -uroot -p -e "show variables like 'log_bin';",返回 ON 表示开启成功。
三、创建用于复制的专用账号
主库需创建仅具备 REPLICATION SLAVE 权限的账号,避免使用 root 或高权限账户进行同步,符合最小权限原则。
1、进入主服务器宝塔面板【数据库】→ 【phpMyAdmin】,选择【新建】→ 【用户账户】。
2、填写用户名(如 repl_user)、主机(建议填 % 或指定从库 IP)、密码(强密码,记录备用)。
3、在【全局权限】中仅勾选 REPLICATION SLAVE,取消其他所有权限勾选。
4、点击【执行】完成创建。
5、在终端中执行:mysql -uroot -p -e "flush privileges;" 刷新权限表。
四、获取主库当前二进制日志位置
从库启动复制前,必须准确获取主库当前的 binlog 文件名与 position 值,作为同步起点,否则将导致数据不一致或同步失败。
1、在主服务器终端中执行:mysql -uroot -p -e "show master status;"。
2、记录输出中的 File 列(如 mysql-bin.000002)和 Position 列(如 154)。
3、此结果仅在主库未执行新写入操作时有效;若存在业务写入,请先锁定表或停写再获取。
五、配置从库(Slave)连接主库并启动复制
从库需设置自身 server-id、指定主库连接参数及起始 binlog 位置,之后启动 I/O 和 SQL 线程完成数据拉取与回放。
1、在从服务器宝塔面板【数据库】→ 【配置修改】中,在 [mysqld] 下添加:server-id = 2,保存并重启 MySQL。
2、进入从服务器 phpMyAdmin 或终端,执行 CHANGE MASTER TO 命令(替换对应值):
CHANGE MASTER TO MASTER_HOST='主库公网或内网IP', MASTER_USER='repl_user', MASTER_PASSWORD='刚才设置的密码', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
3、执行:START SLAVE;
4、执行:SHOW SLAVE STATUS\G,检查 Seconds_Behind_Master 是否为 0 且 Slave_IO_Running 与 Slave_SQL_Running 均为 Yes。










