MySQL主从复制的原理及使用分析

 更新时间:2025年05月16日 09:34:34   作者:Pseudo…  
这篇文章主要介绍了MySQL主从复制的原理及使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

怎么理解主从复制呢?

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。 前者称为主节点 (master),后者称为从节点 (slave); 数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点 (或没有从节点),但一个从节点只能有一个主节点。

一台主 MySQL 服务器带两台从 MySQL 服务器做数据复制前端应用在进行数据库写操作时,对主服务器进行操作,在进行数据库读操作时对两台从服务器进行操作,这样大量减轻了对主服务器的压力。

一. MySQL 主从复制原理

MySQL 的主从复制和 MySQL的读写分离两者有着紧密联系,首先要部署主从复制,只有主从复制完成了,才能在此基础上进行数据的读写分离。

1. MySQL 支持的复制类型

①基于语句的复制。在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句,MySQL 默认采用基于语句的复制,效率比较高。

②基于行的复制。把改变的内容复制过去,而不是把命令在从服务器上执行一遍

③混合类型的复制。默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。

2. 复制的工作过程

①在每个事务更新数据完成之前,Master 将这些改变记录进二进制日志。写入二进制日志完成后,Master 通知存储引擎提交事务。

②Slave 将 Master 的 Binary log 复制到其中继日志(Relay log)。首先,Slave 开始一个工作线程--I/0 线程,I/0 线程在 Master 上打开一个普通的连接,然后开始 Binlog dump process。Binlog dump process 从 Master 的二进制日志中读取事件,如果已经跟上 Master,它会睡眠并等待 Master 产生新的事件。I/0 线程将这些事件写入中继日志。

③ SQL slave thread(SQL 从线程)处理该过程的最后一步。SQL 线程从中继日志读取事件,并重放其中的事件而更新 Slave 数据,使其与 Master 中的数据保持一致。只要该线程与 I/0 线程保持一致,中继日志通常会位于0S 的缓存中,所以中继日志的开销很小。复制过程有一个很重要的限制,即复制在 S1ave 上是串行化的,也就是说 Master 上的并行更新操作不能在 Slave 上并行操作。

二. 案例实施

1. 搭建MySQL主从复制在所有节点进行时间同步

关闭防火墙

安装数据库参考前面的文章

这个用的是脚本安装的mysql

直接用bash执行脚本

设置配置文件

2. 配置master主服务器登录MySQL程序

给从服务器授权

在show命令前用flush privileges;更新一下

其中 File 列显示日志名,Position 列显示偏移量,这两个值在后面配置从服务器的时候需要。Slave 应从该点上进行新的更新。

3. 配置Slave 从服务器在/etc/my.cnf 中修改或者增加下面内容

这里要注意 server-id 不能相同。

重启服务器

登录到mysql,配置同步

4. 验证主从复制效果在主从服务器登录查看库

两台数据库执行结果应该相同

  • 主:

  • 从:

在主服务器创建数据库 aaa 然后在主从服务器查看

  • 主 :

  • 从:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL远程连接配置:解决Host XXX is not allowed to connect错误

    MySQL远程连接配置:解决Host XXX is not allowed&nb

    本文详细解析了MySQL远程连接时出现的'Host is not allowed to connect'错误,提供了完整的配置指南,从权限修改到安全加固,帮助用户快速解决连接问题,感兴趣的可以了解一下
    2026-03-03
  • mysql数据库查询基础命令详解

    mysql数据库查询基础命令详解

    这篇文章主要介绍了mysql数据库查询基础命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • MySQL数据库之数据表操作DDL数据定义语言

    MySQL数据库之数据表操作DDL数据定义语言

    这篇文章主要介绍了MySQL数据库之数据表操作DDL数据定义语言,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 如何使用mysqladmin获取一个mysql实例当前的TPS和QPS

    如何使用mysqladmin获取一个mysql实例当前的TPS和QPS

    这篇文章主要介绍了如何使用mysqladmin这个工具来获取一个mysql实例当前的TPS和QPS,帮助大家更好的管理数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL中sum函数使用的实例教程

    MySQL中sum函数使用的实例教程

    这篇文章主要给大家介绍了关于MySQL中sum函数使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 使用mysqladmin检测MySQL运行状态的教程

    使用mysqladmin检测MySQL运行状态的教程

    这篇文章主要介绍了使用mysqladmin检测MySQL运行状态的教程,包括mysqladmin工具简单的awk使用,需要的朋友可以参考下
    2015-06-06
  • 关于pt-archiver和自增主键的那些事

    关于pt-archiver和自增主键的那些事

    mysql是我们经常会用到的一个数据库,mysql数据库中有一个主键生成规则,就是自增,这篇文章主要给大家介绍了关于pt-archiver和自增主键的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • MySQL常用函数详解之日期函数

    MySQL常用函数详解之日期函数

    本文详解MySQL日期函数,涵盖获取、计算、格式化及比较,结合统计销售额、计算注册时长等实战案例,帮助掌握日期处理技巧,感兴趣的朋友一起看看吧
    2025-06-06
  • MySQL CRUD 查询、插入、更新、删除全实战指南

    MySQL CRUD 查询、插入、更新、删除全实战指南

    在 MySQL日常开发中CRUD是最核心的高频操作,本文基于实战场景,全面拆解MySQL的增删改查操作,所有SQL语句均采用小写形式,贴合实际开发规范,同时涵盖聚合查询、分组统计等进阶内容,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • MySQL中VARCHAR与CHAR格式数据的区别

    MySQL中VARCHAR与CHAR格式数据的区别

    char是一种固定长度的类型,varchar则是一种可变长度的类型,那么他们具体使用过程中有什么区别吗
    2015-09-09

最新评论