Руководство по ручному SST для узла кластера Galera с Mariabackup
Иногда полезно выполнить «ручной SST», когда обычные SST Galera неуспешны. Это особенно полезно, когда datadir кластера очень велик, так как в этом случае обычный SST может долго выполняться.
Ручной SST по существу состоит из создания резервной копии донора, загрузки резервной копии на присоединившийся узел и последующего ручного редактирования состояния кластера на узле присоединения. Эта страница покажет, как выполнить этот процесс с помощью Mariabackup.
Процесс
- Убедитесь, что донор и присоединившийся узел имеют одинаковую версию Mariabackup.
mariabackup --version
- Создайте директорию резервной копии на доноре.
MYSQL_BACKUP_DIR=/mysql_backup mkdir $MYSQL_BACKUP_DIR
- Создайте полную резервную копию узла-донора с
mariabackup. Также должен быть предоставлен параметр--galera-info, чтобы резервная копия включала состояние кластера узла.
DB_USER=sstuser DB_USER_PASS=password mariabackup --backup --galera-info \ --target-dir=$MYSQL_BACKUP_DIR \ --user=$DB_USER \ --password=$DB_USER_PASS
- Проверьте, что процесс MariaDB Server остановлен на узле-присоединении. Это зависит от вашего менеджера службы.
Например, на системах systemd можно выполнить:
systemctl status mariadb
- Создайте директорию резервной копии на узле-присоединении.
MYSQL_BACKUP_DIR=/mysql_backup mkdir $MYSQL_BACKUP_DIR
- Скопируйте резервную копию с узла-донора на узел-присоединение.
OS_USER=dba
JOINER_HOST=dbserver2.mariadb.com
rsync -av $MYSQL_BACKUP_DIR/* ${OS_USER}@${JOINER_HOST}:${MYSQL_BACKUP_DIR}
- Подготовьте резервную копию на узле-присоединении.
mariabackup --prepare \ --target-dir=$MYSQL_BACKUP_DIR
- Получите идентификатор версии Galera Cluster с файла
grastate.datна узле-доноре.
MYSQL_DATADIR=/var/lib/mysql cat $MYSQL_DATADIR/grastate.dat | grep version
Например, очень распространённый номер версии — "2.1".
- Получите состояние кластера узла из файла
xtrabackup_galera_infoв резервной копии, скопированной на узел-присоединение.
cat $MYSQL_BACKUP_DIR/xtrabackup_galera_info
Файл содержит значения переменных состояния wsrep_local_state_uuid и wsrep_last_committed.
Значения записаны в следующем формате:
wsrep_local_state_uuid:wsrep_last_committed
Например:
d38587ce-246c-11e5-bcce-6bbd0831cc0f:1352215
- Создайте файл
grastate.datв директории резервной копии узла-присоединения. Идентификатор версии Galera Cluster, uuid кластера и seqno из предыдущих шагов будут использованы для заполнения соответствующих полей.
Например, с использованием примерных значений из двух предыдущих шагов можно сделать:
sudo tee $MYSQL_BACKUP_DIR/grastate.dat <<EOF # GALERA saved state version: 2.1 uuid: d38587ce-246c-11e5-bcce-6bbd0831cc0f seqno: 1352215 safe_to_bootstrap: 0 EOF
- Удалите существующее содержимое файла
datadirна узле-присоединении.
MYSQL_DATADIR=/var/lib/mysql rm -Rf $MYSQL_DATADIR/*
- Скопируйте содержимое директории резервной копии в
datadirна узле-присоединении.
mariabackup --copy-back \ --target-dir=$MYSQL_BACKUP_DIR
- Убедитесь, что разрешения на
datadirправильные на узле-присоединении.
chown -R mysql:mysql $MYSQL_DATADIR/
- Запустите процесс MariaDB Server на узле-присоединении. Это зависит от вашего менеджера службы.
Например, на системах systemd можно выполнить:
systemctl start mariadb
- Следите за журналом ошибок MariaDB на узле-присоединении и убедитесь, что узел не должен выполнять обычные SST из-за ручного SST.
tail -f /var/log/mysql/mysqld.log
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/manual-sst-of-galera-cluster-node-with-mariabackup/