使用 mariabackup 备份单个数据库?

使用 mariabackup 备份单个数据库?

我一直在努力重做我们的数据库备份例程,并研究了 mariabackup,因为考虑到我们的架构大小,mysqldump 不再适用。我们有多个需要备份的架构 - 它们的大小各不相同,备份频率也各不相同(有些需要每 6 小时备份一次,其他的可以在一天内备份一次)。最重要的是,我们的数据库由两个数据库服务器组成,以主从配置运行。

首先,我针对我们的一个模式运行了这个命令:

mariabackup --backup --user root --password <pass> --databases db1

这生成了“db1”模式的数据文件副本,以及 MariaDB 本身使用的某些文件(aria_log、ib_buffer_pool、ib_logfile、ibdata 等)。这非常完美 - 我们可以为每个模式创建单独的备份。

然而,恢复似乎是另一回事。在“--prepare”备份并发出 mariabackup --copy-back 命令后,它会抱怨数据目录必须是空的。如果我有单独的备份,我是否可以在一个数据库(或者更确切地说,一个 MariaDB 实例)下恢复这些模式?更清楚一点,如果我备份了模式“db1”、“db2”和“db3”,我似乎无法在同一个数据库实例下恢复它们——有什么我不明白的吗?

答案1

像您的部分备份只能使用 --prepare --export 进行恢复。这会生成一些 .cfg 文件和 .ibd 文件。对于目标系统上的每个表,“恢复”应该是“ALTER TABLE .. DISCARD TABLESPACE”、“ALTER TABLE IMPORT TABLESPACE”。不幸的是,它不是 100% 自动化的,因为要丢弃目标系统上的表空间,您首先需要在目标系统上创建一个表空间,使用相同的“CREATE TABLE”

相关内容