Инструменты пользователя

Инструменты сайта


wiki:technical:restore-replication-from-dump

Это старая версия документа!


Восстановление репликации master-slave MySQL

Действия на мастере

# На мастере запоминаем текущую позицию и имя файла:
 
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-bin.045317
Position: 41951754
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)  
# На мастере выполняем дамп нужной БД и переливаем ее на Slave:
 
mysqldump -u root -p'$PASSWD' $DB_NAME --add-drop-table | gzip -c | ssh $IP-SLAVE 'cat > /root/dump.sql.gz'

На слейве

# На слейве разворачиваем дамп в БД:
 
zcat /root/dump.sql.gz | mysql -u 'root' -p'$PAsswd' $DB_NAME
 
# На слейве меняем файл и позицию 
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.045317', MASTER_LOG_POS=41951754;
 
# И стартуем репликацию:
mysql> START SLAVE;

Если дамп сделан без проверки удаления и очистки таблиц, то можно очистить так:

mysqldump  --add-drop-table --no-data $DB_NAME | grep ^DROP | sed -e 's/DROP TABLE IF EXISTS/TRUNCATE TABLE/g' | mysql  $DB_NAME

Иногда следует обернуть TRUNCATE в SET FOREIGN_KEY_CHECKS=0; и SET FOREIGN_KEY_CHECKS=1;:

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE `macro_estat_all_data`;
TRUNCATE TABLE `macro_estat_geo`;
TRUNCATE TABLE `macro_estat_items`;
TRUNCATE TABLE `macro_estat_nace_r2`;
TRUNCATE TABLE `macro_estat_s_adj`;
TRUNCATE TABLE `macro_estat_tasks`;
TRUNCATE TABLE `macro_estat_units`;
TRUNCATE TABLE `macro_tabs`;
TRUNCATE TABLE `sources`;
SET FOREIGN_KEY_CHECKS=1;
wiki/technical/restore-replication-from-dump.1661970794.txt.gz · Последнее изменение: 2022/08/31 21:33 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki