博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速备份和还原 MySQL 数据库的另一种方法
阅读量:4599 次
发布时间:2019-06-09

本文共 956 字,大约阅读时间需要 3 分钟。

  一直使用 SQL Server 作为公司产品的数据库来存储系统数据,所以备份还原一直都不是问题,因为 SQL Server 的备份还原非常迅速和易用。但今年公司改变策略,使用起 MySQL 数据库作为新产品的数据库后,我们终于遇到了备份还原的大难题:我们需要把客户的数据库备份并还原到开发环境中。我们同时使用 HeidiSQL和 NaviCat for MySQL 作为数据库管理工具,使用这类工具的导出脚本功能,把整个数据库导出为一个SQL文件,然后在还原目标数据库中执行该 SQL 文件以完成还原动作。原理非常简单,但一个3GB大小的数据库,备份以及还原居然花费了70小时(无可否认我们的服务器的确是有点慢)。这个速度无论让人接受,也影响了客户对我们服务效率的评价。

  经过分析发现,还源速度慢的主要原因是因为这类工具在执行 SQL 文件的时候,总是把每一条SQL以一个事务的方式去执行。所以面对几千万的数据,就需要执行几千万次的 SQL 语句,效率更加可想而知。于是想到了 OBDB2DB 这一个数据库转换工具,通过这一个工具把 MySQL 的数据导出为本地 SQLite 数据库,带回来后再将 SQLite 转换为 MySQL 数据库。由于 OBDB2DB 在进行数据转换时采用了批量处理的方式,所以转换速度相比原来的方式大大提高。

 

  OBDB2DB 的使用非常简单,首先按下图将原数据库导出为 SQLite 数据库:

 

  经过短暂的等待之后,我们就可以得到一个 DataBase.DB 的 SQLite 数据库文件(文件名自定义)。把文件带回到开发环境后,我们使用相反的方法把 SQLite 还原到 MySQL 数据库:

 

  带回的数据库,在我的 W540 笔记本上只需要十分钟就还原成功了。在那台老慢的服务器上面还原,也减少至只需要 54 分钟就还原成功!比原来的 70 小时提高了 N 十倍了。不过这个方法有一个缺点,因为是通过异构数据库来进行数据备份和还原,所以视图和存储过程将不会被保留。不过我们的项目都没有使用这两样东西,所以足够使用了。最重要的是,老板说我最近的工作效率提高了~

 

转载于:https://www.cnblogs.com/overblue/p/4636367.html

你可能感兴趣的文章
codevs 3314 魔法森林
查看>>
mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题...
查看>>
桐桐的贸易--WA
查看>>
历届试题 高僧斗法
查看>>
linux命令系列 stat & touch
查看>>
[Tools] Webstorm Github的配置与使用
查看>>
鬼谷子绝学
查看>>
Mongodb 笔记04 特殊索引和集合、聚合、应用程序设计
查看>>
使用Post/Redirect/Get实现Asp.net防止表单重复提交
查看>>
用Html5与Asp.net MVC上传多个文件
查看>>
lambda函数,常用函数,内置函数(string,zip()map()filter())的用法
查看>>
Xcode中匹配的配置包的存放目录
查看>>
JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
查看>>
CSS3.0——背景属性
查看>>
【转载】C语言中的undefined behavior/unspecified behavior - 序
查看>>
MySQL服务使用
查看>>
C语言练手自己编写学生成绩管理系统
查看>>
20175204 张湲祯 2018-2019-2《Java程序设计》第二周学习总结
查看>>
NCPC 2015 - Problem A - Adjoin the Networks
查看>>
How to lisp Lisp output a paragraph"500 Tph Dry Process Cement Plant Machinery Manufacturers"
查看>>