Tworzenie kopii zapasowej MySQL za pomocą narzędzia XtraBackup

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 InnoDBXtraDB и 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)

Tworzenie kopii zapasowej MySQL za pomocą narzędzia XtraBackup

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

Oficjalna dokumentacja Perkona XtraBackup.

Źródło: www.habr.com

Dodaj komentarz