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.txt · Последнее изменение: 2022/08/31 21:33 — Diman