mysql超大sql怎么还原_关于Mysql 大型SQL文件快速恢复方案
在使用Mysql数据库的过程中,经常需要使用到备份和恢复数据库,最简单便捷的方法便是通过导出SQL数据文件和导入SQL数据文件来完成备份和恢复,但是随着项目的增长,数据量越来越大,每次恢复就成了一件很头疼的事情。
当我最近一次拉下项目中的5GB大小的数据库到本地进行恢复时,竟然需要耗时40-50分钟,想着日后的数据扩增,数据量越来越大,恢复成本也越来越高,于是便查阅了一些资料,可以通过以下设置来提高你的恢复效率.
1.更改备份参数
首先我们需要在备份数据库的时候,可以通过更改参数来提高我们的恢复效率.
mysqldump --extended-insert
mysqldump的--extended-insert参数表示批量插入,会将多个insert语句合并成一个语句,与没有开启-extended-insert的备份导入效率相差3-4倍.
使用--extended-insert=false导出的sql文件数据是这样的,每行一条insert语句,执行效率非常低下
使用--extended-insert=true导出的表如下图这种,一个很长的insert语句,会进行批量插入。
2.调整MYSQL快速插入参数
如果你的数据库储存引擎是MYISAM参数的话,可以将此参数设置到512M或256M,MyISAM会使用一种特殊的树状缓存来做出更快的批量插入。
该值默认是8M = 8388608byte
查看插入缓冲区大小
SHOW VARIABLES LIKE '%bulk%';
设置插入缓冲区大小(全局)
SET GLOBAL bulk_insert_buffer_size =1024*1024*512;
设置插入缓冲区大小(session)
SET bulk_insert_buffer_size =1024*1024*256;
如果需要设置Mysql重新启动时,依然保留该值,需要将这段配置添加了my.cnf
[mysqld]
bulk_insert_buffer_size = 256M
3.关闭检查项
对于Innodb引擎中,我们可以关闭一些系统检查项来实现更快的插入的方案.
//关闭自动提交
SET autocommit=0;
//关闭唯一检查
set unique_checks = 0;
//关闭外键检查
SET foreign_key_checks=0;
//备份的时候开启--extended-insert参数
4.实践
做好以上优化后,你的Mysql恢复效率瞬间会提升一个档次,在没做以上参数优化时,每次恢复数据库都需要耗费40分钟的时间,设置后只需要16分钟左右,我的数据库文件容量在5GB左右.
以上就这些,途观有更好的方案和建议的话,希望各位同学一起探讨,Happy Coding。
mysql超大sql怎么还原_关于Mysql 大型SQL文件快速恢复方案相关推荐
- mysql超大表处理方式是_第29问:MySQL 的复制心跳说它不想跳了
问题 最近年底,大家的数据库经常跑批量大事务,会发现复制突然断开,报错"心跳与本地信息不兼容": 会是什么原因? 实验 我们先来复现一下,再进行分析. 宽油,做一对主从数据库: 我 ...
- mysql的sql执行原理图_性能测试MySQL之SQL运行原理
一,MySQL运行原理 两个一样的图 1,SQL语句执行的过程详细说明 如上图所示,当向MySQL发送一个请求的时候,MySQL到底做了什么: a, 客户端发送一条查询给服务器. b, 服务器先检查查 ...
- mysql sql并列排名_教你用SQL实现统计排名
前言: 在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名.排名也有多种排名方式,如直接排名.分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题. 创 ...
- mysql 自动化运维工具_部署MySQL自动化运维工具inception+archer
*************************************************************************** 部署MySQL自动化运维工具inception+ ...
- mysql数据库后台命令备份_使用MySQL命令行备份及恢复数据库
使用MySQL命令行备份及恢复数据库 下文对使用MySQL命令行备份及恢复数据库的方法及步骤进行了详细的介绍,如果您对MySQL命令行方面感兴趣的话,不妨一看. AD: 使用MySQL命令行,可以实现 ...
- mysql 全库 备份 恢复_从MySQL全库备份中恢复某个库和某张表
在Mysqldump官方工具中,如何只恢复某个库呢? 全库备份 [root@HE1 ~]# mysqldump -uroot -p --single-transaction -A --master-d ...
- mysql和python的关系_八MySQL与Python
<1>数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据. ...
- mac下安装mysql 5.7.11卡住_【mysql】Mac下安装mysql5.7 完整步骤,大坑已解决
最近使用Mac系统,准备搭建一套本地web服务器环境.因为Mac系统自带PHP和apach,但是没有自带mysql,所以要手动去安装mysql,本次安装mysql最新版5.7.17. 1.官网下载 点 ...
- MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...
本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1. 首先使用两个简单的查询语句: 查询当前版本:se ...
最新文章
- usaco Feed Ratios
- Fedora 从 15.0 开始将修改以太网卡命名规则
- 一个页面区分管理者和普通用户如何设计_产品经理要做的操作权限/数据权限设计...
- 阿里设计师出品!B端产品文案指南
- c语言中switch语句流程图_C语言:C语言保留字(关键字)
- KindEditor 4 输入框限定字数
- Android 小項目之---Iphone拖动图片特效 (附源码)
- kali linux 桌面消失_kalilinux系统设置不见了的解决方案
- java实现语音聊天_java 语音聊天核心代码
- java Http post请求发送json字符串
- 验证DG最大性能模式下使用ARCH/LGWR及STANDBY LOG的不同情况
- vivo手机点击android,了解Vivo手机几个小技巧,让您的手机变得更好用
- 2020年ROS机器人操作系统用户官方调查
- Opencv-cvtColor
- 网络笔记--接入网及网络运营商
- Composer中的ThingWorx模型定义—建模
- linux解压该文件,linux上解压缩文件
- 吴恩达访谈 - Geoffrey Hinton(个人不懂或是想了解的名词)
- python:小鱼的航程
- 有什么数据恢复软件好?