当前位置: 代码网 > it编程>数据库>Mysql > MySQL主从复制的原理及使用分析

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

2025年05月16日 Mysql 我要评论
怎么理解主从复制呢?主从复制,是指将一台redis服务器的数据,复制到其他的redis服务器。 前者称为主节点 (master),后者称为从节点 (slave); 数据的复制是单向的,只能由主节点到从

怎么理解主从复制呢?

主从复制,是指将一台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 然后在主从服务器查看

  • 主 :

  • 从:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com