Docker Compose インストールのバックアップと復元
Docker Compose をインストールすると、Space データが永続 Docker ボリュームに自動的に保存されますが、データを定期的にバックアップすることをお勧めします。こうすることで、予期しない課題が発生した場合に Space インストールを復元できます。
バックアップする価値のあるデータは何ですか
Docker Compose のインストールでは、データストレージに関連する 4 つのサービスを使用します。各サービスは個別の Docker コンテナーで実行されます。
PostgreSQL データベース – Space ユーザーデータを保存します。このデータベースをバックアップすることを強くお勧めします。詳細
MinIO オブジェクトストレージ – Space ファイルを保存します。このストレージをバックアップすることを強くお勧めします。詳細
Redis – Space キャッシュを保存します。バックアップする必要はありません。
Elasticsearch – Space 検索インデックスを保存します。データ量が限られている小規模企業の場合、インデックスの再構築にそれほど時間がかからないため、Elasticsearch のバックアップは必要ない場合があります。
PostgreSQL データベースのバックアップと復元
PostgreSQL データベースをバックアップするには
ホストマシンで次を実行します。
docker exec -t $DB_CONTAINER_ID pg_dump -U $DB_USERNAME -d $DB_NAME > spacedb_dump.sqlここに:
DB_CONTAINER_ID
は、postgres コンテナーの ID です。ID はdocker ps
コマンドで取得できます。DB_USERNAME
は、インストールに使用されるdocker-compose.yml
ファイルのservices.postgres.environment.POSTGRES_USER
値です。デフォルトでは、space
DB_NAME
は、インストールに使用されるdocker-compose.yml
ファイルのservices.postgres.environment.POSTGRES_DB
値です。デフォルトでは、spacedb
このコマンドは、PostgreSQL コンテナー内で
pg_dump
コマンドラインツールを実行し、データベースダンプを実行します。spacedb_dump.sql
ダンプファイルは現在のディレクトリに保存されます。
PostgreSQL データベースを復元するには
Space インスタンスが実行中の場合は停止します。
docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -fPostrgreSQL コンテナーも停止されるため、次のようにして再起動する必要があります。
docker compose up postgres実行:
docker exec -i $DB_CONTAINER_ID psql -U $DB_USERNAME -d $DB_NAME < spacedb_dump.sqlこのコマンドは、以前に作成した
spacedb_dump.sql
ダンプを PostgreSQL コンテナー内の空のデータベースにインポートします。Space インスタンスを開始します。
docker compose up
PostgreSQL データベースのバックアップと復元を自動化するには
Bash スクリプトを使用して、バックアップと復元のプロセスを自動化できます。例:
#!/bin/bash DB_CONTAINER_ID="$2" DB_USERNAME="$3" DB_NAME="$4" function show_usage() { echo "Usage:" echo "$0 backup [DB_CONTAINER_ID] [DB_USERNAME] [DB_NAME] : Back up Space DB as spacedb_dump.sql to PWD" echo "$0 restore [DB_CONTAINER_ID] [DB_USERNAME] [DB_NAME] : Take spacedb_dump.sql from PWD and restore Space DB" } if [ $# -ne 4 ]; then # incorrect number of arguments echo "Error: Not all arguments are specified" show_usage exit 1 fi case "$1" in backup) echo "Backing up..." docker exec -t $DB_CONTAINER_ID pg_dump -U $DB_USERNAME -d $DB_NAME > spacedb_dump.sql echo "Backup created" ;; restore) echo "Restoring..." docker exec -i $DB_CONTAINER_ID psql -U $DB_USERNAME -d $DB_NAME < spacedb_dump.sql echo "Restore completed" ;; *) # invalid argument echo "Invalid command" show_usage exit 1 ;; esac
MinIO ストレージのバックアップと復元
MinIO オブジェクトストレージをバックアップおよび復元するには、MinIO クライアント(英語)が必要です。これは、Space を実行するホストマシン、または MinIO コンテナー (個別に実行する場合) を実行するホストマシンのいずれかで実行できます。
MinIO ストレージをバックアップするには
PostgreSQL データベースのバックアップを必ず実行してください。
MinIO ホストマシンを MinIO クライアント構成に追加します。
mc alias set <ALIAS> <URL> <ACCESSKEY> <SECRETKEY>例: デフォルトのインストールの場合 (Space は
localhost
として実行されます):mc alias set space-minio http://localhost:9000 space-access-key space-secret-keyMinIO バケットに保存されているデータをバックアップディレクトリにミラーリングします。
mc mirror <ALIAS> <BACKUP/DIRECTORY>バックアップが完了したら、バックアップディレクトリには
automation-dsl-local
、automation-fileshare-local
、automation-logs-local
、packages-local
、space-local
、vcs-local
というサブディレクトリが含まれている必要があります。
MinIO ストレージを復元するには
復元プロセスが別のホストマシンで実行される場合は、MinIO クライアントがインストールされていること、および MinIO ホストが構成 (バックアッププロセスのステップ 2) にエイリアスとして追加されていることを確認してください。
Space インスタンスが実行中の場合は停止します。
docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -fMinIO コンテナーも停止しているため、次のようにして再度起動する必要があります。
docker compose up minioMinIO バケットを作成します (コマンドは既存のバケットを無視します)。
mc mb --ignore-existing <ALIAS>/automation-dsl-local <ALIAS>/automation-fileshare-local <ALIAS>/automation-logs-local <ALIAS>/packages-local <ALIAS>/space-local <ALIAS>/vcs-localMinIO データを復元します。
mc mirror <BACKUP/DIRECTORY> <ALIAS>Space インスタンスを開始します。
docker compose up
MinIO ストレージのバックアップと復元を自動化するには
Bash スクリプトを使用して、バックアップと復元のプロセスを自動化できます。例:
#!/bin/bash # Bash script configuring MinIO host and mirror data # Display usage instructions function show_usage() { echo "Usage:" echo "$0 add-host <minio_alias> <minio_url> <minio_access_key> <minio_secret_key> : Configure MinIO host" echo "$0 backup <minio_alias> <backup_dir> : Mirror data from MinIO to backup directory" echo "$0 restore <backup_dir> <minio_alias> : Restore data from backup directory to MinIO" } # Check the number of arguments if [ $# -lt 2 ]; then echo "Error: Invalid number of arguments" show_usage exit 1 fi # Execute add-host, backup, and restore commands case "$1" in add-host) if [ $# -ne 5 ]; then echo "Error: Invalid number of arguments for 'configure-host' command" show_usage exit 1 fi alias="$2" url="$3" access_key="$4" secret_key="$5" mc alias set $alias $url $access_key $secret_key ;; backup) if [ $# -ne 3 ]; then echo "Error: Invalid number of arguments for 'backup' command" show_usage exit 1 fi backup_dir="$3" echo "Mirroring data from MinIO to backup directory..." mc mirror $alias $backup_dir ;; restore) if [ $# -ne 3 ]; then echo "Error: Invalid number of arguments for 'restore' command" show_usage exit 1 fi backup_dir="$2" alias="$3" echo "Restoring data from backup directory to MinIO..." mc mb --ignore-existing $alias/automation-dsl-local $alias/automation-fileshare-local $alias/automation-logs-local $alias/packages-local $alias/space-local $alias/vcs-local mc mirror $backup_dir $alias ;; *) echo "Error: Unknown command '$command'" show_usage exit 1 ;; esac