首页 > 数据库 >mysql如何减少主从复制延迟

mysql如何减少主从复制延迟

时间:2023-07-23 17:34:26浏览次数:45  
标签:主库 binlog 主从复制 slave mysql 延迟

如果延迟比较大,就先确认以下几个因素:

  1.  从库硬件比主库差,导致复制延迟 
  2. 主从复制单线程,如果主库写并发太大,来不及传送到从库,就会导致延迟。更高版本的mysql可以支持多线程复制。
  3. 慢sql语句过多
  4. 网络延迟
  5. master负载 (主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层) 
  6.  slave 负载      

  一般的做法是,使用多台salve来分摊读请求,再从这些slave中取一台专用的服务器,只作为备份用,不进行其他任何操作。 

  2个可以减少延迟的参数:

  -slave-net-timeout=seconds单位为秒,默认设置为3600秒   参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据

  –master-connect-retry=seconds 单位为秒 默认设置为 60秒   参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试。

  通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟

MySQL数据库主从同步延迟解决方案

   最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave。

 

 

 

      

  

  

 

标签:主库,binlog,主从复制,slave,mysql,延迟
From: https://www.cnblogs.com/yypc/p/17575292.html

相关文章

  • Ubantu下安装mysql8.0密码重置
    ubantu下安装mysql8.0使用推荐的aptitude来安装,省心省力。sudoaptitudeinstallmysql-server无脑“Y“安装成功。sudomysql-uroot-p会让你输入密码,密码???什么密码,什么时候有密码了。这种方式安装的貌似没有给设置密码的机会。所以需要重新设置。首先编辑sudovim/etc......
  • mysql分区表导致的死锁
    死锁异常:org.springfreamwork.dao.DeadlockLoserDataAccessException:......Cause:java.sql.BatchUpdateException:Deadlockfoundwhentryingtogetlock;tryrestartingtransactionat.....1、java代码如下@Transactionalpublicvoidhandle(){selectDao.select1(...);......
  • MySql —— Buffer Pool
    有了缓冲池后:当读取数据时,如果数据存在于BufferPool中,客户端就会直接读取BufferPool中的数据,否则再去磁盘中读取。当修改数据时,首先是修改BufferPool中数据所在的页,然后将其页设置为脏页,最后由后台线程将脏页写入到磁盘。 BufferPool有多大?BufferPool是在M......
  • 如何配置Apache24+PHP8+Mysql8包括安装
    一、PHP版本的选择与安装配置PHP官方PHP下载页面选择自己想要的版本点击Zip链接即可下载,x64是操做系统的位数,ThreadSafe是线程安全版本(多线程版Apache服务器使用),NoneThreadSafe是非线程安全版(单线程版IIS服务器使用)然后解压出来后把Apache24根目录的php.ini-developm......
  • MySQL - 2
    Smiling&Weeping----我用什么才能留住你?我给你瘦弱的街道、绝望的日落、荒郊的月亮。我给你一个久久望着孤月的人的悲伤。......
  • Mysql手贱修改了User表下的配置,导致本地连接不上去了,或者忘记密码
    ①停止MySQL服务查看mysql服务状态:systemctlstatusmysqld停止mysql服务:systemctlstopmysqld②特殊命令启动mysql服务mysqld--skip-grant-tables& 该命令可以绕过user表,免密登录进入mysql③登录mysql服务器现在直接登录mysql,不用输入密码④修改user表的配置,或者创建......
  • MYSQL
    Smiling&Weeping----或许换个时间,我们真的很合适1.1初识数据库数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database,DB)。用来管理数据库的计算机系统称为数据库管理系统(DatabaseManagemen......
  • MySQL之存储过程(循环)
    MySQL之存储过程变量@@是系统变量@是用户自定义的变量系统变量系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。查看系统变量模板 SHOW[SESSION|GLOBAL]VARIABLES;--查看所有系统变量 SHOW[S......
  • go语言mysql驱动
    连接数据库是典型的CS编程,服务器端被动等待客户端建立TCP连接,并在此连接上进行特定的应用层协议。但一般用户并不需要了解这些细节,这些都被打包到了驱动库当中,只需要简单的调用打开就可以指定协议连接到指定的数据库。数据库的种类和产品太多,协议太多,Go官方很难提供针对不同数据......
  • mysql auto_increment怎么删除
    MySQL中的auto_increment如何删除在MySQL中,auto_increment是一个非常有用的功能,它允许我们在插入数据时自动为表的主键字段生成唯一的递增值。然而,有时候我们可能需要删除表中的某些数据行,这就会导致auto_increment值出现断层。本文将介绍如何在MySQL中删除数据行时保持auto_incre......