mysql 数据表备份导出,恢复导入操作实践

时间:2022-06-06 06:57:05

因为经常跑脚本的关系, 每次跑完数据之后,相关的测试服数据库表的数据都被跑乱了,重新跑脚本恢复回来速度也不快,所以尝试在跑脚本之前直接备份该表,然后跑完数据之后恢复的方式,应该会方便一点。所以实践一波。

使用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://*.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导入导出数据库总结