Перейти на домашнюю страницу

mariadb, Восстановление репликации путём полного копирования каталогов

Оригинальная инструкция: https://mariadb.com/kb/en/mariadb/setting-up-replication/

Грубый метод восстановления репликации, основанный на подмене всех файлов slave-сервера на файлы с master-сервера.

Оба сервера в примере на CentOS 7.

* * *

1. Останавливаем приложения, обращающиеся к базам

2. На master-сервере MariaDB выводим текущую позицию в bin-логе и сразу останавливаем службу MariaDB. Позицию и имя лога выписываем.

# mysql -u root -p -e "show master status;" && systemctl stop mariadb.service


3. На slave-сервере останавливаем службу MariaDB

# systemctl stop mariadb.service


4. На slave-сервере можно предварительно посмотреть права на файлы в каталоге MariaDB и выписать эту информацию куда-нибудь

# ls -lZ /var/lib/mysql/


5. На slave-сервере удаляем файлы из каталога MariaDB

# rm -rf /var/lib/mysql/*


6. На slave-сервере копируем файлы с master-сервера

# scp -r -p root@192.168.0.1:/var/lib/mysql/* /var/lib/mysql/


7. На slave-сервере удаляем файл с UUID, так как он должен быть уникален

# rm /var/lib/mysql/auto.cnf


8. На slave-сервере возвращаем владельца на файлы и каталоги

# chown -R mysql.mysql /var/lib/mysql/*


9. На slave-сервере восстанавливаем SELinux-права на файлы и каталоги

# restorecon -R -Fvv /var/lib/mysql/*


10. Запускаем на master-сервере службу MariaDB

# systemctl start mariadb.service


11. Запускаем slave-сервере службу MariaDB

# systemctl start mariadb.service


12. Slave-сервер в sql-консоли настраиваем на master-сервер
MASTER_LOG_FILE и MASTER_LOG_POS указываем те, что выписали в пункте №2.

# mysql -u root -p

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='master.domain.com',
  MASTER_USER='replication_user',
  MASTER_PASSWORD='bigs3cret',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mariadb-bin.000096',
  MASTER_LOG_POS=568,
  MASTER_CONNECT_RETRY=60;


13. Slave-серверу в sql-консоли посылаем команду начать репликацию

MariaDB [(none)]> START SLAVE;


Готово

* * *

Проверка

На master-сервере

sql> SHOW MASTER STATUS \G;


На slave-сервере

sql> SHOW SLAVE STATUS \G;


или

sql> SHOW ALL SLAVES STATUS \G;


На обоих серверах для проверки состояния Semisynchronous-репликации есть команда

sql> SHOW STATUS LIKE 'Rpl_semi_sync%';

#centos #mariadb #linux #субд

2019-08-20 22:02:56