JetBrains Space ヘルプ

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 データベースを復元するには

  1. Space インスタンスが実行中の場合は停止します。

    docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -f

  2. PostrgreSQL コンテナーも停止されるため、次のようにして再起動する必要があります。

    docker compose up postgres
  3. 実行:

    docker exec -i $DB_CONTAINER_ID psql -U $DB_USERNAME -d $DB_NAME < spacedb_dump.sql

    このコマンドは、以前に作成した spacedb_dump.sql ダンプを PostgreSQL コンテナー内の空のデータベースにインポートします。

  4. 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 ストレージをバックアップするには

  1. PostgreSQL データベースのバックアップを必ず実行してください。

  2. MinIO ホストマシンを MinIO クライアント構成に追加します。

    mc alias set <ALIAS> <URL> <ACCESSKEY> <SECRETKEY>

    例: デフォルトのインストールの場合 (Space は localhost として実行されます):

    mc alias set space-minio http://localhost:9000 space-access-key space-secret-key

  3. MinIO バケットに保存されているデータをバックアップディレクトリにミラーリングします。

    mc mirror <ALIAS> <BACKUP/DIRECTORY>

    バックアップが完了したら、バックアップディレクトリには automation-dsl-localautomation-fileshare-localautomation-logs-localpackages-localspace-localvcs-local というサブディレクトリが含まれている必要があります。

MinIO ストレージを復元するには

  1. 復元プロセスが別のホストマシンで実行される場合は、MinIO クライアントがインストールされていること、および MinIO ホストが構成 (バックアッププロセスのステップ 2) にエイリアスとして追加されていることを確認してください。

  2. Space インスタンスが実行中の場合は停止します。

    docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -f

  3. MinIO コンテナーも停止しているため、次のようにして再度起動する必要があります。

    docker compose up minio
  4. 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
  5. MinIO データを復元します。

    mc mirror <BACKUP/DIRECTORY> <ALIAS>
  6. 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