Я работал над переделкой наших подпрограмм резервного копирования базы данных и изучал mariabackup, поскольку mysqldump больше не сокращает его, учитывая размер наших схем. У нас есть несколько схем, для которых необходимо выполнить резервное копирование - все они различаются по размеру и частоте резервного копирования (для некоторых требуется резервное копирование в течение шестичасового периода, для других можно использовать один день между резервными копиями). Кроме того, наша база данных состоит из двух серверов баз данных, работающих в конфигурации главный-подчиненный.
Для начала я выполнил эту команду для одной из наших схем:
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', я, похоже, не смогу восстановить их все в одном экземпляре базы данных - есть ли что-то, что я не понимая?
Частичную резервную копию, как и вашу, можно восстановить только с помощью --prepare --export. это генерирует некоторые файлы .cfg, только файлы .ibd. Под «восстановлением» подразумевается «ALTER TABLE .. DISCARD TABLESPACE», «ALTER TABLE IMPORT TABLESPACE» для каждой таблицы в целевой системе. К сожалению, это не на 100% автоматизировано, потому что для удаления табличного пространства в целевой системе вам сначала нужно создать табличное пространство в целевой системе с тем же «CREATE TABLE»