wiki:technical:restore-replication-from-dump
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| wiki:technical:restore-replication-from-dump [2023/09/13 13:45] – [Для нестандартных случаев] Diman | wiki:technical:restore-replication-from-dump [2023/10/04 22:13] (текущий) – [Скрипты для выполнения репликации] Diman | ||
|---|---|---|---|
| Строка 18: | Строка 18: | ||
| # На мастере выполняем дамп нужной БД и переливаем ее на Slave: | # На мастере выполняем дамп нужной БД и переливаем ее на Slave: | ||
| - | mysqldump -u root -p' | + | mysqldump -u root -p' |
| </ | </ | ||
| Строка 68: | Строка 68: | ||
| # На целевой машине слушаем порт 54321 через netcat | # На целевой машине слушаем порт 54321 через netcat | ||
| - | nc -l 54321 | gzip -d -c | mysql < | + | nc -l 54321 | gzip -d -c | mysql $DB_NAME |
| ##### | ##### | ||
| # На исходной машине начинаем передачу данных, | # На исходной машине начинаем передачу данных, | ||
| - | mysqldump -u< | + | mysqldump -u root -p$PASSWD $DB_NAME --insert-ignore --skip-lock-tables --single-transaction=TRUE |
| + | |||
| + | </ | ||
| + | |||
| + | Можно еще заморочиться и добавить шифрование в пайпы. | ||
| + | |||
| + | <code bash> | ||
| + | # На исходном сервере шифруем паролем 256256 | ||
| + | / | ||
| + | |||
| + | # На целевом расшифровываем тем же паролем | ||
| + | / | ||
| </ | </ | ||
| Откупориваем напиток и следим за выполнением дампа | Откупориваем напиток и следим за выполнением дампа | ||
| + | |||
| + | ===== Скрипты для выполнения репликации ===== | ||
| + | |||
| + | Как и любая рутинная работа, | ||
| + | ==== Скрипт для мастера ==== | ||
| + | |||
| + | <code bash> | ||
| + | #/bin/bash | ||
| + | |||
| + | SLAVE=" | ||
| + | MysqlPass=' | ||
| + | DbList=" | ||
| + | |||
| + | #-- | ||
| + | LOG=/ | ||
| + | |||
| + | log(){ echo " | ||
| + | |||
| + | log " | ||
| + | |||
| + | FILE=$(mysql -e "show master status\G" | ||
| + | POS=$(mysql -e "show master status\G" | ||
| + | log "File $FILE, POSITION $POS" | ||
| + | |||
| + | for db in $DbList; do | ||
| + | log "start dump $db" | ||
| + | mysqldump -u root -p$MysqlPass --add-drop-table --insert-ignore --skip-lock-tables --single-transaction=TRUE -B $db 2>/ | ||
| + | log "end dump $db" | ||
| + | done | ||
| + | |||
| + | log "start resore in $SLAVE" | ||
| + | ssh $SLAVE "/ | ||
| + | log "end restore in $SLAVE" | ||
| + | log " | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Скрипт для SLAVE ==== | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | #!/bin/bash | ||
| + | |||
| + | MASTER_IP=' | ||
| + | ARX_PATH='/ | ||
| + | ##-- | ||
| + | |||
| + | if [ ! -z " | ||
| + | FILE=$1 | ||
| + | fi | ||
| + | |||
| + | if [ ! -z " | ||
| + | POS=$2 | ||
| + | fi | ||
| + | #-- | ||
| + | LOG=/ | ||
| + | |||
| + | log(){ echo " | ||
| + | |||
| + | log " | ||
| + | |||
| + | DumpList=$(find $ARX_PATH -name ' | ||
| + | |||
| + | for file in $DumpList; do | ||
| + | db=$(echo $file| sed " | ||
| + | mysql -e " | ||
| + | log "start restore $db from $file" | ||
| + | zcat $file | mysql -u root $db | ||
| + | log "end dump $db" | ||
| + | done | ||
| + | |||
| + | log "end dumps" | ||
| + | |||
| + | if [ ! -z " | ||
| + | log "$FILE $POS" | ||
| + | log "Start Replica" | ||
| + | mysql -e " | ||
| + | mysql -e "START REPLICA;" | ||
| + | mysql -e "SHOW REPLICA STATUS\G" | ||
| + | fi | ||
| + | |||
| + | log "<<< | ||
| + | |||
| + | |||
| + | |||
| + | </ | ||
wiki/technical/restore-replication-from-dump.1694601928.txt.gz · Последнее изменение: — Diman
