mysql 快速拷贝库的方法
2015-11-20 16:07
561 查看
测试DB服务器的磁盘空间有限,经常清掉一些老的库,再从源环境导入最新的库。
60G左右的数据库,dump sql大概要两个小时,从源环境取下sql半个小时,再导入到测试环境又要两个小时。
经过测试发现直接从mysql的data文件夹物理拷贝库文件,是快速拷贝的最快方法。
假设要考的库名叫database_20151120,那么先在测试数据库上建立database_20151120的空库。
然后把测试数据库停了,直接进入data文件的database_20151120文件夹里,里面应该是空的。
然后ftp到源数据库的同名目录下(data/database_20151120),get database_20151120下的所有文件。
然后启动测试数据库。
进入测试数据库查看数据会发现,有些表会报1146:database_20151120.XXXtable doesn't exist
但有些表能正常检索出数据。
再观察一下,检索不出数据的表都是innerDB类型的。
根据网上的解决办法。要把库的默认引擎改成innerDB。在my.cnf里添加
default-storage-engine=INNODB
然后,停掉源环境,再从源数据库取得ibdata1覆盖到数据库。
再重启目标数据库。
发现所有的表都可以使用了。
不过该方法只适用于测试环境快速导入。生产环境可不敢这么干。
60G左右的数据库,dump sql大概要两个小时,从源环境取下sql半个小时,再导入到测试环境又要两个小时。
经过测试发现直接从mysql的data文件夹物理拷贝库文件,是快速拷贝的最快方法。
假设要考的库名叫database_20151120,那么先在测试数据库上建立database_20151120的空库。
然后把测试数据库停了,直接进入data文件的database_20151120文件夹里,里面应该是空的。
然后ftp到源数据库的同名目录下(data/database_20151120),get database_20151120下的所有文件。
然后启动测试数据库。
进入测试数据库查看数据会发现,有些表会报1146:database_20151120.XXXtable doesn't exist
但有些表能正常检索出数据。
再观察一下,检索不出数据的表都是innerDB类型的。
根据网上的解决办法。要把库的默认引擎改成innerDB。在my.cnf里添加
default-storage-engine=INNODB
然后,停掉源环境,再从源数据库取得ibdata1覆盖到数据库。
再重启目标数据库。
发现所有的表都可以使用了。
不过该方法只适用于测试环境快速导入。生产环境可不敢这么干。
相关文章推荐
- 辛星浅析nodejs中的MySQL连接池
- MySQL几个性能指标
- MySQL学习笔记(一)
- jdbc操作mysql数据库
- mysql存储过程案例
- 【转】Jmeter MySQL数据库性能测试
- Mysql5.1中主要使用的几种表引擎?它们的区别是什么?在使用表引擎时,要注意什么问题?
- mysql 字符串函数
- mysql timstamp的时间范围
- mysql使用笔记(二)
- mysql 导出数据到txt文件
- MySQL 忘记root密码解决办法
- mysql时间与日期函数
- 发测试 HTML/FILE/MYSQL/动态 20151120
- mysql 插入表情出错
- Mysql 列转行统计查询 、行转列统计查询
- MySQL学习-常用命令整理
- mysql 报错
- 5.mysql学习笔记:复制的原理
- mysql提取身份证生日并查询指定月份的数据