MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Архивиране на база данни - Сравняване на MariaDB Mariabackup и Percona Xtrabackup

Вашият сървър на база данни съхранява част от най-ценната информация за вашето предприятие. Гарантирането на надеждни резервни копия на база данни за предотвратяване на загуба на данни в случай на авария или хардуерна повреда е критично поле за отметка.

Независимо дали става въпрос за 24x7 високо натоварен сървър или среда с нисък обем на транзакции, ще се нуждаете от правене на резервни копия безпроблемна процедура, без да нарушавате производителността на сървъра в производствена среда.

В този блог ще разгледаме два от най-използваните инструменти за изпълнение на тази задача, а именно Percona XtraBackup и Mariabackup. Ще прегледаме приликите и разликите между тях, както и как да ги използваме.

Какво е Percona XtraBackup?

Percona XtraBackup е инструмент с отворен код за извършване на архивиране на бази данни MariaDB, MySQL и Percona Server. Той извършва онлайн неблокиране (за поддържаните двигатели), плътно компресирани и защитени пълни резервни копия на транзакционни системи, така че приложенията да останат напълно достъпни за продължителността на прозореца за архивиране.

С помощта на този инструмент можете:

  • Създавайте горещи архиви на InnoDB, които завършват бързо и надеждно, без да поставяте на пауза вашата база данни или да добавяте натоварване към сървъра
  • Правете постепенно архивиране
  • Преместване на таблици между MySQL сървъри онлайн
  • Създавайте лесно нови MySQL подчинени устройства за репликация
  • Предавайте поточно компресирани MySQL архиви към друг сървър
  • Спестете дисково пространство и мрежова честотна лента

Какво е Mariabackup?

Mariabackup е инструмент с отворен код, предоставен от MariaDB за извършване на физическо онлайн архивиране. Това е разклонение на Percona XtraBackup, предназначено да работи с криптирани и компресирани таблици и е препоръчителният метод за архивиране за бази данни на MariaDB.

MariaDB Server 10.1 въведе компресиране на MariaDB и криптиране на данни в покой, но съществуващите решения за архивиране не поддържаха пълна способност за архивиране за тези функции. Затова MariaDB реши да разшири XtraBackup (версия 2.3.8) и нарече това решение Mariabackup.

Разлики между Percona XtraBackup и Mariabackup

Както отбелязахме по-рано, Mariabackup е препоръчителният инструмент за архивиране за MariaDB и основната разлика от XtraBackup е, че работи с криптирани и компресирани таблици.

Както и да е, ако по някаква конкретна причина искате да използвате XtraBackup за вашата база данни MariaDB, има някои точки, които трябва да вземете предвид в зависимост от версията на сървъра на MariaDB, която имате:

  • MariaDB 10.1:С некомпресирани и некриптирани данни на MariaDB можете да използвате XtraBackup. Ако се използва криптиране или компресиране, или когато innodb_page_size е зададен на някаква стойност, различна от 16K, няма да работи.
  • MariaDB 10.2:Може също да искате да опитате да използвате XtraBackup, но имайте предвид, че проблемите вероятно се дължат на грешката в несъвместимостта на формата на журнала за отмяна на MySQL 5.7, която беше коригирана в MariaDB 10.2.2. Поради тази грешка, резервните копия, подготвени с XtraBackup, може да не успеят да възстановят някои транзакции. Само ако стартирате сървъра с настройката innodb_undo_logs=1, това няма да е проблем.
  • MariaDB 10.3 и по-нови версии:Този случай е по-прост. XtraBackup не е съвместим.

