Mysql 复制的延迟优化

Mysql 复制过程中,数据延迟是很重要的问题,无法避免,只能尽量优化,使延时尽可能的小

要想优化复制过程,我们先看下复制的整个过程,看其中哪些步骤可以优化

这个过程中有3个主要的时间点

1. 主库写入二进制日志的时间

例如,有一个大的事务,假设要更新3万行数据,需要执行3分钟,那么只有等到全部更新完成,事务提交之后,才会被写入二进制日志

这就影响了binlog写入速度,可以分析一下,这个大的事务是否可以分成多个小事务,如果业务逻辑允许,可以一个事务更新3千行,分为10个事务,每个事务完成后就可以迅速复制到从库

这个过程中需要尽可能的加快写入速度,尽量小步快跑

2. 二进制日志的传输时间

图中的2、3步是日志传输过程,包括网络传输时间,和磁盘写入时间

一般主从服务器都在局域网内,网络不成问题,日志的写入方式是顺序写,所以,磁盘写操作也没问题

这个过程的主要优化思路就是尽量减少日志的传输量

需要分析一下数据库,看是不是所有库都需要进行复制,如果有不必要的库,可以通过参数 Binlog_Ignore_DB 进行忽略

3. 从服务器中SQL回放的时间

默认情况下只有一个SQL线程,串行执行日志的回放过程

Mysql 5.7 已经很好的支持了多线程复制,如果有可能,可以选择这个版本,然后设置好多线程复制,来加快回放速度

5.7 多线程复制的配置可以参考之前的一篇文章

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏烂笔头

Ubuntu上通过nginx部署Django笔记

目录[-] Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。今天在Ubuntu上使用Nginx部署Django...

4074
来自专栏nice_每一天

excel导出使用get请求参数过长问题

excel导出功能时,使用的是window.location.href=url也就是get请求。当传入参数过长的时候就报了414,地址过长的错误。

1372
来自专栏CaiRui

nginx查看日志

nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 ...

4146
来自专栏极客慕白的成长之路

Vagrant SSH has invalid permissions的解决与分析

我在mac下的NTFS分区里运行Vagrant up,正常启动虚拟机,但是ssh连接的时候却出现了问题,如下图:

1442
来自专栏Jeffery的项目过程

云主机搭建Git服务器

版本控制是一个项目不可或缺的一部分,可以帮助开发者追踪文件的变更、分支管理、版本回退、版本发布等。所以建议当开始一个项目或者有想法进行开发时,都尽量考虑用上版本...

4292
来自专栏散尽浮华

Gitlab上采用rpm方式快速安装的操作记录

之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老。下面介绍使用rpm包安装G...

2505
来自专栏张戈的专栏

Linux服务器的进程查看命令详解

Linux 服务器正常启动后,提供服务时会调用程序,占用进程。这时候我们如何查看系统中有哪些进程在被调用呢?我们可以通过以下命令来查看。 一、ps 命令 ps ...

3K9
来自专栏前端小叙

windows mongodb最常用命令简单归纳

在windows安装好了windows,首先记得要把mongodb bin目录路径放在 系统环境变量的path中,确定之后即配置好了mongo的环境变量,在do...

3826
来自专栏WebDeveloper

golang-protobuf使用

Protocol buffers是一个灵活的、高效的、自动化的用于对结构化数据进行序列化的协议,与XML、json相比,Protocol buffers序列化后...

2433
来自专栏Angular&服务

ionic3 在app首页跳转重定向报错

2252

扫码关注云+社区