Kopia zapasowa Percona Xtra to narzędzie do tworzenia kopii zapasowych baz danych na gorąco MySQL.
Podczas tworzenia kopii zapasowej danych żadne tabele nie są blokowane, a system kontynuuje działanie bez żadnych ograniczeń.
XtraBackup 2.4 może tworzyć kopie zapasowe tabel InnoDB, XtraDB и MyISAM na serwerach MySQL 5.11, 5.5, 5.6 i 5.7, a także na serwerze Perkona dla MySQL с XtraDB.
Pracować z MySQL 8.x należy zastosować wersję XtraBackup 8.x. W tym artykule będziemy mówić tylko o XtraBackup 2.4.
Główną zaletą XtraBackup jest to, że narzędzie to nadaje się zarówno do tworzenia kopii zapasowych bardzo obciążonych serwerów, jak i do systemów z małą liczbą transakcji.
Jeśli całkowity rozmiar baz danych MySQL jest znaczny (dziesiątki gigabajtów), wówczas standardowe narzędzie mysqldump nie pozwoli na szybkie utworzenie kopii zapasowej, a przywrócenie zrzutu zajmie dużo czasu.
Instalacja
Instalacja XtraBackup z repozytorium trafny Percona.
Uruchom kolejno następujące polecenia:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
2. Po instalacji uruchom polecenie xtrabackup -v
. Ponieważ ważne jest, aby upewnić się, że narzędzie działa poprawnie na serwerze. W rezultacie na ekranie wyświetli się coś takiego:
xtrabackup: rozpoznane argumenty serwera: - datadir=/var/lib/mysql - tmpdir=/tmp - id-serwera=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup wersja 2.4.20 oparta na serwerze MySQL 5.7.26 Linux (x8664) (identyfikator wersji: c8b4056)
Prawa dostępu, uprawnienia i przywileje
XtraBackup powinien być w stanie:
-
Połącz się ze swoim serwerem MySQL.
-
Posiadaj prawa dostępu do katalogu katalog danych.
-
Podczas tworzenia kopii zapasowej należy mieć uprawnienia do zapisu określonego parametru katalog docelowy katalog.
Co to jest katalog danych?
katalog danych to katalog, w którym znajduje się serwer bazy danych MySQL przechowuje dane. Wszystkie bazy danych, wszystkie tabele tam są. W większości dystrybucji Linuksa domyślnym katalogiem jest / var / lib / mysql.
Co to jest katalog docelowy?
katalog docelowy - To jest katalog, w którym zostanie zapisana kopia zapasowa.
Użytkownik bazy danych potrzebuje następujących praw dostępu do tabel i baz danych, których kopia zapasowa ma zostać utworzona:
-
ZAŁADUJ ponownie i zablokuj tabele
-
KLIENT REPLIKACJI
-
UTWÓRZ PRZESTRZEŃ TABELI
-
PROCES
-
SUPER
-
TWORZENIE
-
INSERT
-
SELECT
Konfiguracja
Konfiguracja XtraBackup odbywa się przy użyciu opcji, które zachowują się tak samo jak standardowe opcje MySQL.
Co to znaczy?
Parametry konfiguracyjne można określić w wierszu poleceń lub w pliku konfiguracyjnym DBMS, na przykład w /etc/my.cnf.
Narzędzie XtraBackup odczytuje partycje po uruchomieniu [Mysqld] и [xtrabackup] z plików konfiguracyjnych MySQL. Dzieje się tak, aby narzędzie mogło korzystać z ustawień systemu DBMS bez konieczności ręcznego określania parametrów podczas każdej kopii zapasowej.
Na przykład wartość katalog danych i niektóre parametry InnoDB Otrzymujemy XtraBackup z konfiguracji Twojego systemu DBMS.
Jeśli chcesz, aby XtraBackup działał, nadpisz parametry znajdujące się w tej sekcji [Mysqld], a następnie po prostu określ je w pliku konfiguracyjnym w sekcji [xtrabackup]. Ponieważ zostaną przeczytane później, ich priorytet będzie wyższy.
Nie musisz dodawać żadnych parametrów mój.cnf. Wszystkie wymagane parametry można określić w wierszu poleceń. Zwykle jedyna rzecz, którą można wygodnie umieścić w sekcji [xtrabackup] swój mój.cnf jest parametrem katalog_docelowy, który domyślnie określa katalog, w którym będą umieszczane kopie zapasowe. Ale to jest opcjonalne.
Przykład podania ścieżki do katalogu, w którym znajduje się kopia zapasowa mój.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Skrypt kopii zapasowej
Aby utworzyć kopię zapasową, możesz użyć następującego skryptu:
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup
Co się dzieje podczas wykonywania skryptu?
Na początek czyścimy (usuwamy) katalog, w którym będziemy zapisywać kopię zapasową:
rm -rf /mysql/backup.
Następnie za pomocą narzędzia XtraBackup utwórz kopię zapasową i zapisz ją /mysql/kopia zapasowa/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Wcześniej utworzyliśmy użytkownika w MySQL xtrabackup
z wymaganymi uprawnieniami. Korzystanie z parametru target-dir
podajemy katalog, w którym ma zostać zapisana kopia zapasowa.
Ważny punkt!
Zwróć uwagę na linię skryptu:
xtrabackup --prepare --target-dir=/mysql/backup
Dane katalogowe /mysql/kopia zapasowa nie są spójne, dopóki nie zostaną ugotowane.
Faktem jest, że podczas kopiowania plików mogą wystąpić zmiany. Operacja xtrabackup --prepare --target-dir=/mysql/backup
sprawia, że dane kopii zapasowych są idealnie spójne w czasie.
Operację przygotowania danych można wykonać na dowolnym komputerze. Nie ma potrzeby robić tego na serwerze, na którym znajduje się źródłowy system DBMS. Możesz skopiować kopię zapasową na serwer docelowy i tam ją przygotować.
Ostatnią rzeczą, którą robimy, jest utworzenie archiwum, w którym umieszczamy naszą kopię zapasową:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Przywracanie kopii zapasowej
Zanim będzie można przywrócić kopię zapasową na serwer docelowy, dane muszą przejść fazę przygotowania. Zobacz powyżej, jak to zrobić.
Proces odzyskiwania danych jest bardzo prosty. Musisz wyodrębnić kopię zapasową z archiwum i zastąpić dane katalog danych.
Jak zamienić dane w datadir?
Rozważmy dwie opcje.
opcja 1
Skorzystaj z narzędzia XtraBackup. Musisz określić opcję --kopia zwrotna.
Poniższe polecenie przeniesie kopię zapasową do katalog danych serwer docelowy:
xtrabackup --copy-back --target-dir=/mysql/backup
opcja 2
Możesz to zrobić inaczej, obejść się bez narzędzia XtraBackup.
Wszystko, co musisz zrobić, to skopiować kopię zapasową do katalog danych. Możesz to zrobić za pomocą cp lub rsync.
Ważne jest, aby zrozumieć, że procedura przywracania kopii zapasowej sprowadza się po prostu do zastąpienia zawartości katalogu katalog danych.
Przed rozpoczęciem przywracania kopii zapasowej na serwerze docelowym należy:
-
Zatrzymaj serwer MySQL.
-
Pusty folder katalog danych lub przenieś jego zawartość w inne miejsce. Katalog katalog danych musi być pusty.
Po zakończeniu przesyłania danych do katalog danych Można uruchomić serwer MySQL.
Użyte materiały
Źródło: www.habr.com