Освен това има някои ограничения, които трябва да се вземат предвид при използване на Mariabackup:

  • MyRocks:Започвайки с MariaDB 10.2.16 и MariaDB 10.3.8, Mariabackup ще архивира данните на MyRocks Storage Engine. Понастоящем не се поддържа частично архивиране на данните на MyRocks. Инкременталното архивиране ще съхранява пълно копие на данните на MyRocks.
  • Функционалност за експортиране на файл:Преди MariaDB 10.2.9, Mariabackup не поддържаше функцията --export (той създава файл за експортиране за експортиране на данни от базата данни). Можете да заобиколите това ограничение, като подготвите резервното копие както обикновено (без флага --export), след това стартирате сървъра и изпълните FLUSH TABLES FOR EXPORT.
  • Регистрационни файлове:Версиите на Mariabackup до 10.2.8 не създават празни регистрационни файлове и разчитат на действието --copy-back, изпълнявано от потребителя (което изтрива старите регистрационни файлове на innodb, ако има такива). Ако потребителят не използва --copy-back или се увери, че директорията с данни е празна преди възстановяването, архивите, създадени с тези версии, може да станат непоследователни/повредени (поради наличието на остатъчни регистрационни файлове на InnoDB).
  • Gcrypt:Криптиране, базирано на инструмент за архивиране (gcrypt), не се поддържа в Mariabackup.
  • Опция Innobackupex:Няма символна връзка към innobackupex (вместо това използвайте параметъра --innobackupex). Инструментът innobackupex лепи и предоставя допълнителни функции в сравнение с инструмента innobackup за архивиране на таблици InnoDB и MyISAM.
  • Компактна опция:Опцията --compact не се поддържа.
  • Опция за повторно изграждане на индекси:опцията --rebuild_indexes не се поддържа.
  • Tar за архивни файлове:Поддръжката за --stream=tar беше премахната в Mariabackup 10.1.24 (Опциите --streams прехвърлят архивни файлове към stdout).

И накрая, но не на последно място, Mariabackup може да бъде инсталиран на Windows.

Процес за архивиране Процес на възстановяване

Как да - Percona XtraBackup и Mariabackup

Нека видим как можем да го инсталираме и използваме.

Инсталиране

Имате различни методи за инсталиране както на XtraBackup, така и на Mariabackup. Нека опитаме инсталацията от хранилища.

Инсталиране на XtraBackup

На Debian/Ubuntu
$ wget https://repo.percona.com/apt/percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo dpkg -i percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo apt-get update
$ sudo apt-get install percona-xtrabackup-24
На RedHat/CentOS
$ sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
$ sudo yum install percona-xtrabackup-24

Инсталиране на Mariabackup

В Debian/Ubuntu

Mariabackup е част от MariaDB Server, започвайки с MariaDB 10.1.23.

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu bionic main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server-10.1
На CentOS/RedHat
$ sudo vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-backup

Конфигурация

И Xtrabackup, и Mariabackup четат секциите [mysqld] и [xtrabackup] на всеки конфигурационен файл на MySQL в този ред. По този начин той може да чете параметри на MySQL, като параметри на datadir или InnoDB.

Можем да променим параметрите, включени в секцията [mysqld], като променим стойността им в [xtrabackup], както споменахме по-горе, те се четат в ред, така че последното нещо, което имаме в [xtrabackup], ще има приоритет.

[mysqld]
datadir=/data/datadir
[xtrabackup]
target_dir=/backups/

Потребителят с минималните привилегии, необходими за пълно архивиране, ще бъде ПРЕЗАРЕЖДАНЕ, ЗАКЛЮЧВАНЕ НА ТАБЛИЦИ, ПРОЦЕС И РЕПЛИКАЦИЯ КЛИЕНТ:

mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'Password';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

След това можете да добавите този потребител в конфигурационните файлове на MySQL:

[xtrabackup]
user=backupuser
password=Password

Също така можете да използвате Xtrabackup или Mariabackup за извършване на трансфери на моментни снимки на състоянието, когато използвате Percona XtraDB клъстер или MariaDB Galera клъстер. Трябва да зададете wsrep_sst_method и wsrep_sst_auth променливите в конфигурационните файлове:

[mysqld]
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=backupuser:Password

Или

[mysqld]
wsrep_sst_method=mariabackup
wsrep_sst_auth=backupuser:Password

Употреба

Тъй като Mariabackup е базиран на XtraBackup, той може да се използва по подобен начин.

Сега нека видим пример, използващ и двата метода за създаване, подготовка и възстановяване на пълен архив.

Създаване на резервно копие

За да създадете ново архивиране с XtraBackup или Mariabackup, трябва да добавите опциите --backup и --target-dir към командния ред:

$ xtrabackup --backup --target-dir=/backups/

Или

