docker exec -it имяКонтейнераПостгрес psql -U имяРутЮзера
пользовательпарольбазаCREATE USER пользователь WITH PASSWORD 'пароль';
CREATE DATABASE база TEMPLATE template0 ENCODING 'UNICODE';
ALTER DATABASE база OWNER TO пользователь;
GRANT ALL PRIVILEGES ON DATABASE база TO пользователь;
docker exec -it имяКонтейнераПостгрес psql -U имяРутЮзера \
-c "CREATE USER пользователь WITH PASSWORD 'пароль';" \
-c "CREATE DATABASE база TEMPLATE template0 ENCODING 'UNICODE';" \
-c "ALTER DATABASE база OWNER TO пользователь;" \
-c "GRANT ALL PRIVILEGES ON DATABASE база TO пользователь;"
всех баз. Два варианта, со сжатием и без сжатия:
$(date +%Y-%m-%d_%H_%M_%S)Эти переменные, добавляют дату, к названию файла бэкапа.
docker exec -it имяКонтейнераПостгрес pg_dumpall -c -U имяРутЮзера > /путь/postgres_backup_$(date +"%Y-%m-%d_%H_%M_%S").sql
docker exec -it имяКонтейнераПостгрес pg_dumpall -c -U имяРутЮзера | gzip > /путь/postgres_backup_$(date +"%Y-%m-%d_%H_%M_%S").gz
cat /путь/postgres_backup_18-02-2021_18_30_02.sql | docker exec -i имяКонтейнераПостгрес psql -U имяРутЮзера
gunzip < /путь/postgres_backup_18-02-2021_18_30_02.gz | docker exec -i имяКонтейнераПостгрес psql -U имяРутЮзера -d имяРутБД
одной конкретной базы:В примере база
wikijs:
docker exec -it имяКонтейнераПостгрес pg_dump -c -U имяРутЮзера wikijs > /путь/wikijs_backup.sql
docker exec -it имяКонтейнераПостгрес pg_dump -c -U имяРутЮзера wikijs | gzip > /путь/wikijs_backup.gz
Есть отличие в восстановлении
однойбазы командойpg_dump, от восстановлениявсехбаз командойpg_dumpall, и оно в том, что при восстановленииоднойконкретной базы, этобаза, и еепользователь, должны бытьзаранее созданы, до команды восстановления.
В примере база
wikijs.
cat /путь/wikijs_backup.sql | docker exec -i имяКонтейнераПостгрес psql -U имяРутЮзера wikijs
gunzip < /путь/wikijs_backup.gz | docker exec -i имяКонтейнераПостгрес psql -U имяРутЮзера wikijs