MySQL主从复制的原生安装配置方案(非Docker环境)

 更新时间:2026年05月31日 08:52:52   作者:朝阳581  
本文介绍了MySQL主从复制的原生安装配置方案(非Docker环境),包含主库和从库的完整配置步骤,并通过代码示例讲解的非常详细,需要的朋友可以参考下

MySQL 主从复制 — 双服务器灾备方案(原生安装)

适用场景:MySQL 直接安装在系统上(非 Docker)

环境要求

项目主库从库
服务器IP192.168.1.100(示例)192.168.1.101(示例)
MySQL版本5.6.515.6.51
端口33063306

第一部分:主库配置

步骤 1:开启 binlog

Linux 编辑 /etc/my.cnf,Windows 编辑 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini

[mysqld]
log-bin = mysql-bin
server-id = 1
binlog-format = ROW
expire-logs-days = 7

重启 MySQL:

# Linux
systemctl restart mysql
# Windows
net stop mysql56 && net start mysql56

验证:

SHOW MASTER STATUS;

步骤 2:创建复制用户

CREATE USER 'replicator'@'%' IDENTIFIED BY '你的密码';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

步骤 3:开放防火墙

# Linux
firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload
# Windows(PowerShell)
New-NetFirewallRule -DisplayName "MySQL" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow

第二部分:从库配置

步骤 1:配置 server-id

[mysqld]
server-id = 2

重启 MySQL。

步骤 2:复制数据

主库导出

mysqldump -u root -p --all-databases --master-data --single-transaction > master_dump.sql

传送到从库

scp master_dump.sql root@192.168.1.101:/tmp/

从库恢复

mysql -u root -p < /tmp/master_dump.sql

步骤 3:启动复制

CHANGE MASTER TO
  MASTER_HOST = '主库IP',
  MASTER_PORT = 3306,
  MASTER_USER = 'replicator',
  MASTER_PASSWORD = '你的密码',
  MASTER_LOG_FILE = 'mysql-bin.xxxxxx',
  MASTER_LOG_POS = xxxx;

START SLAVE;

MASTER_LOG_FILEMASTER_LOG_POS 从主库 SHOW MASTER STATUS 获取

步骤 4:检查状态

SHOW SLAVE STATUS\G

必须全是 Yes

字段必须等于
Slave_IO_RunningYes
Slave_SQL_RunningYes
Seconds_Behind_Master0

第三部分:故障切换(主库挂了)

  1. 从库上检查已追平:SHOW SLAVE STATUSSlave has read all relay log
  2. 提升为新的主库:
STOP SLAVE;
RESET SLAVE ALL;
SET GLOBAL read_only = OFF;
  1. 应用连接 IP 改为从库的 IP,重启应用

一句话:主库开 binlog → 建复制用户 → 导出数据给从库 → 从库导入 → CHANGE MASTER → START SLAVE

以上就是MySQL主从复制的原生安装配置方案(非Docker环境)的详细内容,更多关于MySQL主从复制原生安装配置的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL故障排查与生产环境优化指南

    MySQL故障排查与生产环境优化指南

    本文基于 MySQL 8.0 生产环境,整理高频故障排查方案、全维度优化配置、SQL 性能调优,包含完整可执行代码,补充关键知识点,简洁易懂、不与原文重复,需要的朋友可以参考下
    2026-04-04
  • MySQL报错cannot add foreign key constraint的问题解决方法

    MySQL报错cannot add foreign key constraint的问题解决方法

    这篇文章主要介绍了MySQL报错cannot add foreign key constraint的问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Mysql 远程连接遇到的问题排查

    Mysql 远程连接遇到的问题排查

    无法连接到远程MySQL数据库可能是由于多种原因导致的,本文主要介绍了Mysql远程连接遇到的问题排查,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Mysql数据库中子查询的使用

    Mysql数据库中子查询的使用

    本文给大家分享mysql数据库中子查询的使用,非常不错具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • Windows7下Python3.4使用MySQL数据库

    Windows7下Python3.4使用MySQL数据库

    这篇文章主要为大家详细介绍了Windows7下Python3.4使用MySQL数据库,MySQL Community Server的安装步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • MySQL中建表时可空(NULL)和非空(NOT NULL)的用法详解

    MySQL中建表时可空(NULL)和非空(NOT NULL)的用法详解

    这篇文章主要介绍了MySQL中建表时可空(NULL)和非空(NOT NULL)的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • mysql和oracle默认排序的方法 - 不指定order by

    mysql和oracle默认排序的方法 - 不指定order by

    这篇文章主要介绍了mysql和oracle默认排序的方法 - 不指定order by。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MySQL存储过程的权限问题小结

    MySQL存储过程的权限问题小结

    这篇文章主要介绍了MySQL存储过程的权限问题小结及mysql 创建存储过程权限问题,感兴趣的朋友一起看看吧
    2018-04-04
  • 10个MySQL 高级用法

    10个MySQL 高级用法

    这篇文章分享了10个MySQL高级SQL技巧,包括CTE、窗口函数、条件聚合、自连接、EXISTS替代IN、JSON函数、生成列、多表更新、GROUP_CONCAT和INSERT...ON DUPLICATE KEY UPDATE,这些技巧可以让数据库操作更高效、简洁,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • MySQL数据被误删的解决方法

    MySQL数据被误删的解决方法

    之前被要求开发一个OA项目,需求还要及时生效(一边开发一边使用),有一次生产环境的一个bug本地没办法复现,在调试的过程中,我俩当作开发环境很自然的把数据给删了,所以在这里记录一下MySQL数据备份和恢复的方法及操作,希望可以帮助到跟我一样的小伙伴
    2024-01-01

最新评论