mysql主从复制怎么理解

mysql中,主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点,默认采用异步复制方式。采用主从复制的好处:1、让主库负责写,从库负责读,当主库出现了锁表的情景,通过读从库也可以保证业务的正常运作;2、可以做数据的热备;3、进行架构的扩展,可降低磁盘I/O访问的频率,提高单个机器的I/O性能。

mysql主从复制怎么理解

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

什么是mysql的主从复制?

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

为什么需要主从复制?

1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

2、做数据的热备

3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

mysql复制原理

原理:

(1)master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中;

(2)slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求master二进制事件

(3)同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

也就是说:

  • 从库会生成两个线程,一个I/O线程,一个SQL线程;

  • I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;

  • 主库会生成一个log dump线程,用来给从库I/O线程传binlog;

  • SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行;

注意:

  • –master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master一定要开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能)。

  • –slave开启两个线程:IO线程和SQL线程。其中:IO线程负责读取master的binlog内容到中继日志relay log里;SQL线程负责从relay log日志里读出binlog内容,并更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了。

  • –Mysql复制至少需要两个Mysql的服务,当然Mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。

  • –Mysql复制较好确保master和slave服务器上的Mysql版本相同(如果不能满足版本一致,那么要保证master主节点的版本低于slave从节点的版本)

  • –master和slave两节点间时间需同步

mysql主从复制怎么理解

具体步骤:

1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave

2、从库的IO线程和主库的dump线程建立连接。

3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。

4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。

5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中

6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

mysql主从形式

(一)一主一从

mysql主从复制怎么理解

(二)主主复制

mysql主从复制怎么理解

(三)一主多从

mysql主从复制怎么理解

(四)多主一从

mysql主从复制怎么理解

(五)联级复制

mysql主从复制怎么理解

mysql主从同步延时分析

mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高,slave的sql thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随机的,不是顺序,所以成本要高很多,另一方面,由于sql thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL thread所能处理的速度,或者当slave中有大型query语句产生了锁等待,那么延时就产生了。

解决方案:

1.业务的持久化层的实现采用分库架构,mysql服务可平行扩展,分散压力。

2.单个库读写分离,一主多从,主写从读,分散压力。这样从库压力比主库高,保护主库。

3.服务的基础架构在业务和mysql之间加入memcache或者redis的cache层。降低mysql的读压力。

4.不同业务的mysql物理上放在不同机器,分散压力。

5.使用比主库更好的硬件设备作为slave,mysql压力小,延迟自然会变小。

6.使用更加强劲的硬件设备

关于“mysql主从复制怎么理解”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“mysql主从复制怎么理解”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

文章标题:mysql主从复制怎么理解,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27346

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月20日 上午12:19
下一篇 2022年9月20日 上午12:20

相关推荐

  • excel下拉列表怎么添加新内容

    excel下拉列表添加新内容的方法: 1、说先点击添加好的下拉,查看里面的内容。 2、之后选择这个下拉,点击任务栏的“数据”。 3、之后在点击下面的“数据验证”。 4、在弹出的窗口中进入设置,在“来源”中添加要新增的内容, 最后点击确定即可。 以上就是“excel下拉列表怎么添加新内容”这篇文章的所…

    2022年8月27日
    1.2K00
  • windows谷歌浏览器控件怎么添加

    谷歌浏览器添加控件的方法: 1、首先打开谷歌浏览器点击“自定义及控制”。 2、随后点击“更多工具”打开“扩展程序”。 3、进入已经安装了的插件页面。 4、随后点击左上角的“扩展程序”。 5、之后打开谷歌网上应用店搜索“Tencent”。 6、将需要的程序添加到扩展程序即可。 读到这里,这篇“wind…

    2022年9月8日
    61600
  • ppt首行缩进怎么设置

    ppt首行缩进设置方法: 1、首先打开幻灯片文件,选择上面的“插入”。 2、之后去找到中间的“文本框设置”。 3、然后建立一些内容。 4、打开“段落样式”点击打开“属性设置”。 5、在段落下面的“缩进”中点击“特殊格式”选择“首行缩进”即可。 以上就是关于“ppt首行缩进怎么设置”这篇文章的内容,相…

    2022年8月31日
    1.1K00
  • windows谷歌浏览器开发者模式如何打开

    谷歌浏览器开发者模式打开方法: 1、点击右上角的图标先。 2、随后选择更多工具中的“开发者工具”。 3、随后即可进入“开发者模式”。 4、点击上方的选项可以设置开发者工具的位置。 关于“windows谷歌浏览器开发者模式如何打开”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“windows…

    2022年9月8日
    3.3K00
  • Word首页不显示页码怎么设置

    首页不显示页码设置方法: 1、首先打开word文档。 2、然后点击上面菜单栏中的“插入”。 3、之后去点击功能里面的“页码”。 4、最后先去选择当前的页码, 然后点击右侧的删除键即可。 到此,相信大家对“Word首页不显示页码怎么设置”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关…

    2022年8月31日
    1.2K00
  • vlookup函数显示溢出怎么解决

    解决方法 1、一般来说,提示查找错误都是因为没有正确选择对象。 2、例如上述情况,输入的函数为“=VLOOKUP(F:F,A:B,2,0)”导致出错。 3、这时候,我们只需要将函数改为“=VLOOKUP(F2,A:B,2,0)”即可解决问题。 4、如果遇到这类问题,较好的方法就是删除该函数,按照正确…

    2022年9月22日
    6.3K00
  • html有哪些常用的结构元素

    html常用的结构元素有:1、div,可定义文档中的分区或节,用于为HTML文档内大块(block-level)的内容提供结构和背景;2、section,表示文档中的一个区域;3、article,表示文档、页面、应用或网站中的独立结构,其意在成为可独立分配的或可复用的结构;4、aside,表示一个和…

    2022年9月16日
    70300
  • Mysql体系化之JOIN运算实例分析

    SQL中的JOIN SQL是如何理解JOIN运算 SQL对JOIN的定义 两个集合(表)做笛卡尔积后再按某种条件过滤,写出来的语法就是A JOIN B ON …。 理论上讲,笛卡尔积的结果集应该是以两个集合成员构成的二元组作为成员,不过由于SQL中的集合也就是表,其成员总是有字段的记录,而且也不支持…

    2022年9月6日
    68300
  • WebView File域同源策略绕过漏洞实例分析

    基本知识Android架构 Kernel内核层 漏洞危害极大,通用性强 驱动由于多而杂,也可能存在不少漏洞 Libaries系统运行库层 系统中间件形式提供的运行库 包括libc、WebKit、SQLite等等 AndroidRunTime Dalvik虚拟机和内核库 FrameWork应用框架层 …

    2022年9月21日
    77800
  • Google Chrome 85修复WebGL代码执行漏洞的示例分析

    Google修复了Google Chrome网页浏览器的WebGL(Web Graphics Library)组件中的一个释放后重用漏洞,成功利用该漏洞,攻击者可在浏览器的进程的上下文中执行任意代码。 WebGL是一个JavaScript API,兼容性浏览器使用该API,而不使用插件渲染交互性2D…

    2022年9月26日
    49600
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部