メインコンテンツ

Polyspace Access データベースのバックアップ

Polyspace®Access™ データベースのバックアップを作成するには、PostgreSQL® ユーティリティ pg_dumpall を使用します。このユーティリティは、データベースのダンプを作成します。後で、ダンプが作成されたときのデータベースの状態を復元することができます。pg_dumpall ユーティリティは、Polyspace Access の polyspace-access-db-0-main コンテナーにあります。

データベースのサイズと使用頻度に基づいて、バックアップの作成頻度に関するポリシーを設定してください。データベースのバックアップまたは復元を行っている間、ユーザーは Polyspace Access を操作できません。バックアップまたは復元の操作を開始する前に、ユーザーに通知してください。

データベースのバックアップの作成

データベースのバックアップを作成するときには、pg_dumpall ユーティリティにより、データベースを再構成するために使用する SQL コマンドのリストが生成されます。バックアップ操作にはスーパーユーザー権限が必要です。これらの権限は PostgreSQL で設定されるものであり、システム上のユーザー権限とは異なります。たとえば、データベースのダンプを生成し、backup_db.sql という名前で保存するには、[Polyspace Access Database] サービスをホストしているマシン上でターミナルを開き、以下の手順に従います。このワークフローでは、すべての Polyspace Access サービスが実行中であることを前提としています。

  1. バックアップに不完全なデータや破損したデータが確実に含まれないようにするために、[Polyspace Access ETL] サービスと [Polyspace Access Web Server] サービスを停止してから、バックアップ操作を開始します。ターミナルに、次のコマンドを入力します。

    docker stop polyspace-access-etl-0-main polyspace-access-web-server-0-main

    メモ

    Polyspace Access バージョン R2021b 以前を実行している場合は、Docker コンテナー名が異なる可能性があります。現在実行中のコンテナーの名前を表示するには、docker ps --format '{{.Names}}' コマンドを使用してください。

  2. データベースのバックアップを生成して backup_db.sql に保存します。

    docker exec polyspace-access-db-0-main pg_dumpall -U postgres > backup_db.sql
    この docker exec コマンドは、polyspace-access-db-0-main コンテナー内部にある pg_dumpall ユーティリティを実行します。-U には、スーパーユーザー postgres を指定します。実行すると、pg_dumpall の出力が backup_db.sql として保存されます。

    生成されたバックアップ ファイルを圧縮することもできます。たとえば、バックアップを作成して、そのファイルを gzip で圧縮するには、次のコマンドを入力します。

    docker exec polyspace-access-db-0-main pg_dumpall -U postgres | gzip > backup_db.gz

    メモ

    大規模なデータベースに対して pg_dumpall を使用すると、一部のオペレーティング システムの最大ファイル サイズ制限を超えるファイルが生成される可能性があり、また長時間かかる可能性もあります。

  3. バックアップを完了したら、次のコマンドを使用して [Polyspace Access ETL] サービスと [Polyspace Access Web Server] サービスを再起動します。

    docker start polyspace-access-etl-0-main polyspace-access-web-server-0-main

    スクリプトを使用してデータベースのバックアップを作成する場合は、そのスクリプトで pg_dumpall エラーが正しく処理されることを確認します。スクリプトでエラーが正しく処理されない場合、コンテナーを再起動するコマンドが実行されない可能性があります。

バックアップからのデータベースの復元

データベースのバックアップからデータを復元するには、psql ユーティリティを使用します。このユーティリティは、polyspace-access-db-main コンテナーにあります。この操作により、Polyspace Access プロジェクトのデータとユーザー権限が復元されます。たとえば、backup_db.sql ファイルに保存されているバックアップからデータベースを復元できます。一部の手順は、[Cluster Admin] インターフェイスで行います。他の手順には、[Polyspace Access Database] サービスをホストしているサーバー上のターミナルが必要です。Linux® では、この操作を実行するためにスーパーユーザー権限が必要になる場合があります。

  1. [Polyspace Access ETL] サービスと [Polyspace Access Web Server] サービスを停止します。ターミナルに、次のコマンドを入力します。

    docker stop polyspace-access-etl-0-main polyspace-access-web-server-0-main

  2. Polyspace Access データベースが格納されているフォルダーを削除してから、[Polyspace Access Database] サービスを再起動します。

    sudo rm -rf databaseFolderPath
    docker restart polyspace-access-db-0-main
    databaseFolderPath は、Cluster Admin の [Cluster Settings] で、[Polyspace Access Database] サービスの [Data volume] フィールドに指定したフォルダー パスです。次に例を示します。

    /local/Polyspace/R2020b/appdata/polyspace-access/db

    [Data volume] フィールドにフォルダー パスではなくボリューム名 (例: polyspace-data) を指定した場合は、以下のコマンドを使用して、データベース サービスの停止、ボリュームの削除、新規ボリュームの作成、データベース サービスの再起動を行います。

    docker stop polyspace-access-db-0-main
    docker volume rm polyspace-data
    docker volume create polyspace-data
    docker restart polyspace-access-db-0-main

  3. backup_db.sql からデータベースを復元します。ターミナルに、次のコマンドを入力します。

    docker exec -i polyspace-access-db-0-main psql -U postgres postgres <backup_db.sql
    バックアップを圧縮ファイル形式で保存した場合は、そのファイルを圧縮解除してから、パイプを使用してファイルの内容を docker exec コマンドに渡します。たとえば gzip を使用する場合は、次のコマンドを使用して backup_db.gz ファイルからデータベースを復元します。
    gzip -cd backup_db.gz | docker exec -i polyspace-access-db-0-main psql -U postgres postgres

    メモ

    大規模なデータベースに対して非圧縮バックアップ ファイルを使用すると、オペレーティング システムの最大ファイル サイズ制限を超える場合があります。

  4. [Cluster Admin] インターフェイスで [Restart Apps] をクリックして、すべてのサービスを起動します。

サービスが起動したら、Web ブラウザーで Polyspace Access インターフェイスを開き、バックアップを作成したときにデータベース内に保存されていたプロジェクトを確認します。

また、ログ先行書き込み (WAL) ファイルを使用して、データベースのインクリメンタル バックアップおよびインクリメンタル リカバリを行うこともできます。WAL により、データベースに加えられたすべての変更が記録されます。システムはいくつかの WAL ファイルのみを保管し、古くなったファイルをリサイクルします。

ベース バックアップを作成し、それ以降のすべての WAL ファイルを保存するという方法により、ベース バックアップを作成した時点から現在までの間の任意の時点まで WAL シーケンスを再生して、データベースを復元できます。インクリメンタル バックアップを構成する方法の例は、Continuous Archiving and Point-in-Time Recovery (PITR) を参照してください。

参考

トピック