Работа с бекапами в Docker
Переименование бд
- Скорее всего, на локалке уже "накачен" бекап, так что надо переименовать бд
- Подключаемся:
psql -U postgres
- ^попросит пароль - его можно взять из
.env
- Переименовываем:
alter database risx rename to risx_;
- Важно: нужно отключить все соединения к бд (в тч подключение из PyCharm через вкладку Database)
Отключить активные соединения к бд
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'risx'
AND pid <> pg_backend_pid();
Накатить бекап
- Если прислали архив, типа
tar.gz
, надо его разархивировать в .sql
-файл
- Далее накатить в Docker:
cat {backup}.sql | docker exec -i postgresql psql -U postgres
cat backups/{backup}.sql | docker exec -i risx-deploy_db_1 psql -U postgres
- ^этот вариант для небольших бекапов
- Вариант для больших бекапов:
docker cp {backup}.dump {postgresql}:/db.dump
docker exec -it postgresql bash
# Для .dump файлов
pg_restore -U postgres -d risx --no-owner -1 /db.dump
# Для .sql файлов
psql -U postgres -d risx -f db.dump
docker cp C:\Users\potyk\Downloads\backup\backup.sql postgresql:/db.dump
docker exec -it postgresql bash
# Для .dump файлов
pg_restore -U postgres -d risx --no-owner -1 /db.dump
# Для .sql файлов
psql -U postgres -d risx -f db.dump
Сброс пароля
docker exec -i postgresql psql -h localhost -U postgres -c "ALTER USER postgres PASSWORD '12345';"