Резервное копирование и восстановление базы данных Promuc FrameWork

Создание дампа базы данных

  1. Останавливаем сервис FrameWork

cd /opt/promuc
./do.sh framework down
  1. Создаём дамп

docker exec -i postgres pg_dump -U postgres -d framework -Fc -v --no-owner --no-privileges --no-tablespaces > dump.sql
  1. Запускаем сервис FrameWork

./do.sh framework up -d

Восстановление дампа базы данных

Предупреждение

Восстановление данным способом выполняется в рамках аналогичной версии docker-образа сервиса postgres

  1. Останавливаем сервис FrameWork

cd /opt/promuc
./do.sh framework down
  1. Удаляем и создаём базу данных:

docker exec postgres dropdb -U postgres framework
docker exec postgres createdb -U postgres -O framework framework
  1. Подготавливаем базу данных к восстановлению

docker exec postgres psql -U postgres -d framework -c "SELECT timescaledb_pre_restore();"
  1. Восстанавливаем базу данных

  • если дамп базы данных был выгружен с параметром -Fc:

docker exec -i postgres pg_restore -U postgres -d framework -Fc -v --no-owner --no-privileges < dump.sql
  • если дамп базы данных был выгружен в текстовом формате, без параметра -Fc:

docker exec -i postgres psql -U postgres framework < dump.sql
  1. Меняем владельца таблиц и последовательностей в схеме public

for tbl in `docker exec -i postgres psql -U postgres -d framework -qAt -c "select tablename from pg_tables where schemaname = 'public';"` ; do docker exec -i postgres psql -U postgres -d framework -c "alter table \"$tbl\" owner to framework"; done
for tbl in `docker exec -i postgres psql -U postgres -d framework -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';"` ; do docker exec -i postgres psql -U postgres -d framework -c "alter sequence \"$tbl\" owner to framework"; done
  1. Завершаем восстановление

docker exec postgres psql -U postgres -d framework -c "SELECT timescaledb_post_restore();"
  1. Запускаем сервис FrameWork

./do.sh framework up -d
  1. Перезапускаем сервис Gitea

./do.sh gitea up -d --force-recreate