使用数据库时,其中非常重要的一块内容就是数据的安全,而保障数据安全的重要手段是数据备份与还原恢复。目前,我们主要的备份手段有逻辑备份、物理备份,逻辑备份一般适用范围很广,可以适用于解决不同版本间的备份与恢复,但一般执行时间长,而且备份占用空间大。这里介绍一种针对MySQL的特殊的物理备份,是基于操作系统的,这个备份效率高,占用空间少,针对数据量很大的数据表进行备份恢复很有用。
因为现在我们大部分情况下,使用的数据库都是innodb存储引擎的数据表了,下面就介绍该类存储引擎的数据表备份与恢复。
1、生成备份相关数据文件。
在源端mysqld中执行 flush table [city 这是要备份的表名,这里以city表为例] for export; 该命令,生成备份所需的相关数据文件,主要达到以下三个作用:
- A、将所有内存中的数据写入文件,避免因部分数据未存盘导致数据丢失;
- B、生产待备份表的结构文件(一般是.cfg格式的文件);
- C、对表加锁,避免备份过程中对表产生修改,进而导致数据不一致。
2、将待备份表的数据文件(.ibd)和结构文件(.cfg)拷贝到目标备份目录下。后续要恢复的时候,再拷贝到目标mysqld中。
3、对源库的表解锁,完成备份工作。解锁使用 unlock tables; 命令完成。该命令完成后数据表就可以正常使用,同时cfg文件根据mysql版本不同,有些版本就会自动删除掉了。
以下部分是还原恢复部分。
1、在还原的目标mysqld中