MariaDB Enterprise Backup to rozwiązanie do tworzenia kopii zapasowych firmy MariaDB Corporation z wieloma funkcjami, takimi jak nieblokujące kopie zapasowe, pełna kopia zapasowa, przyrostowa kopia zapasowa, częściowa kopia zapasowa i przywracanie do punktu w czasie.
Często otrzymujemy pytania dotyczące różnic między funkcjami zarządzania kopiami zapasowymi MariaDB Backup i ClusterControl. Więc o tym jest ten blog.
Tworzenie kopii zapasowych a zarządzanie nimi
MariaDB Backup to rozwidlenie Percona XtraBackup i narzędzie do wykonywania fizycznych kopii zapasowych serwera MariaDB. Umożliwia wykonywanie takich rzeczy, jak pełne, przyrostowe, częściowe kopie zapasowe. Można również wykonać odzyskiwanie do punktu w czasie za pomocą dzienników binarnych. Zgodnie z dokumentacją, wersja „Enterprise” kopii zapasowej MariaDB zapewnia „śledzenie instrukcji DDL, co skraca czas blokowania podczas tworzenia kopii zapasowych”.
ClusterControl obsługuje MariaDB Backup jako metodę tworzenia kopii zapasowych dla MariaDB. Zapewnia graficzny interfejs użytkownika do planowania pełnych kopii zapasowych, przyrostowych kopii zapasowych i częściowych kopii zapasowych oraz odzyskiwania plików kopii zapasowych, a także automatyzuje odzyskiwanie do określonego momentu. Ponadto ClusterControl zapewnia funkcje, takie jak szyfrowanie, kompresja, przesyłanie do pamięci w chmurze (Azure, AWS, Google Cloud) oraz automatyczną weryfikację kopii zapasowych w celu zapewnienia możliwości ich odzyskania.
Pełna kopia zapasowa i przywracanie
Aby wykonać pełną kopię zapasową za pomocą MariaDB Enterprise Backup, możesz użyć narzędzi poleceń mariabackup. Po poleceniu mariabackup dostępne są 4 wejścia parametrów. Parametr to:
- Kopia zapasowa - służy do tworzenia kopii zapasowej bazy danych za pomocą narzędzi mariabackup.
- Przygotuj - aby utworzyć spójną kopię zapasową w określonym punkcie w czasie, należy przygotować kopię zapasową po wykonaniu nieprzetworzonej kopii zapasowej.
- Kopia zwrotna - służy do przywracania rozpakowanej kopii zapasowej do domyślnego katalogu danych mysql. Skopiuje kopię zapasową do katalogu mysql, bez usuwania oryginalnej kopii zapasowej.
- Cofnij - używany do przywracania wyodrębnionej kopii zapasowej do katalogu danych mysql przez przeniesienie wszystkich katalogów kopii zapasowych.
Jeśli chcesz wykonać kopię zapasową i przywrócić, wystarczy przekazać obowiązkowy parametr po poleceniu mariabackup. W przypadku polecenia pełnej kopii zapasowej poniżej znajduje się przykładowy skrypt korzystający z kopii zapasowej MariaDB.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Istnieje kilka opcji, które należy zdefiniować, takie jak --target-dir, która jest docelową lokalizacją plików kopii zapasowych, --user, używana dla użytkowników z danymi uwierzytelniającymi do tworzenia kopii zapasowych oraz --password dla hasło kopii zapasowej poświadczeń.
Aby kopia zapasowa była spójna w określonym punkcie w czasie, należy uruchomić przygotowanie po zakończeniu tworzenia pełnej kopii zapasowej. Pliki danych nie są spójne, dopóki nie uruchomisz przygotowania, ponieważ po uruchomieniu kopii zapasowej pliki danych zostały skopiowane w różnych momentach podczas tworzenia kopii zapasowej.
Aby uruchomić przygotowanie kopii zapasowej:
mariabackup --prepare --target-dir=/backup/full
Po uruchomieniu przygotowania, kopia zapasowa będzie gotowa do przywrócenia. Zobaczysz komunikat w ostatniej linii, jak poniżej, kiedy przygotowanie się powiodło.
InnoDB: Shutdown completed; log sequence number 9553231
Możesz uruchomić polecenie przywracania za pomocą funkcji kopiowania z powrotem. Oto przykładowy skrypt przywracający kopię zapasową:
mariabackup --copy-back --target-dir=/backup/full
Możesz umieścić powyższy skrypt w poleceniu skryptu powłoki i dać uprawnienia do wykonywania, skonfigurować go w harmonogramie systemu operacyjnego.
Kopia zapasowa i przywracanie przy użyciu ClusterControl Backup Management jest bardzo łatwe w użyciu. ClusterControl obsługuje logiczną kopię zapasową i fizyczną kopię zapasową. W przypadku kopii logicznej ClusterControl używa mysqldump, a kopii fizycznej mariabackup pełnej i przyrostowej kopii zapasowej.
Istnieją dwie opcje tworzenia kopii zapasowej; możesz utworzyć kopię zapasową bezpośrednio lub zaplanować tworzenie kopii zapasowej.
Możesz także włączyć niektóre opcje, takie jak szyfrowanie, kompresja, wątek kopiowania równoległego jako pokazane poniżej:
Przywracanie kopii zapasowej jest tak proste, jak jej utworzenie. Wystarczy wybrać pełny plik kopii zapasowej, który chcesz przywrócić.
Istnieją dwie opcje przywracania kopii zapasowej; możesz przywrócić kopię zapasową do węzłów, w których wykonano kopię zapasową, lub możesz przywrócić kopię zapasową na dedykowanym samodzielnym hoście.
Przyrostowa kopia zapasowa i przywracanie
Wykonanie pełnej kopii zapasowej bardzo dużej bazy danych będzie czasochłonne i zasobochłonne. Przyrostowa kopia zapasowa służy do tworzenia kopii zapasowej zmian po wykonaniu ostatniej pełnej kopii zapasowej.
Gdy uruchomiona jest kopia przyrostowa, MariaDB Enterprise Backup porówna poprzednią pełną lub przyrostową kopię zapasową, aby znaleźć ostatnie zmiany.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Przed wykonaniem przyrostowej kopii zapasowej należy upewnić się, że została przygotowana pełna kopia zapasowa. Następnie możesz uruchomić przyrostową kopię zapasową, stosując się do ostatniej pełnej kopii zapasowej.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Po zastosowaniu przyrostowej kopii zapasowej do pełnej kopii zapasowej, katalog pełnej kopii zapasowej będzie teraz zawierał wszystkie dane kopii zapasowej.
Przywrócenie przygotowanej pełnej kopii zapasowej ze wszystkimi zmianami przyrostowymi można wykonać poprzez:
mariabackup --copy-back --target-dir=/backup/full
Aby wykonać przyrostową kopię zapasową w ClusterControl, możesz wybrać przyrostową kopię zapasową mariabackup. Musisz mieć pełną przygotowaną kopię zapasową przed wykonaniem kopii przyrostowej.
ClusterControl automatycznie znajdzie najbliższą pełną kopię zapasową po uruchomieniu kopii przyrostowej. Aby przywrócić kopię zapasową, możesz wybrać pełną przygotowaną kopię zapasową i przywrócić. Zostanie wyświetlony monit o przywrócenie kopii zapasowej na węźle lub na samodzielnym hoście. Przywróci kopię zapasową, w tym zmiany przyrostowe.
Częściowa kopia zapasowa i przywracanie
Częściowa kopia zapasowa określa, którą bazę danych lub tabelę chcesz wykonać. Możesz wybrać listę baz danych i tabel do utworzenia kopii zapasowej lub wykluczyć niektóre bazy danych i tabele z kopii zapasowej. Opcje obejmują:--databases, --databases-exclude, --tables, --tables-exclude
Poniżej znajduje się przykładowy skrypt do wykonania częściowej kopii zapasowej tabeli card_data.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Nadal musisz przygotować pełną częściową kopię zapasową, aby zachować spójność punktu w czasie, uruchamiając poniższe polecenie:
mariabackup --prepare --export --target-dir=/backup/partial
Wykonywanie częściowego przywracania różni się znacznie od przywracania pełnej kopii zapasowej i przyrostowej kopii zapasowej. Musisz przygotować tabele i bazę danych na uruchomionym MariaDB Server, a następnie ręcznie skopiować pliki danych do katalogu danych mysql.
Na przykład chcesz wykonać częściowe przywracanie tabeli card_data (tabela niepartycjonowana).
- Utwórz pustą tabelę card_data o tej samej strukturze w docelowej bazie danych
- Uruchom obszar tabel DISCARD w tabeli card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Skopiuj pliki danych do katalogu danych mysql
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Zmień właściciela plików na mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Ostatnia rzecz, zaimportuj obszar tabel:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Częściowa kopia zapasowa w ClusterControl jest naprawdę prosta, wystarczy włączyć opcję częściowej kopii zapasowej. Daje to możliwość włączenia lub wyłączenia bazy danych i tabel, jak pokazano poniżej:
Następna część jest podobna do pełnej kopii zapasowej i przyrostowej kopii zapasowej, możesz wybierz ustawienia, takie jak szyfrowanie i kompresja.
Przywracanie częściowej kopii zapasowej przebiega dokładnie tak samo, jak przywracanie pełnej kopii zapasowej. Wystarczy wybrać częściową kopię zapasową, a resztą zajmie się ClusterControl.
Odzyskiwanie punktu w czasie
Przywrócenie pełnej lub przyrostowej kopii zapasowej daje kopię zapasową od momentu jej wykonania, ale nie daje żadnych danych, które pojawiły się po wykonaniu kopii zapasowej. Te zmiany byłyby w dzienniku binarnym. Gdy wykonasz przygotowaną kopię zapasową z włączonym binlog, pojawi się plik o nazwie xtrabackup_binlog_info. Plik zawiera binarny plik dziennika i pozycję ostatniego numeru sekwencyjnego.
Możesz wykonać odzyskiwanie do punktu w czasie, wyodrębniając zmiany do SQL, tak jak po zakończeniu przywracania. Możesz uruchomić mysqlbinlog, aby wyodrębnić określony czas w węźle źródłowej bazy danych i zastosować SQL w docelowym/przywróconym węźle bazy danych.
Odzyskiwanie punktu w czasie (PITR) w ClusterControl można włączyć, jak pokazano poniżej:
Musisz określić, do którego punktu chcesz odzyskać, dostępne są dwie opcje które są oparte na czasie lub pozycji. W przypadku czasu wystarczy podać dokładny czas, kiedy dane zostaną przywrócone. W przypadku pozycji w oparciu o pozycję, musisz wypełnić nazwę i pozycję w binlogu. Reszta przywracania jest podobna.
Wnioski
Na razie to wszystko. Jak widzieliśmy powyżej, MariaDB Backup to fajne narzędzie z wieloma opcjami. ClusterControl zapewnia łatwy w użyciu graficzny interfejs użytkownika do wykonywania procedur tworzenia kopii zapasowych. Dodaje również szereg funkcji, takich jak szyfrowanie, kompresja, planowanie, zarządzanie przechowywaniem i automatyczna weryfikacja kopii zapasowych.