MySQL-怎么备份数据库的表

自从使用上了阿里的RDS之后,公司的MySQL服务器就彻底的歇菜了,特别是出现重大问题的时候,我根本没办法直接用备份数据还原生产环境中的数据。

主要原因是MySQL服务器环境跟RDS的备份文件环境不符合,特意去搭建一个吧,太麻烦。

现在每次有需要使用的时候,都是使用备份克隆一个实例,数据量大了,那个克隆的速度是越来越慢了。

最近正好有空想了一下这个解决方法,记录一下吧。

我经常使用phpmyadmin来管理数据库的数据,所以,我经常会做一个操作:

要操作某个表的时候,我一定是先复制一个表,重命名后当做备份,出现问题的时候我就直接重命名就好了。

那么,我可以将重要的表及表结构给按照一定的时间自动备份吗?

当然可以了哈~定时任务怎么使用我就不多说了,就说说SQL怎么写吧。

一、复制结构,数据

CREATE TABLE `ecs_backup`.`20180109_1809-sdb_b2c_goods` AS SELECT * FROM `ecs`.`sdb_b2c_goods`

二、复制结构,数据,索引

CREATE TABLE `ecs_backup`.`20180109_1809-sdb_b2c_goods` LIKE `ecs`.`sdb_b2c_goods`;
INSERT `ecs_backup`.`20180109_1809-sdb_b2c_goods` SELECT * FROM `ecs`.`sdb_b2c_goods`;

随便挑一种适合自己的方法,只需要自动生成前缀就可以执行了。

那么这类的文件肯定会越来越多的,怎么删除呢?

简单,只需要用下面的SQL获取响应的表名,然后,执行删除操作不就行了?

SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = "ecs_backup" AND CREATE_TIME < "2018-01-09 18:19"

然后,坐等出现问题后直接改名字恢复吧。

这个方法,好处就不说了,大家自己体会吧。

发表评论