除了使用 mysqldump 之外,我还通过打包 /var/lib/mysql 来备份我的 mysql 服务器,以实现冗余和方便。此目录包括 ibdata、ib_logfile0 和 ib_logfile1 以及一些其他文件和每个数据库的子目录。(我还备份了 my.cnf。)现在我需要将备份分为两部分:(1)仅包含 myisam 压缩(只读)表的“h”数据库和(2)mysql 服务器上的所有其他数据库。
假设我不更改服务器版本,将 /var/lib/mysql/h 打包并单独将 /var/lib/mysql 目录中的所有其他内容打包是否安全可靠?如果“其他所有内容”继续更改,我是否仍可以从其较旧的 tar 存档中恢复“h”数据库?如果我恢复除“h”子目录之外的所有其他内容,其他数据库是否仍可用,唯一的影响是“h”数据库将丢失?
我之所以要这样做,是因为“h”数据库非常庞大,而且每年只更改一次。其他所有数据库都相对较小,而且一直在变化。如果这种方法有效,我可以对“h”数据库进行年度存档,对其他所有数据库进行每周存档。
我正在使用在 Debian 7(Wheezy)上运行的 MySQL Server 5.5.31。
答案1
是的,理论上您计划备份的方式应该可行。
但如果数据有价值,你应该有另一台服务器——或者你的工作站,无论什么——在那里你可以尝试真正恢复你的数据,看看会发生什么,并定期这样做。这样你就可以确保在需要时可以真正恢复你的备份。
答案2
假设您停止写入/更改 DB 目录中的文件,一个想法是备份系统数据库 (mysql) 两次。一次在 H 备份中,一次在所有其他备份中。这样,H 数据库就可以恢复到备份时的状态。
我们过去常常离线创建 MySQL,停止数据库,将文件移至生产服务器,然后启动生产数据库。这样我们就可以更新多 GB 的表,而无需像 MySQL 使用 SQL 加载数据那样花费数小时。