Browse Source

migr

master
M.Goldshteyn 1 year ago
commit
86a7940e75
  1. 3
      .idea/.gitignore
  2. 4
      .idea/vcs.xml
  3. 57
      config.txt
  4. 10
      create_db.sh
  5. 11
      create_db.sh.template
  6. 67
      migration.sh
  7. 30
      task.txt

3
.idea/.gitignore vendored

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

4
.idea/vcs.xml

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings" defaultProject="true" />
</project>

57
config.txt

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
#Укажи 1, чтобы снять дамп с event_store, 0 если без event_store
EVENT_STORE=1
#Укажи 1, чтобы скачать папку evt целиком, 0 чтобы скачать только файлы из evt/common
EVT_COMMON=1
# Пароль БД исходного сервера
SOURCE_DB_PASSWORD=anna5kanna
#Имя БД на исходном сервере
SOURCE_DB_NAME=mynewdb
#Имя БД на локальном сервере
DESTINATION_DB_NAME=locality409
#Номер evt на исходном сервере
SOURCE_EVT=evt4
#IP локалки с платформой
DESTINATION_IP=217.107.34.92
#Пользователь локалки с платформой
DESTINATION_USER=root
#Пароль локалки с платформой
DESTINATION_PASSWORD=123saveme
#SSH порт локалки с платформой
DESTINATION_PORT=22
#IP локалки с базой
DESTINATION_DATABASE_IP=217.107.34.92
#Пользователь локалки с базой
DESTINATION_DATABASE_USER=root
#SSH Пароль локалки с базой
DESTINATION_DATABASE_PASSWORD=123saveme
#SSH порт локалки с базой
DESTINATION_DATABASE_PORT=22
#Postgres пароль локалки с базой
DESTINATION_POSTGRES_PASSWORD=anna5kanna
#Где платформа на исходном серевере (не надо добавлять слэш в конце;)
SOURCE_PLATFORM_PATH=/home/platform5-server
#Где платформа на локалке
DESTINATION_PLATFORM_PATH=/home/platform5-server

10
create_db.sh

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
#!/bin/bash
su - postgres -c "PGPASSWORD=\"anna5kanna\" psql -U postgres -c \"create database locality409
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TEMPLATE = template0
CONNECTION LIMIT = -1;\""

11
create_db.sh.template

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
#!/bin/bash
su - postgres -c "PGPASSWORD=\"DESTINATION_POSTGRES_PASSWORD\" psql -U postgres -c \"create database DESTINATION_DB_NAME
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TEMPLATE = template0
CONNECTION LIMIT = -1;\""

67
migration.sh

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
#!/bin/bash
#apt update && apt install sshpass -y
set -a # export variables from config.txt test
source config.txt
set +a # stop exporting
DATE="$(date +%Y-%m-%d_%H-%M-%S)"
echo $DATE
#1. We are on the source (e.g. main)
systemctl is-active --quiet platform5.service && systemctl stop platform5
systemctl is-active --quiet platform6.service && systemctl stop platform6
db_backup() {
echo EVENT_STORE=$EVENT_STORE
if [[ "$EVENT_STORE" == 0 ]]; then
echo Making backup without event_store
PGPASSWORD="$SOURCE_DB_PASSWORD" pg_dump -Fc -T event_store -U postgres $SOURCE_DB_NAME > /var/backups/$SOURCE_DB_NAME.migration.$DATE.sql
elif [[ "$EVENT_STORE" == 1 ]]; then
echo Making backup with event_store
PGPASSWORD="$SOURCE_DB_PASSWORD" pg_dump -Fc -U postgres $SOURCE_DB_NAME > /var/backups/$SOURCE_DB_NAME.migration.$DATE.sql
else echo "EVENT_STORE value must be 0 or 1" && exit
fi
echo "send dump to the destination"
echo Sending db backup to destination server
cd /var/backups/ && yes | sshpass -p "$DESTINATION_DATABASE_PASSWORD" scp -P $DESTINATION_DATABASE_PORT -o StrictHostKeyChecking=no $SOURCE_DB_NAME.migration.$DATE.sql $DESTINATION_DATABASE_USER@$DESTINATION_DATABASE_IP:~/
cd -
}
evt_full_rsync(){
echo "send $SOURCE_EVT to the destination"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing $SOURCE_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/
}
evt_common_files_rsync(){
echo "send files from $SOURCE_EVT/common to the destination"
sshpass -p "$DESTINATION_PASSWORD" ssh $DESTINATION_USER@$DESTINATION_IP -p $DESTINATION_PORT "mkdir -p $DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing -f"- */" -f"+ *" $SOURCE_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/$SOURCE_EVT/common/
}
fonts_rsync(){
echo "send fonts to the destination"
sshpass -p "$DESTINATION_PASSWORD" ssh $DESTINATION_USER@$DESTINATION_IP -p $DESTINATION_PORT "mkdir -p $DESTINATION_PLATFORM_PATH/bin/storage/1/fonts/"
sshpass -p "$DESTINATION_PASSWORD" rsync -e "ssh -p $DESTINATION_PORT" -avz --ignore-existing $SOURCE_PLATFORM_PATH/bin/storage/1/fonts/ $DESTINATION_USER@$DESTINATION_IP:$DESTINATION_PLATFORM_PATH/bin/storage/1/fonts/
}
if [[ "$EVT_COMMON" == 0 ]]; then
echo "Качаю файлы из evt/common"
# evt_common_files_rsync
elif [[ "$EVT_COMMON" == 1 ]]; then
echo "Качаю evt целиком"
# evt_full_rsync
else echo "EVENT_COMMON value must be 0 or 1" && exit
fi
#db_backup
sed -e "s/DESTINATION_DB_NAME/${DESTINATION_DB_NAME}/" \
-e "s/DESTINATION_POSTGRES_PASSWORD/${DESTINATION_POSTGRES_PASSWORD}/"\
create_db.sh.template > create_db.sh
sshpass -p "$DESTINATION_DATABASE_PASSWORD" ssh -p $DESTINATION_DATABASE_PORT $DESTINATION_DATABASE_USER@$DESTINATION_DATABASE_IP 'bash -s' < create_db.sh
#evt_full_rsync
#evt_common_files_rsync
#fonts_rsync
#ssh $DESTINATION_USER@$DESTINATION_IP -p $DESTINATION_PORT "create_db.sh."

30
task.txt

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
1. Стоп сервера
2. Снятие дампа (с евент стором/без евент стора)
5. Отправка его на удаленный сервер/стянуть с удаленного сервера
6. Создание базы
7. Вотсановление дампа
8. скачиванние платформы, ветку берем из конфига. фронт и бэк.
9. рсикаем нужный евт в сторадж.
фонт
из evt/common качаем все файлы , не папки,
скрипт 2 - докачка файлов.
потом отдельно докачиваем папки
если звездочка то все. если не звезочка то перечислкенные через запятую имена папок.
10. Исправление конфига дб конф
в конфиг ставим пароль бд на удаленной. потм прописываем его в дб.конф
11. Докачка нужных файлов. - скрипт2
старт сервиса
Loading…
Cancel
Save