MariaDB Enterprise Backup е решение за архивиране от MariaDB Corporation с редица функции като неблокиращи архиви, пълно архивиране, инкрементално архивиране, частично архивиране и възстановяване във времето.
Често получаваме въпроси относно разликите между MariaDB Backup и функциите за управление на архивиране на ClusterControl. Ето за какво е този блог.
Създаване на резервни копия срещу управлението им
MariaDB Backup е разклонение на Percona XtraBackup и е инструмент за вземане на физически архиви на MariaDB сървър. Позволява ви да правите неща като пълно, инкрементално, частично архивиране. Човек може също така да извърши възстановяване на точка във времето с помощта на двоични регистрационни файлове. Според документацията версията „Enterprise“ на архивирането на MariaDB осигурява „проследяване на DDL изрази, което намалява времето за заключване по време на архивиране“.
ClusterControl поддържа MariaDB Backup като метод за архивиране за MariaDB. Той предоставя графичен потребителски интерфейс за планиране на пълно архивиране, инкрементално архивиране и частично архивиране и извършване на възстановяване на архивни файлове или също така автоматизира възстановяването в даден момент. В допълнение, ClusterControl предоставя функции като криптиране, компресиране, качване в облачното хранилище (Azure, AWS, Google Cloud) и автоматична проверка на резервните копия, за да се гарантира, че те са възстановими.
Пълно архивиране и възстановяване
За да извършите пълно архивиране с помощта на MariaDB Enterprise Backup, можете да използвате командните помощни програми mariabackup. След командата mariabackup има 4 входа на параметри. Параметърът е:
- Резервно копие - това се използва за архивиране на базата данни с помощта на помощни програми mariabackup.
- Подгответе се - за да направите последователно архивиране в даден момент, трябва да подготвите архива, след като суровото архивиране е било изпълнено.
- Копиране обратно - използва се за възстановяване на извлечения архив в директорията с данни по подразбиране на mysql. Той ще копира архива в директорията mysql, без да премахва оригиналния архив.
- Преместване назад - използва се за възстановяване на извлеченото архивно копие в директорията с данни на mysql чрез преместване на всички резервни директории.
Ако искате да архивирате и възстановите, просто предавате задължителния параметър след командата mariabackup. За пълна команда за архивиране, по-долу е примерен скрипт, използващ MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Има някои опции, които трябва да дефинирате, като --target-dir, което е целевото местоположение за архивни файлове, --user, използвано за потребители с идентификационни данни за архивиране и --password за паролата за архивиране на идентификационни данни.
За да направите резервното копие последователно в момента, трябва да стартирате подготовката, след като завърши пълното архивиране. Файловете с данни не са последователни, докато не стартирате подготовката, защото когато стартирате архивирането, файловете с данни са били копирани в различни моменти от времето по време на архивирането.
За да стартирате подготвително архивиране:
mariabackup --prepare --target-dir=/backup/full
След като стартирате подготовката, това ще направи резервното копие готово за възстановяване. Ще видите съобщението на последния ред, както е по-долу, когато подготовката е била успешна.
InnoDB: Shutdown completed; log sequence number 9553231
Можете да изпълните командата за възстановяване, като използвате копиране обратно. Ето примерния скрипт за възстановяване на архива:
mariabackup --copy-back --target-dir=/backup/full
Можете да поставите горния скрипт в команда за скрипт на обвивка и да дадете разрешение за изпълним файл, да го конфигурирате в планировчика на операционната система.
Архивирането и възстановяването с помощта на ClusterControl Backup Management е много лесно за използване. ClusterControl поддържа логическо архивиране и физическо архивиране. За логическо архивиране ClusterControl използва mysqldump, а за физическо архивиране използва mariabackup пълно архивиране и инкрементално.
Има две опции за това как искате да направите резервно копие; можете да създадете архива директно или да планирате архивирането.
Можете също да активирате някои опции като криптиране, компресиране, паралелна нишка за копиране като показано по-долу:
Възстановяването на архива е толкова лесно, колкото е създадено. Просто трябва да изберете пълния архивен файл, който искате да възстановите.
Има две опции за това как искате да възстановите архива; можете да възстановите архива на възлите, където е направено резервното копие, или можете да възстановите архива на специален самостоятелен хост.
Постепенно архивиране и възстановяване
Правенето на пълно архивиране на много голяма база данни ще отнеме време и ресурси. Инкременталното архивиране се използва за извършване на архивиране на промените след последното пълно архивиране.
Когато се изпълнява инкрементално архивиране, MariaDB Enterprise Backup ще сравни предишно пълно архивиране или инкрементално архивиране, за да намери последните промени.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Преди да извършите инкременталното архивиране, трябва да се уверите, че е подготвено пълното архивиране. След това можете да стартирате инкременталното архивиране, прилагайки към последното пълно архивиране.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
След като инкременталното архивиране е приложено към пълното архивиране, пълната директория за архивиране вече ще има подготвени всички архивни данни.
Възстановяването на подготвения пълен архив с всички постепенни промени може да се извърши чрез:
mariabackup --copy-back --target-dir=/backup/full
За да извършите инкрементално архивиране в ClusterControl, можете да изберете инкременталното архивиране на mariabackup. Трябва да имате напълно подготвено архивиране, преди да направите допълнителното архивиране.
ClusterControl автоматично ще намери най-близкото пълно архивиране, когато стартирате инкременталното архивиране. А за възстановяване на архива можете да изберете напълно подготвеното архивиране и възстановяване. Той ще ви подкани как искате да възстановите архива, или на възела, или на самостоятелен хост. Той ще възстанови архива, включително постепенни промени.
Частично архивиране и възстановяване
Частично архивиране определя коя база данни или таблица искате да архивирате. Можете или да изберете списък с бази данни и таблици за архивиране, или можете да изключите някои от бази данни и таблици от архивирането. Опциите включват:--databases, --databases-exclude, --tables, --tables-exclude
По-долу е даден примерен скрипт за извършване на частично архивиране на таблицата card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Все още трябва да подготвите пълното частично архивиране, за да направите резервното копие последователно в момента, като изпълните командата по-долу:
mariabackup --prepare --export --target-dir=/backup/partial
Извършването на частично възстановяване е много различно в сравнение с възстановяването на пълно архивиране и инкрементално архивиране. Трябва да подготвите таблиците и базата данни в работещия MariaDB Server и след това ръчно да копирате файловете с данни в директорията с данни на mysql.
Например, искате да направите частично възстановяване на таблицата card_data (неразделена таблица).
- Създайте празната таблица с card_data със същата структура в целевата база данни
- Изпълнете пространството за таблица DISCARD в таблицата card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Копирайте файловете с данни в директорията с данни на mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Промяна на собственика на файлове става mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Последно нещо, импортирайте пространството за таблици:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Частично архивиране в ClusterControl е наистина лесно, просто трябва да активирате опцията Частично архивиране. Това ще ви даде възможност да включите или изключите база данни и таблици, както е показано по-долу:
Следващата част е подобна на пълното архивиране и инкременталното архивиране, можете изберете настройки като криптиране и компресиране.
Възстановяването на частичното архивно копие е точно същото като когато възстановяваме пълно архивиране. Трябва само да изберете частичното архивиране, а останалото ще се обработва от ClusterControl.
Възстановяване във времето
Възстановяването на пълното архивиране или инкременталното архивиране ви дава резервно копие от момента на правене на архива, но не ви дава никакви данни, дошли след правенето на архива. Тези промени ще бъдат в двоичния журнал. Когато извършите подготвеното архивиране с активиран binlog, ще има файл, наречен xtrabackup_binlog_info. Файлът съдържа двоичен регистрационен файл и позиция на последния пореден номер.
Можете да извършите възстановяване на момента във времето, като извлечете промените в SQL, например след като възстановяването е извършено. Можете да стартирате mysqlbinlog, за да извлечете конкретното време в изходния възел на базата данни и да приложите SQL в целевия/възстановения възел на базата данни.
Възстановяването на точка във времето (PITR) в ClusterControl може да бъде активирано, както е показано по-долу:
Трябва да дефинирате до кой момент да се възстановите, поддържат се две опции които са базирани на време или позиция. За базирани на време, просто трябва да попълните точното време, когато данните ще бъдат възстановени. За позицията трябва да попълните името и позицията на binlog. Останалата част от възстановяването е подобна.
Заключение
Това е засега. Както видяхме по-горе, MariaDB Backup е приятен инструмент с много опции. ClusterControl предоставя лесен за използване GUI за изпълнение на процедурите за архивиране. Той също така добавя редица функции като криптиране, компресиране, планиране, управление на задържане и автоматично потвърждаване на архивиране.