MySQL主从同步(复制)操作实战记录

 更新时间:2025年11月13日 08:32:29   作者:Harvey66  
MySQL主从同步是一种常见的数据库复制策略,用于提升系统的可扩展性、容错性和数据安全性,这篇文章主要介绍了MySQL主从同步(复制)操作实战的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

首先得有2台服务器,其中一台上的MySQL为主库,另外一台上的MySQL为从库

主库操作

1、修改配置

# Master - 主从同步设置,需要开记binlog
server-id = 1 # 要唯一
# bin log 位置
log_bin = /var/lib/mysql/mysql-bin

重启 MySQL 让配置生效

2、创建用于从库登陆的用户

# 创建用户
CREATE USER 'slave1'@'x.x.x.x' IDENTIFIED BY 'password';
# 赋予用户slave1复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'x.x.x.x';
  • x.x.x.x 是从库服务器IP
  • slave1 可以改成自己喜欢的名称
  • password 设置你喜欢的登陆密码

3、将数据导出

  • 锁表-只读
FLUSH TABLES WITH READ LOCK; 
  • 显示 master 信息
SHOW MASTER STATUS; 

记住红色位置的内容,从库需要用到

  • 将数据导出
mysqldump -u root -p --all-databases --master-data > dbdump.sql
  • 解开表(可读可写)
UNLOCK TABLES; 

4、将dbdump.sql文件发送到从库的主机上

以你喜欢的方式就行,能传到从库的主机就行

从库操作

1、修改配置

# slave - 主从同步设置,需要开记binlog
server-id = 2 # 要唯一
# binlog 位置
log_bin = /var/lib/mysql/mysql-bin

重启 MySQL 让配置生效

2、导入从主库第三步导出的数据

mysql -u root -p < /home/ubuntu/dbdump.sql

3、建立与主库的连接

  • 停止复制状态
STOP SLAVE; 
  • 与主库建立连接,从而同步
CHANGE MASTER TO
MASTER_HOST='b.b.b.b',
MASTER_PORT=8036,
MASTER_USER='slave1',
MASTER_PASSWORD='sync900966',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3784;

MASTER_HOST - 主库服务器IP
MASTER_USER - 主库操作第二步设置的用户
MASTER_PASSWORD - 主库操作第二步设置的密码
MASTER_LOG_FILE - 主库操作第三步 master 信息 - File
MASTER_LOG_POS - 主库操作第三步 master 信息 - Position

至此不出意数据应该可以同步了

主从复制有三种同步方式

  • 异步复制:主库执行完事务后,不等待从同库确认,这是默认的
  • 半异步复制:主库执行完事务后,至少等到有一个从同库确认
  • 同步复制:主库执行完事务后,等到所有从同库确认

问题排查

  1. 不要使用域名,我刚开始使用域名,结果同步不了
  2. 在主库授予登陆IP要和从库IP一致
  3. server-id 从库与主库不能相同且要唯一

可能用到命令

  • 查看从服务器(Slave)复制状态
SHOW SLAVE STATUS;

如果正常的话
Slave_IO_State: Waiting for master to send event,如果有错误,也会在这个字段提示
xxx_xx_Running 这几个字段正常是 Yes

  • 查看主服务器(Master)状态
SHOW MASTER STATUS;
  • 停止复制线程
STOP SLAVE;
  • 启动复制线程
START SLAVE;
  • 显示线程列表
SHOW PROCESSLIST;

总结 

到此这篇关于MySQL主从同步(复制)操作的文章就介绍到这了,更多相关MySQL主从同步(复制)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL高频面试题完整版(由浅到深,面试必背)

    MySQL高频面试题完整版(由浅到深,面试必背)

    MySQL作为目前最广泛使用的关系型数据库之一,许多互联网大厂在招聘时都会重点考察应聘者对数据库相关知识的掌握程度,这篇文章主要介绍了MySQL高频面试题的相关资料,需要的朋友可以参考下
    2026-05-05
  • mysql8.0 my.ini 如何永久修改时区

    mysql8.0 my.ini 如何永久修改时区

    这篇文章主要介绍了mysql8.0 my.ini 如何永久修改时区,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    mysql 中 replace into 与 insert into on duplicate key update 的

    这篇文章主要介绍了mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点,结合实例形式分析了replace into 与 insert into on duplicate key update的功能、基本用法与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • 一文带大家深入了解下MySQL中的慢查询日志

    一文带大家深入了解下MySQL中的慢查询日志

    慢查询日志(Slow Query Log) 是 MySQL 内置的一种日志功能,用于记录执行时间超过指定阈值的 SQL 语句,下面小编就和大家简单聊聊慢查询日志的相关配置和应用吧
    2026-01-01
  • MySQL 联合索引与Where子句的优化 提高数据库运行效率

    MySQL 联合索引与Where子句的优化 提高数据库运行效率

    网站系统上线至今,数据量已经不知不觉上到500M,近8W记录了。涉及数据库操作的基本都是变得很慢了,这篇文章主要是说明配置并不是数据库操作慢的主要原因
    2012-01-01
  • MySQL数据库表被锁、解锁以及删除事务详解

    MySQL数据库表被锁、解锁以及删除事务详解

    这篇文章主要给大家介绍了关于MySQL数据库表被锁、解锁以及删除事务的相关资料,需要的朋友可以参考下
    2022-05-05
  • mysql日志触发器实现代码

    mysql日志触发器实现代码

    这篇文章主要介绍了mysql日志触发器实现代码,需要的朋友可以参考下
    2020-02-02
  • windows环境下mysql的解压安装及备份和还原

    windows环境下mysql的解压安装及备份和还原

    这篇文章主要介绍了windows环境下mysql的解压安装及备份和还原,需要的朋友可以参考下
    2017-09-09
  • mysql错误处理之ERROR 1665 (HY000)

    mysql错误处理之ERROR 1665 (HY000)

    最近一直在mysql的各个版本直接徘徊,这中间遇到了各种各样的错误,将已经处理完毕的几个错误整理了一下,分享给大家,这次我们来看看错误提示 ERROR 1665 (HY000)
    2014-07-07
  • MySql update语句的详细用法

    MySql update语句的详细用法

    这篇文章主要给大家介绍了关于MySql update语句的详细用法,Update 是SQL中用于更新表格中已有记录的命令,通过使用Update命令,您可以更新表格中的一行或多行记录,并根据需要更改它们的值,需要的朋友可以参考下
    2023-11-11

最新评论