ドッカー化されたPostgreSQLデータベースのバックアップ/復元 質問する

ドッカー化されたPostgreSQLデータベースのバックアップ/復元 質問する

Docker Web サイトで説明されているように PostgreSQL データベースをバックアップ/復元しようとしていますが、データが復元されません。

データベース イメージで使用されるボリュームは次のとおりです。

VOLUME  ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

CMD は次のとおりです。

CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]

次のコマンドで DB コンテナを作成します。

docker run -it --name "$DB_CONTAINER_NAME" -d "$DB_IMAGE_NAME"

次に、別のコンテナーを接続して、手動でデータを挿入します。

docker run -it --rm --link "$DB_CONTAINER_NAME":db "$DB_IMAGE_NAME" sh -c 'exec bash'
psql -d test -h $DB_PORT_5432_TCP_ADDR
# insert some data in the db
<CTRL-D>
<CTRL-D>

次に、tar アーカイブが作成されます。

$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /etc/postgresql /var/log/postgresql /var/lib/postgresql

ここで、DB に使用されているコンテナーを削除し、同じ名前で別のコンテナーを作成し、以前に挿入されたデータを復元してみます。

$ sudo docker run --volumes-from "$DB_CONTAINER_NAME" --rm -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar 

しかし、テーブルは空です。なぜデータが適切に復元されないのでしょうか?

ベストアンサー1

データベースをバックアップする

docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql

次のようなファイル名を作成しますdump_2023-12-25_09_15_26.sql

ファイルサイズを小さくしたい場合は、gzip を使用します。

docker exec -t your-db-container pg_dumpall -c -U postgres | gzip > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz

ファイルサイズをさらに小さくしたい場合は、brotliまたは を使用しますbzip2

docker exec -t your-db-container pg_dumpall -c -U postgres | brotli --best > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br

または

docker exec -t your-db-container pg_dumpall -c -U postgres | bzip2 --best > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.bz2

データベースを復元する

cat your_dump.sql | docker exec -i your-db-container psql -U postgres

おすすめ記事