Метод SST xtrabackup-v2
В MariaDB 10.1 и более поздних версиях, рекомендуется использовать метод резервного копирования Mariabackup вместо Percona XtraBackup.
В MariaDB 10.3, Percona XtraBackup не поддерживается. См. Обзор Percona XtraBackup: Совместимость с MariaDB для получения дополнительной информации.
В MariaDB 10.2 и MariaDB 10.1, Percona XtraBackup поддерживается только частично. См. Обзор Percona XtraBackup: Совместимость с MariaDB для получения дополнительной информации.
Метод xtrabackup-v2 SST использует утилиту Percona XtraBackup для выполнения SST. Это один из методов, который не блокирует узел-донор.
Обратите внимание, что если вы используете метод xtrabackup-v2 SST, вам также необходимо установить socat на сервере. Это необходимо для потоковой передачи резервной копии с узла-донора на узел-приёмник.
Поскольку Percona XtraBackup — это продукт сторонних разработчиков, он может потребовать дополнительной установки и конфигурации. Обратитесь к документации Percona по xtrabackup SST для получения информации от производителя.
Выбор Percona XtraBackup для SST
Чтобы использовать метод xtrabackup-v2 SST, необходимо установить wsrep_sst_method=xtrabackup-v2 на узле-доноре и узле-приёмнике. Его можно изменить динамически с помощью SET GLOBAL на узле, который вы намереваетесь использовать в качестве донора SST. Например:
SET GLOBAL wsrep_sst_method='xtrabackup-v2';
Его можно установить в группе параметров сервера группа параметров в файле параметров файл параметров перед запуском узла:
[mariadb] ... wsrep_sst_method = xtrabackup-v2
Для корректной работы SST узел-донор и узел-приёмник должны использовать один и тот же метод SST. Поэтому рекомендуется установить wsrep_sst_method на все узлы в одинаковом значении, так как любой узел может быть узлом-донором или узлом-приёмником в некоторый момент.
Аутентификация и привилегии
Чтобы использовать метод xtrabackup-v2 SST, Percona XtraBackup должен иметь возможность аутентифицироваться локально на узле-доноре, чтобы создать резервную копию для потоковой передачи на узел-приёмник. Вы можете указать узлу-донору имя пользователя и пароль, установив системную переменную wsrep_sst_auth. Ее можно изменить динамически с помощью SET GLOBAL на узле, который вы намереваетесь использовать в качестве донора SST. Например:
SET GLOBAL wsrep_sst_auth = 'xtrabackup:mypassword';
Также её можно установить в группе параметров сервера группа параметров в файле параметров файл параметров перед запуском узла:
[mariadb] ... wsrep_sst_auth = xtrabackup:mypassword
Некоторые плагины аутентификации не требуют пароля. Например, плагины аутентификации unix_socket и gssapi не требуют пароля. Если вы используете учётную запись пользователя, которая не требует пароля для входа, вы можете оставить компонент пароля в wsrep_sst_auth пустым. Например:
[mariadb] ... wsrep_sst_auth = xtrabackup:
Учётная запись пользователя, выполняющая резервное копирование для SST, должна иметь те же привилегии, что и Percona XtraBackup, которые являются RELOAD , PROCESS, LOCK TABLES и REPLICATION CLIENT глобальными привилегиями. Для большей безопасности следует убедиться, что эти привилегии установлены на каждом узле вашего кластера. Percona XtraBackup подключается локально на узле-доноре для выполнения резервного копирования, поэтому следующий пользователь будет достаточным:
CREATE USER 'xtrabackup'@'localhost' IDENTIFIED BY 'mypassword'; GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'xtrabackup'@'localhost';
Беспарольная аутентификация - Unix-сокет
Можно использовать плагин аутентификации unix_socket для учётной записи пользователя, выполняющего SST. Это даёт преимущество — не нужно настраивать текстовый пароль в wsrep_sst_auth.
Учётная запись пользователя должна иметь то же имя, что и учётная запись пользователя операционной системы, которая запускает процесс mysqld. На многих системах это учётная запись пользователя, настроенная как параметр user, и по умолчанию она обычно равна mysql.
Например, если плагин аутентификации unix_socket уже установлен, вы можете выполнить следующее, чтобы создать учётную запись пользователя:
CREATE USER 'mysql'@'localhost' IDENTIFIED VIA unix_socket; GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'mysql'@'localhost';
А затем, чтобы настроить wsrep_sst_auth, вы можете установить следующее в группе параметров сервера группа параметров в файле параметров файл параметров перед запуском узла:
[mariadb] ... wsrep_sst_auth = mysql:
Беспарольная аутентификация - GSSAPI
Можно использовать плагин аутентификации gssapi для учётной записи пользователя, выполняющего SST. Это даёт преимущество — не нужно настраивать текстовый пароль в wsrep_sst_auth.
Следующие шаги необходимо выполнить предварительно:
- Вам нужен KDC, работающий под MIT Kerberos или Microsoft Active Directory.
- Вам потребуется создать файл keytab для сервера MariaDB.
- Вам потребуется установить пакет, содержащий плагин аутентификации
gssapi. - Вам потребуется установить плагин в MariaDB, чтобы плагин аутентификации
gssapiбыл доступен для использования. - Вам потребуется настроить плагин.
- Вам потребуется создать учётную запись пользователя, которая аутентифицируется с помощью плагина аутентификации
gssapi, чтобы учётная запись пользователя могла использоваться для SST. Эта учётная запись должна соответствовать учётной записи пользователя, которая существует в KDC.
Например, вы можете выполнить следующее, чтобы создать учётную запись пользователя в MariaDB:
CREATE USER 'xtrabackup'@'localhost' IDENTIFIED VIA gssapi; GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'xtrabackup'@'localhost';
А затем, чтобы настроить wsrep_sst_auth, вы можете установить следующее в группе параметров сервера группа параметров в файле параметров файл параметров перед запуском узла:
[mariadb] ... wsrep_sst_auth = xtrabackup:
Выбор узла-донора
При использовании Percona XtraBackup для создания резервной копии SST на узле-доноре, XtraBackup на короткое время требует системной блокировки в конце резервного копирования. Это выполняется с помощью FLUSH TABLES WITH READ LOCK.
Если определённый узел в вашем кластере работает как главный узел, получая весь трафик записей приложения, то этот узел обычно не следует использовать в качестве узла-донора, поскольку системная блокировка может помешать приложению. В этом случае вы можете определить один или несколько предпочтительных узлов-доноров, установив системную переменную wsrep_sst_donor.
Например, предположим, что у нас есть кластер из 5 узлов с узлами node1, node2, node3, node4, и node5, и предположим, что node1 является главным узлом. Предпочтительные узлы-доноры для node2 можно настроить, установив следующее в группе параметров сервера группа параметров в файле параметров файл параметров перед запуском узла:
[mariadb] ... wsrep_sst_donor=node3,node4,node5,
Кома в конце указывает серверу разрешить любой другой узел как донор, когда предпочтительные доноры недоступны. Таким образом, если node1 является единственным оставшимся узлом в кластере, запятая позволяет использовать его в качестве узла-донора.
Зависимость от Socat
В процессе SST узел-донор использует socat для потоковой передачи резервной копии на узел-приёмник. Затем узел-приёмник подготавливает резервную копию перед её восстановлением. Утилита socat должна быть установлена на узле-доноре и на узле-приёмнике, для того чтобы это работало. В противном случае журнал ошибок MariaDB будет содержать ошибку, подобную:
WSREP_SST: [ERROR] socat not found in path: /usr/sbin:/sbin:/usr//bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin (20180122 14:55:32.993)
Установка Socat на RHEL/CentOS
На RHEL/CentOS, socat может быть установлен из репозитория Extra Packages for Enterprise Linux (EPEL).
TLS
Этот метод SST поддерживает три различных метода TLS. Конкретный метод может быть выбран путём установки опции encrypt в разделе [sst] файла конфигурации MariaDB. Варианты:
- TLS с использованием шифрования OpenSSL, встроенного в
socat(encrypt=2) - TLS с использованием шифрования OpenSSL с сертификатами и ключами, совместимыми с Galera (
encrypt=3) - TLS с использованием шифрования OpenSSL с сертификатами и ключами, совместимыми с MariaDB (
encrypt=4)
Обратите внимание, что encrypt=1 относится к методу шифрования TLS, который устарел и удалён.
TLS с использованием шифрования OpenSSL, встроенного в Socat
Для генерации ключей, совместимых с этим методом шифрования, вы можете следовать этим инструкциям.
Например:
- Сначала сгенерируйте ключи и сертификаты:
FILENAME=sst openssl genrsa -out $FILENAME.key 1024 openssl req -new -key $FILENAME.key -x509 -days 3653 -out $FILENAME.crt cat $FILENAME.key $FILENAME.crt >$FILENAME.pem chmod 600 $FILENAME.key $FILENAME.pem
- На некоторых системах вам также может потребоваться добавить dhparams к сертификату:
openssl dhparam -out dhparams.pem 2048 cat dhparams.pem >> sst.pem
- Затем скопируйте сертификат и ключи на все узлы в кластере.
- Затем настройте следующее на всех узлах в кластере:
[sst] encrypt=2 tca=/etc/my.cnf.d/certificates/sst.crt tcert=/etc/my.cnf.d/certificates/sst.pem
Но замените пути на соответствующие вашему системному окружению.
Это должно обеспечить шифрование ваших SST.
Шифрование TLS с использованием OpenSSL, сертификатов и ключей, совместимых с Galera
Для генерации ключей, совместимых с этим методом шифрования, вы можете следовать этим инструкциям.
Например:
- Сначала сгенерируйте ключи и сертификаты:
# CA openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 365000 \ -key ca-key.pem -out ca-cert.pem # server1 openssl req -newkey rsa:2048 -days 365000 \ -nodes -keyout server1-key.pem -out server1-req.pem openssl rsa -in server1-key.pem -out server1-key.pem openssl x509 -req -in server1-req.pem -days 365000 \ -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 \ -out server1-cert.pem
- Затем скопируйте сертификат и ключи на все узлы кластера.
- Затем настройте следующее на всех узлах кластера:
[sst] encrypt=3 tkey=/etc/my.cnf.d/certificates/server1-key.pem tcert=/etc/my.cnf.d/certificates/server1-cert.pem
Но замените пути на соответствующие вашему системному окружению.
Это должно обеспечить шифрование ваших SST.
Шифрование TLS с использованием OpenSSL, сертификатов и ключей, совместимых с MariaDB
Для генерации ключей, совместимых с этим методом шифрования, вы можете следовать этим инструкциям.
Например:
- Сначала сгенерируйте ключи и сертификаты:
# CA openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 365000 \ -key ca-key.pem -out ca-cert.pem # server1 openssl req -newkey rsa:2048 -days 365000 \ -nodes -keyout server1-key.pem -out server1-req.pem openssl rsa -in server1-key.pem -out server1-key.pem openssl x509 -req -in server1-req.pem -days 365000 \ -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 \ -out server1-cert.pem
- Затем скопируйте сертификат и ключи на все узлы кластера.
- Затем настройте следующее на всех узлах кластера:
[sst] encrypt=4 ssl-ca=/etc/my.cnf.d/certificates/ca-cert.pem ssl-cert=/etc/my.cnf.d/certificates/server1-cert.pem ssl-key=/etc/my.cnf.d/certificates/server1-key.pem
Но замените пути на соответствующие вашему системному окружению.
Это должно обеспечить шифрование ваших SST.
Логи
Метод xtrabackup-v2 SST имеет собственные логи, отдельные от логирования сервера MariaDB.
Логирование в SST логи
По умолчанию на узле-доноре логирование происходит в innobackup.backup.log. Этот файл логов расположен в datadir.
По умолчанию на узле-присоединителе логирование происходит в innobackup.prepare.log и innobackup.move.log. Эти файлы логов находятся в каталоге .sst, который является скрытым каталогом внутри datadir.
Эти файлы логов перезаписываются каждым последующим SST, поэтому, если SST завершается неудачно, лучше всего скопировать их в безопасное место перед запуском следующего SST, чтобы можно было проанализировать файлы логов. См. MDEV-17973 по этому поводу.
Логирование в Syslog
Вы можете перенаправить SST логи в syslog, установив следующее в группе опций [sst] группы опций в файле опций файле опций:
[sst] sst-syslog=1
Вы также можете перенаправить SST логи в syslog, установив следующее в группе опций [mysqld_safe] группы опций в файле опций файле опций:
[mysqld_safe] syslog
Выполнение SST с адресами IPv6
Если вы выполняете Percona XtraBackup SST с адресами IPv6, то утилите socat необходимо передать опцию pf=ip6. Это можно сделать, установив опцию sockopt в группе опций [sst] группы опций в файле опций файле опций. Например:
[sst] sockopt=",pf=ip6"
Дополнительную информацию см. в MDEV-18797.
Ручная SST с Percona XtraBackup
В некоторых случаях, если автоматические SST Galera Cluster постоянно завершаются неудачно, может быть полезно выполнить «ручную SST». Смотрите следующую страницу, чтобы узнать, как это сделать:
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/xtrabackup-v2-sst-method/