Частичное резервное копирование и восстановление с Mariabackup
При использовании Mariabackup у вас есть возможность выполнять частичные резервные копии. Частичные резервные копии позволяют выбрать базы данных или таблицы для резервного копирования, при условии, что таблица или разделы находятся в InnoDB файловом пространстве таблиц на основе таблиц. На этой странице описано, как выполнять частичные резервные копии.
Создание резервной копии сервера базы данных
Так же, как и при полных резервных копиях, для резервного копирования базы данных необходимо запустить Mariabackup с параметром --backup для указания выполнения резервного копирования и с параметром --target-dir для указания места размещения файлов резервной копии. Каталог назначения должен быть пустым или не существовать.
Для частичного резервного копирования также можно указать несколько других аргументов:
- Для указания баз данных, которые необходимо включить в резервную копию, можно использовать параметр
--databases. - Для указания баз данных, которые необходимо исключить из резервной копии, можно использовать параметр
--databases-exclude. - Для указания файла с базами данных для резервного копирования, можно использовать параметр
--databases-file. - Для указания таблиц для резервного копирования, можно использовать параметр
--tables. - Для указания таблиц, которые необходимо исключить из резервной копии, можно использовать параметр
--tables-exclude. - Для указания файла со списком таблиц для резервного копирования, можно использовать параметр
--tables-file.
Параметры частичного резервного копирования, не связанные с файлами, поддерживают регулярные выражения в именах баз данных и таблиц.
Например, чтобы создать резервную копию любой базы данных, начинающейся с app1_, и любой таблицы в этих базах данных, начинающейся с tab_, выполните следующую команду:
$ mariabackup --backup \ --target-dir=/var/mariadb/backup/ \ --databases='app1_*' --tables='tab_*' \ --user=mariabackup --password=mypassword
В настоящее время Mariabackup не может создать резервную копию подмножества разделов из разделяемой таблицы. Создание резервной копии разделяемой таблицы в настоящее время является выбором «все или ничего». См. MDEV-17132 по этому вопросу. Если вам нужно создать резервную копию подмножества разделов, одним из возможных решений является экспорт файловых пространств таблиц на основе таблиц для разделов вместо использования Mariabackup, а именно экспорт файловых пространств таблиц на основе таблиц для разделов.
Время, необходимое для создания резервной копии, зависит от размера баз данных или таблиц, которые вы резервируете. Вы можете отменить резервное копирование, если необходимо, так как процесс резервного копирования не изменяет базу данных.
Mariabackup записывает файлы резервной копии в указанный каталог. Если каталог назначения не существует, он создается. Если каталог назначения существует и содержит файлы, возникает ошибка, и процесс прерывается.
Подготовка резервной копии
Так же, как и при полных резервных копиях, файлы данных, создаваемые Mariabackup в каталоге назначения, не являются согласованными по состоянию на определенный момент времени, так как файлы данных копируются в разное время во время операции резервного копирования. При попытке восстановления из этих файлов InnoDB обнаруживает несоответствия и аварийно завершается, чтобы защитить вас от повреждений. На самом деле, для частичных резервных копий резервная копия даже не является полностью функциональным каталогом данных MariaDB, поэтому InnoDB может выдавать больше ошибок, чем при полных резервных копиях. Этот момент также очень важно учитывать во время процесса восстановления.
Прежде чем восстановить резервную копию, необходимо подготовить ее, чтобы сделать файлы данных согласованными. Для этого можно использовать параметр команды --prepare.
Частичные резервные копии полагаются на транспортируемые пространства таблиц InnoDB. Для импорта MariaDB таких пространств таблиц InnoDB ищет файл с расширением .cfg. Для создания этих файлов Mariabackup также необходимо добавить параметр --export во время подготовки резервной копии.
Например, можно выполнить следующую команду:
$ mariabackup --prepare --export \ --target-dir=/var/mariadb/backup/
Если эта операция выполняется без ошибок, резервная копия готова к восстановлению.
В MariaDB 10.2.8 и более ранних версиях Mariabackup не поддерживал параметр --export. См. MDEV-13466 по этому вопросу. В этих версиях MariaDB это означает, что Mariabackup не мог создать файлы .cfg для InnoDB файловых пространств таблиц на основе таблиц на стадии --prepare. В большинстве случаев вы все еще можете импортировать файловые пространства таблиц на основе таблиц без файлов .cfg, поэтому в этих версиях может быть возможным восстановить частичные резервные копии или восстановить отдельные таблицы и разделы только с файлами .ibd. Если у вас есть полная резервная копия и вам нужно создать файлы .cfg для InnoDB файловых пространств таблиц на основе таблиц, вы можете сделать это, подготовив резервную копию обычным способом без параметра --export, затем восстановив резервную копию и запустив сервер. В этот момент вы можете использовать встроенные функции сервера для копирования транспортируемых пространств таблиц.
Восстановление резервной копии
Процесс восстановления частичных резервных копий значительно отличается от процесса восстановления полных резервных копий. Частичная резервная копия не является полностью функциональным каталогом данных. Справочник данных в InnoDB системном пространстве таблиц по-прежнему будет содержать записи для баз данных и таблиц, которые не были включены в резервную копию.
Вместо использования --copy-back или --move-back, каждый отдельный файл InnoDB файлового пространства таблиц на основе таблиц должен быть вручную импортирован на целевой сервер. Процесс импорта будет зависеть от того, используется ли разбиение.
Восстановление отдельных неразделенных таблиц
Для восстановления отдельных неразделенных таблиц из резервной копии найдите файлы .ibd и .cfg для таблицы в резервной копии, а затем импортируйте их, используя процесс импорта транспортируемых пространств таблиц для неразделенных таблиц.
Восстановление отдельных разделов и разделяемых таблиц
Для восстановления отдельных разделов или разделяемых таблиц из резервной копии найдите файлы .ibd и .cfg для разделов в резервной копии, а затем импортируйте их, используя процесс импорта транспортируемых пространств таблиц для разделяемых таблиц.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/partial-backup-and-restore-with-mariabackup/