快速备份和还原MySQL数据库的另⼀种⽅法mysql视图和存储过程
⼀直使⽤ 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 ⼗倍了。不过这个⽅法有⼀个缺点,
因为是通过异构数据库来进⾏数据备份和还原,所以视图和存储过程将
不会被保留。不过我们的项⽬都没有使⽤这两样东西,所以⾜够使⽤了。最重要的是,⽼板说我最近的⼯作效率提⾼了~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。