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 DEFINER具体使用详解

    MySQL DEFINER具体使用详解

    在 MySQL 数据库中,在创建视图及函数的时候,你有注意过 definer 选项吗?本篇文章主要介绍下 MySQL 中 definer 的含义及作用,感兴趣的可以了解一下
    2021-08-08
  • mysql分页的limit参数简单示例

    mysql分页的limit参数简单示例

    这篇文章主要给大家介绍了关于mysql分页的limit参数的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化

    MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化

    本文整理了一些MySQL的通用优化方法,做个简单的总结分享,大部分情况下都介绍了适用的场景,如果你的应用场景和本文描述的不太一样,那么建议根据实际情况进行调整
    2018-03-03
  • Mac Homebrew安装的MySQL无法远程登录的解决

    Mac Homebrew安装的MySQL无法远程登录的解决

    这篇文章主要介绍了Mac Homebrew安装的MySQL无法远程登录的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 基于MySQL的存储引擎与日志说明(全面讲解)

    基于MySQL的存储引擎与日志说明(全面讲解)

    下面小编就为大家分享一篇基于MySQL的存储引擎与日志说明(全面讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • MySQL8.0窗口函数入门实践及总结

    MySQL8.0窗口函数入门实践及总结

    这篇文章主要给大家介绍了关于MySQL8.0窗口函数入门实践及总结的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MySQL8.0具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • MySQL 数据类型详情

    MySQL 数据类型详情

    这篇文章主要介绍了MySQL 数据类型,数值类型分类又分严格数值类型和近似数值数据类型,下面文章围绕MySQL 数据类型展开内容,需要的朋友可以参考一下
    2021-11-11
  • Mysql索引详细介绍

    Mysql索引详细介绍

    这篇文章主要介绍了Mysql索引详细介绍,本文讲解了Mysql索引简介、设计索引的原则、如何使用索引等内容,需要的朋友可以参考下
    2014-07-07
  • mysql通过INSERT IGNORE INTO插入拼音字符无效问题及解决

    mysql通过INSERT IGNORE INTO插入拼音字符无效问题及解决

    这篇文章主要介绍了mysql通过INSERT IGNORE INTO插入拼音字符无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • MySQL安装后不能用是什么情况该如何解决

    MySQL安装后不能用是什么情况该如何解决

    之前安装过MYSQL好像不用手动启动服务,具体也忘记了,但我上回给公司安装的那个是要手动安装服务的,如果mysql刚刚安装不能用,可能是服务没有安装
    2014-03-03

最新评论