前言

在使用Mysql数据库的过程中,经常需要使用到备份和恢复数据库,最简单便捷的方法便是通过导出SQL数据文件和导入SQL数据文件来完成备份和恢复,但是随着项目的增长,数据量越来越大,每次恢复就成了一件很头疼的事情。

当我最近一次拉下项目中的5GB大小的数据库到本地进行恢复时,竟然需要耗时40-50分钟,想着日后的数据扩增,数据量越来越大,恢复成本也越来越高,于是便查阅了一些资料,可以通过以下设置来提高你的恢复效率.

1.更改备份参数

首先我们需要在备份数据库的时候,可以通过更改参数来提高我们的恢复效率.

mysqldump --extended-insert

使用--extended-insert=false导出的sql文件数据是这样的,每行一条insert语句,执行效率非常低下

使用--extended-insert=true导出的表如下图这种,一个很长的insert语句,会进行批量插入。

2.调整MYSQL快速插入参数

如果你的数据库储存引擎是MYISAM参数的话,可以将此参数设置到512M或256M,MyISAM会使用一种特殊的树状缓存来做出更快的批量插入。

相关文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_bulk_insert_buffer_size

该值默认是8M = 8388608byte

查看插入缓冲区大小

SHOW VARIABLES LIKE '%bulk%';
SET GLOBAL bulk_insert_buffer_size =1024*1024*512;
SET bulk_insert_buffer_size =1024*1024*256;
[mysqld]bulk_insert_buffer_size = 256M

对于Innodb引擎中,我们可以关闭一些系统检查项来实现更快的插入的方案.

//关闭自动提交SET autocommit=0;//关闭唯一检查set unique_checks = 0;//关闭外键检查SET foreign_key_checks=0;//备份的时候开启--extended-insert参数

4.实践

做好以上优化后,你的Mysql恢复效率瞬间会提升一个档次,在没做以上参数优化时,每次恢复数据库都需要耗费40分钟的时间,设置后只需要16分钟左右,我的数据库文件容量在5GB左右.

更多相关文章

  1. 2011.11.25——— android ndk 坑爹的cygwin
  2. Android(安卓)读取doc文件
  3. 如何去掉状态栏和内容视图之间的黑色阴影线
  4. Android(安卓)版本兼容 — Android(安卓)6.0 和 7.0后获取Mac地
  5. NPM 和webpack 的基础使用
  6. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  7. 读取android手机流量信息
  8. android 使用html5作布局文件: webview跟javascript交互
  9. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces

随机推荐

  1. XML指南——XML 语法
  2. PHP扩展之XML操作(五)——XMLWriter
  3. FusionCharts 2D柱状图和折线图的组合图
  4. XML指南——XML元素
  5. PHP扩展之XML操作(四)——XMLReader
  6. 解析XML的方法
  7. XML指南——XML 浏览器(Netscape、Explore
  8. PHP扩展之XML操作(三)——XML解析器使用及
  9. XML指南——察看 XML 文件
  10. XML指南——XML数据岛