MySQL数据库主从复制与读写分离

 更新时间:2021年12月27日 09:37:21   作者:ge_bq  
大家好,本篇文章主要讲的是MySQL数据库主从复制与读写分离,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

一.主从复制

       主从复制:在实际的生产中,为了解决Mysql的单点故障以及提高MySQL的整体服务性能,一般都会采用主从复制。即:对数据库中的数据、语句做备份。

在这里插入图片描述

主从复制三线程

       Mysql的主从复制中主要有三个线程:master(binlog dump thread)、slave(I/O thread 、SQL thread),Master一条线程和Slave中的两条线程。

主从复制过程

主从复制的过程:

master主要负责Master库中有数据更新的时候,会按照binlog格式,将更新的事件类型写入到主库的binlog文件中。Master会创建log dump线程通知Slave主库中存在数据更新。

I/O thread线程在Slave中创建,该线程用于请求Master,Master会返回binlog的名称以及当前数据更新的位置、binlog文件位置的副本。然后,将binlog保存在 relay log(中继日志) 中,中继日志也是记录数据更新的信息。

SQL线程也是在Slave中创建的,当Slave检测到中继日志有更新,会将更新的内容同步到Slave数据库中,保证了主从的数据的同步。

主从复制策略

主从复制的策略:

同步策略:Master会等待所有的Slave都回应后才会提交,这个主从的同步 的性能会严重的影响。

半同步策略:Master至少会等待一个Slave回应后提交。

异步策略:Master不用等待Slave回应就可以提交。

延迟策略:Slave要落后于Master指定的时间。
对于不同的业务需求,有不同的策略方案,但是一般都会采用最终一致性,不会要求强一致性,强一致性会严重影响性能。

主从复制高延迟

       主从复制高延迟的原因

master 服务器高并发,形成大量事务

网络延迟

主从硬件设备导致(cpu 主频、内存 io、硬盘 io)

本来就不是同步复制、而是异步复制

       主从复制高延迟的解决办法

从库优化 Mysql 参数。比如增大 innodb_buffer_pool_size,让更多操作在 - mysql 内存中完成,减少磁盘操作

从库使用高性能主机(高性能 cpu、大内存),避免使用虚拟云主机,使用物理主机,提升 I/O 吞吐量

从库使用 SSD 磁盘

网络优化,避免跨机房实现同步

二.读写分离

在这里插入图片描述

读写分离概念

       读写分离:读写分离是让主数据库处理事务性增、删、改操作(INSERT、UPDATE、DELETE),而从数据库处理查(SELECT) 操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库中。

读写分离原因与场景

       读写分离原因:读写量很大,为了提升数据库读写性能,将读写进行分离;多机房下如果写少读多,同时基于数据一致性考虑,只有一个主库存入所有的数据写入,本地再做从库提供读取,减少多机房间直接读取带来的时延。

       读写分离使用场景:程序使用数据库较多时,而更新少,查询多的情况下会考虑使用。利用数据库主从同步,再通过读写分离可以分担数据库压力,提高性能。

总结

到此这篇关于MySQL数据库主从复制与读写分离的文章就介绍到这了,更多相关MySQL主从复制与读写分离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL 事务autocommit自动提交操作

    MySQL 事务autocommit自动提交操作

    这篇文章主要介绍了MySQL 事务autocommit自动提交操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • SQL常用的四个排序函数梳理

    SQL常用的四个排序函数梳理

    这篇文章主要介绍了SQL常用的四个排序函数梳理,四个排序函数分别是SQL Server排序中经常用到的ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE()、下文简单分享,需要的小伙伴可以参考一下
    2022-07-07
  • 在Win下mysql备份恢复命令

    在Win下mysql备份恢复命令

    假设mysql安装在c:盘,mysql数据库的用户名是root,密码是123456,数据库名是database_name
    2010-02-02
  • MySQL查看日志简单易懂保姆级教程

    MySQL查看日志简单易懂保姆级教程

    这篇文章主要给大家介绍了关于MySQL查看日志简单易懂保姆级教程的相关资料,在操作MySQL数据库的时候会留下每一个步骤的痕迹,那怎么查看呢?就可以用日志去查看,需要的朋友可以参考下
    2023-08-08
  • mysql插入中文数据变成问号的解决方案

    mysql插入中文数据变成问号的解决方案

    这篇文章主要介绍了mysql插入中文数据变成问号的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • MySQL拼接字符串函数GROUP_CONCAT详解

    MySQL拼接字符串函数GROUP_CONCAT详解

    本文给大家详细讲解了MySQL的拼接字符串函数GROUP_CONCAT的几种使用方法以及详细示例,有需要的小伙伴可以参考下
    2020-02-02
  • CentOS7版本安装Mysql8.0.20版本数据库的详细教程

    CentOS7版本安装Mysql8.0.20版本数据库的详细教程

    这篇文章主要介绍了CentOS7版本安装Mysql8.0.20版本数据库的教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例

    MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例

    这篇文章主要介绍了MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例,需要的朋友可以参考下
    2014-04-04
  • mysql5.7.17压缩包安装配置方法图文教程

    mysql5.7.17压缩包安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.17压缩包安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • MySQL5.0存储过程教程

    MySQL5.0存储过程教程

    Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,在此感谢译者陈朋奕的努力.
    2008-04-04

最新评论