日常工作中经常会有需要从mysqldump导出的备份文件恢复数据库的情况,相比物理备份恢复这种方式在恢复时间上往往显得力不从心。

本文就总结了几个对于逻辑备份恢复有加速作用的参数和操作

注意:我们的大前提是,恢复的目标数据库在恢复完成前,没有对外部提供服务

1. 参数调整

log-bin=OFF

恢复时开启二进制日志显然是无意义的,增加了不必要的IO。因此关闭该选项

sync_binlog=0

如果关闭了二进制日志,则这个选项不调整。

但如果因为特殊原因不能关闭二进制日志时,可以考虑减少binlog的fsync来减少磁盘IO压力。

Innodb_buffer_pool_size 尽可能大

尽可能大的配置Innodb_buffer_pool_size 来保证更多的脏页能够存在于BP中,增大潜在的写入合并的可能性,从而减少了磁盘的IO。

Innodb_logfile_size=1G 或更大

增大redolog的体积可以推迟blocking checkpoint发生的时间,也一定程度缓解adaptive flush的刷写频率。

调整这个参数对于恢复表体积远大于Innodb Buffer Size时非常有用。

Innodb_doublewrite=OFF

由于不存在宕机风险(即使宕机,也就是重新再恢复一次),所以doublewrite也可以不需要了。

Innodb_flush_log_at_trx_commit=0

同上,由于不存在宕机风险,无需那么卖力的刷写redo log。

Innodb_flush_neighbors=1

由于逻辑导入更多的是顺序写入,打开flush neighbor以后不单能把IO pattern更贴近顺序。同时,innodb的内部逻辑也会把多个page合并成一次IO进行提交,刷写性能更高。

2. 其他操作

当然对于逻辑恢复速度影响最大的还是索引的计算。

如果是5.5以后或者percona 5.1以后的版本,建议先建表,导入数据,最后创建索引这样的方式进行恢复。因为这些版本的create index或者alter table对于索引的创建做了优化处理。直接在数据上进行计算生成索引,而不是通过新建一张临时表、插入、替换老表的这种土掉渣的方式创建索引。

最新文章

  1. 图解TCP、IP笔记
  2. [Visual Studio]项目属性中继承的值怎么删除
  3. 如何去掉Eclipse里面自动追加的一些注释!!!内详
  4. 完整的Ajax实例
  5. USACO Runaround Numbers 模拟
  6. 如何把一个TXT文本文件按行数分割成多个文本文件
  7. UVa 10041 - Vito's Family
  8. 如何用photoshop把一张图片分割成几张图片呢?
  9. 201521123074 《Java程序设计》第8周学习总结
  10. 【伯乐在线】最值得阅读学习的 10 个 C 语言开源项目代码
  11. AWK编程
  12. paramiko模块(01-04节)、SSH
  13. CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”
  14. JavaScript.how-to-debug-javascript
  15. quartz之hello(java)
  16. Mockjs 前端接口数据模拟
  17. GATT scan的流程
  18. 领扣-754 到达终点数字 Reach a Number MD
  19. Py中pyplot之subplot例子【转载】
  20. linux 自定义yum仓库、repo文件 yum命令

热门文章

  1. php-fpm的配置和优化
  2. Find Minimum in Rotated Sorted Array leetcode java
  3. IOS中CocoaPods安装与使用
  4. Android UI系列-----ScrollView和HorizontalScrollView
  5. 【Vegas原创】SVN的搭建及安装使用
  6. GDAL 遥感图像处理后的数据保存为图像文件的实现方法
  7. Scala 深入浅出实战经典 第40讲:Set、Map、TreeSet、TreeMap操作代码实战
  8. AWVS漏洞测试-02节-添加一个简单的新闻系统
  9. 2016年象行中国(上海站)圆满结束,会议PPT分享
  10. Python: Catch multiple exceptions in one line (except block)