$ mariabackup --backup --target-dir=/backups/

Целевата директория, където ще се съхранява резервното копие, може да бъде посочена в конфигурационните файлове на MySQL. Процесът на архивиране няма да презапише съществуващите файлове. Ако файлът съществува, архивирането няма да бъде успешно.

Transaction log of lsn (9755450) to (9755467) was copied.
181122 23:02:44 completed OK!

Ако всичко е минало добре, последният ред, който виждате, трябва да бъде "завършен ОК!". Можете да отмените архивирането по всяко време, тъй като то не променя съдържанието на базата данни.

[[email protected] ~]# ls -l /backups/
total 102448
-rw-r----- 1 root root       488 Nov 22 23:02 backup-my.cnf
-rw-r----- 1 root root       482 Nov 22 23:02 ib_buffer_pool
-rw-r----- 1 root root 104857600 Nov 22 23:02 ibdata1
drwxr-x--- 2 root root      4096 Nov 22 23:02 mysql
drwxr-x--- 2 root root      4096 Nov 22 23:02 performance_schema
drwxr-x--- 2 root root      4096 Nov 22 23:02 sakila
drwxr-x--- 2 root root     12288 Nov 22 23:02 sys
-rw-r----- 1 root root        64 Nov 22 23:02 xtrabackup_binlog_info
-rw-r----- 1 root root       113 Nov 22 23:02 xtrabackup_checkpoints
-rw-r----- 1 root root       533 Nov 22 23:02 xtrabackup_info
-rw-r----- 1 root root      2560 Nov 22 23:02 xtrabackup_logfile

Това трябва да бъде съдържанието на вашия архив. Може да се промени в зависимост от вашите бази данни.

Подготовка на резервно копие

Когато създадете резервно копие с XtraBackup или Mariabackup, трябва да го подготвите за възстановяване. Файловете с данни не са последователни, докато не бъдат подготвени, тъй като са били копирани в различно време по време на продължителността на архивирането. Ако се опитате да го възстановите и стартирате вашата база данни, тя ще открие повреда и ще се срине, за да ви попречи да работите с непоследователни данни.

За да подготвите архива, трябва да изпълните командата xtrabackup или mariabackup с опцията --prepare и да посочите целевата директория, където се съхранява архивът.

$ xtrabackup --prepare --target-dir=/backups/

Или

$ mariabackup --prepare --target-dir=/backups/
InnoDB: Shutdown completed; log sequence number 9757224
181122 23:05:29 completed OK!

Последният ред, който виждате, трябва да бъде "Изключването завършено; пореден номер на журнала xxxxxxx" и "завършено ОК!" ако всичко е минало добре. Не се препоръчва да отменяте процеса на подготовка, тъй като това може да причини повреда на файла с данни и архивирането ще стане неизползваемо.

Ако искате да използвате това архивиране с инкрементално архивиране по-късно, трябва да използвате опцията --apply-log-only, когато го подготвяте, или няма да можете да го направите.

Възстановяване на резервно копие

След като подготвите архива, можете да използвате опцията за възстановяване с параметрите --copy-back или --move-back, за да копирате или преместите архива в datadir. Ако нямате достатъчно дисково пространство, вероятно трябва да използвате опцията за преместване. Също така трябва да посочим целевата директория, където се съхранява архива. Имайте предвид, че datadir трябва да е празен и услугата на базата данни трябва да не работи, преди да възстановите архива.

$ xtrabackup --copy-back --target-dir=/backups/

Или

$ mariabackup --copy-back --target-dir=/backups/

Първо ще копира/премести таблиците и индексите на MyISAM, таблиците и индексите на InnoDB след това и най-накрая лог файловете. Той ще запази атрибутите на файла, когато ги копира, може да се наложи да промените собствеността на файловете на mysql, преди да стартирате сървъра на базата данни, тъй като те ще бъдат собственост на потребителя, създал архива.

$ sudo chown -R mysql:mysql /var/lib/mysql

Има няколко параметъра за използване с Xtrabackup и Mariabackup. Можете да проверите тези параметри тук за XtraBackup и тук за Mariabackup.

