因为经常跑脚本的关系, 每次跑完数据之后,相关的测试服数据库表的数据都被跑乱了,重新跑脚本恢复回来速度也不快,所以尝试在跑脚本之前直接备份该表,然后跑完数据之后恢复的方式,应该会方便一点。所以实践一波。
使用mysql dump命令将指定备份表 备份到我的/home目录下
mysqldump -u xcf -h devdb -p xcf_mfarm ec_points_yearly_balance > ~/ec_points_yearly_balance_2016_12_22.sql
然后去~/文件下看,已经能看到 一个.sql后缀的备份文件了。
现在我将整个表里的数据清空
truncate table ec_points_yearly_balance;
好现在确认里面没有数据了,我们来恢复该库数据:
mysql -u xcf -p -h devdb xcf_mfarm < ~/ec_points_yearly_balance_2016_12_22.sql
好去数据库看看效果
mysql> select count(*) from ec_points_yearly_balance;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)mysql> select * from ec_points_yearly_balance;
Empty set (0.00 sec)mysql> select count(*) from ec_points_yearly_balance;
+----------+
| count(*) |
+----------+
| 1601671 |
+----------+
1 row in set (0.21 sec)
似乎效果还不错。
当然在超过百万级别的数据表导出的时候,我们还可以在导出的时候使用gzip压缩的方法让得到的文件稍微小几倍。
mysqldump -hdevdb -u xcf -p xcf_mfarm ec_points_yearly_balance | gzip > ec_points_yearly_balance_2016.sql.gz
可以看看压缩的效果
-rw-rw-r-- 1 piperck piperck 221M Dec 22 15:53 ec_points_yearly_balance_2016_12_22.sql
-rw-rw-r-- 1 piperck piperck 13M Dec 22 16:28 ec_points_yearly_balance_2016.sql.gz
哇 这可差了快20倍!
那么还原也可以支持使用
gunzip < ec_points_yearly_balance_2016.sql.gz | mysql -hdevdb -uxcf -p xcf_mfarm
当然,对于通过gzip压缩还原来说,速度要比原文件慢一些,从管道来看也很明白要先进行解压之后再导入还原数据库,速度自然要慢一些。
---------------------------------------------------------------------------------------------------------
add:
备份全量数据库:
mysqldump -uroot -p --events --ignore-table=mysql.event --all-databases > ~/all.sql
另外补充一个点,如果是在5.6里面实用mysqldump出来的.sql数据,是没有办法再mysql5.5中恢复的。
Reference:
http://stackoverflow.com/questions/6682916/how-to-take-backup-of-a-single-table-in-a-mysql-database how-to-take-backup-of-a-single-table-in-a-mysql-database
http://blog.csdn.net/shellching/article/details/8129687 mysqldump导入导出数据库总结