Rose debug info
---------------

Скрипт миграции MySQL базы на удаленный сервер

Код скопировать в файл, например migrate.sh,
и установить ему права на выполнение: chmod u+x migrate.sh
Запуск: ./migrate.sh

#!/bin/bash

# Настройки локального сервера MySQL
localuser='mysqluser' 
localpasswd='mysqlpasswd'
localdbname='DB'

# Настройки сервера Mysql на который заливаем базу
remoteuser='mysqluser' 
remotepasswd='mysqlpasswd'
remotedbname='DB'

# удалять старую базу "yes" Будьте внимательны! Убедитесь, что у вас есть резервная копия!
del='no' 
# Имя новой базы которая будет добавлена если стоит "no"
newdb='DB' 
# ваш удаленный сервер, я рекомендую настроить беспарольный доступ по ключу с помощью ssh-copy-id
sshhost='root@yourhost' 


# Копируем на удаленный сервер дамп базы во временную папку (возможно нужно будет поправить путь к mysqldump)
/usr/local/mysql/bin/mysqldump -u $localuser -p$localpasswd $localdbname | gzip  | ssh  $sshhost 'cat > /tmp/db.sql.gz' 
# Если в конфиге указано del значит удаленную базу сначала удаляем. Если в конфиге стоит нет или любое другое значение, то будет создана новая база
if [ $del = 'yes' ]; then 
# Удаляем старую базу
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'DROP DATABASE $remotedbname;'" 
# Создаем новую базу с тем же именем
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'CREATE DATABASE $remotedbname;'" 
# Заливаем дамп в базу
	ssh $sshhost "zcat /tmp/db.sql.gz | mysql -u $remoteuser -p$remotepasswd $remotedbname" 
# Удаляем загруженный дамп из временной папки
	ssh $sshhost "rm -f /tmp/db.sql.gz" 
else
# Создаем новую базу
	ssh $sshhost "mysql -u $remoteuser -p$remotepasswd -e 'CREATE DATABASE $newdb;'" 
# Заливаем дамп в новую базу
	ssh $sshhost "zcat /tmp/db.sql.gz | mysql -u $remoteuser -p$remotepasswd $newdb" 
# Удаляем дамп из временной папки
	ssh $sshhost "rm -f /tmp/db.sql.gz" 
fi
Поделиться
Отправить
 184   2021   linux