ClusterControlЕдинична конзола за цялата ви инфраструктура на базата данни Открийте какво още е новото в ClusterControlИнсталирайте ClusterControl БЕЗПЛАТНО

Управление на вашите архиви в ClusterControl

Както видяхме по-горе, пускането на резервно копие не е ракетна наука. Може също да се планира с cron (но се пазете от тихи неуспехи!). Въпреки това, скрипт за редовно създаване на архиви не е решение за управление на архивиране. Имате нужда от начин да докладвате за вашите резервни копия и да предупреждавате за неуспехи. Сега, конфигурирането на архиви във вашата среда и виждането на архивите да работят без грешка не означава, че всичко е наред. Може да сте чували за архивирането на Шрьодингер, което гласи, че състоянието на всяко архивиране е неизвестно, докато не се опита възстановяване. Защото по-лошото нещо, което може да се случи, е бедствие и осъзнавате, че резервните копия са грешни по някаква причина. Опитвате се да възстановите файловете, които са били архивирани, и това не възстановява това, което смятате, че сте архивирали, или изобщо не възстановява! След това има неща като преместване на архивни файлове извън сайта, напр. към външно облачно хранилище, за възстановяване при бедствия. Криптирането и обработката на ключове са важни за сигурността. Запазването на локални, както и външни/архивирани архиви също трябва да се управлява.

Нека видим как ClusterControl може да помогне.

Ако искате да използвате функцията за архивиране на ClusterControl, отидете на ClusterControl -> Изберете Cluster -> Backup и там можете да видите текущите си архиви, да създадете или планирате ново.

Раздел за архивиране на ClusterControl

Използвайки опцията за създаване или график, можем да изберем и двата метода, XtraBackup или Mariabackup. В същия раздел можем да изберем сървъра, от който да вземем архива, да активираме частично архивиране, да изберем къде искате да съхранявате архива и дали искате да качите архива в облака (AWS, Azure или Google Cloud).

ClusterControl Създаване на резервно копие 1

След това можем да изберем параметри за архивиране като компресиране, криптиране и задържане.

ClusterControl Създаване на резервно копие 2

И това трябва да са командите, които ClusterControl ще изпълнява вместо вас:

[16:37:58]: 192.168.100.120: Launching ( LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/my.cnf --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - > /root/backups/BACKUP-13/backup-full-2018-11-14_193757.xbstream.gz ) 2>&1.

Или

[16:29:57]: 192.168.100.131: Launching ( LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - > /root/backups/BACKUP-11/backup-full-2018-11-14_192957.xbstream.gz ) 2>&1.

Тази команда може да е различна в зависимост от избраните от вас параметри.

Както видяхме, ClusterControl е добър приятел, ако искаме да използваме XtraBackup или Mariabackup. Можем да изпълняваме сложни команди за архивиране по лесен начин, като избираме опциите от потребителския интерфейс на ClusterControl.
ClusterControl поддържа както пълно, така и инкрементално архивиране, така че можем да конфигурираме цялата си стратегия за архивиране от удобен потребителски интерфейс.

Заключение

Когато архивирате сървър на MariaDB, се препоръчва да използвате инструмента Mariabackup. Въпреки това, ако по някаква причина предпочитате да използвате XtraBackup, все още можете. Но трябва да имате предвид ограниченията, които се прилагат, както отбелязахме в този блог. И накрая, обсъдихме как скриптът за архивиране на база данни не е същото нещо като решение за управление на архивиране и разгледахме набързо ClusterControl.

Уведомете ни, ако сме пропуснали някакви разлики между XtraBackup и MariaBackup.

Неблокиращите архиви се поддържат за машини за съхранение на InnoDB, XtraDB и HailDB. Следните механизми за съхранение могат да бъдат архивирани чрез кратко спиране на записите в края на архивирането:MyISAM, Merge и Archive, включително разделени таблици, тригери и опции за база данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържете C++ програми към MariaDB

  2. Главният мениджър за висока достъпност (MHA) се сри! Какво да правя сега?

  3. Как работи RPAD() в MariaDB

  4. MariaDB Единици за дата и време

  5. Обявяване на ClusterControl 1.7.3:Подобрена поддръжка на PostgreSQL и нови опции за внедряване в облак