メインコンテンツまでスキップ
バージョン: Current

Docker 運用時の操作

概要

TimeTracker NX をDocker上で運用する時のデータベース管理方法を紹介します。
具体的には以下を実施する際の手順です。

本ページは Linux環境で構築した Docker の手順をご紹介します。

バックアップ

サーバーマシンの障害やトラブルに備え、データベース上のデータを定期的にバックアップしてください。
バックアップされたデータがあれば、仮にサーバーマシンの障害が発生してデータが失われても、
バックアップした時点のデータに戻すことができます。

手順をご紹介します。

  1. 次のリンクの手順でTimeTracker NX を停止します。
    システムを安全に停止する

    上記手順を踏まないとデータベースの不整合が取れなくなる可能性があります。
  2. compose.ymlを配置したディレクトリに移動し、アプリコンテナとnginxコンテナを停止します。

    sudo docker compose stop web nginx
  3. DBバックアップファイルを取得します。
    利用されている DB管理ソフトあわせて、以下のコマンドを実行してください。

    • SQL Server の場合

      sudo docker compose exec db /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P <your password> -No -Q "BACKUP DATABASE TimeTrackerNX TO DISK = N'/var/tmp/timetrackernx.bak'"

      「<your password>」を変更して実行してください。

    • PostgreSQL の場合

      sudo docker compose exec db pg_dump -U postgres timetrackernx > /var/tmp/timetrackernx.bak
    詳しくは、各ツールの公式ドキュメントを参照ください。
  4. (SQL Serverの場合) 取得したDBバックアップファイルをローカルのカレントディレクトリにコピーします。
    以下のようにコピー元/コピー先を指定してください。

    sudo docker compose cp db:/var/tmp/timetrackernx.bak ./timetrackernx.bak
  5. アプリコンテナとnginxコンテナを起動します。

    sudo docker compose start web nginx

コンテナを起動すれば TimeTracker NX も起動します。

復元

以下の問題が発生した場合、バックアップしたファイルを復元することで、
バックアップした時点のデータの状態に戻すことができます。

  • データベースに障害が発生した
  • 重要なデータを間違って削除してしまった

手順をご紹介します。

  1. 次のリンクの手順でTimeTracker NX を停止します。
    システムを安全に停止する

    上記手順を踏まないとデータベースの不整合が取れなくなる可能性があります。
  2. compose.ymlを配置したディレクトリに移動し、アプリコンテナとnginxコンテナを停止します。

    sudo docker compose stop web nginx
  3. 次のリンク先の手順でRedisをクリアします。
    Redis のIDを切り替える/データを削除する方法
    Redisのデータを削除する

  4. (SQL Serverの場合) ローカルにある DBのバックアップファイルを DBサーバーにコピーします。
    以下のようにコピー元/コピー先を指定してください。

    sudo docker compose cp ./timetrackernx.bak db:/var/tmp/timetrackernx.bak
  5. (SQL Serverの場合) コピーした DBのバックアップファイルのアクセス権限を変更します。

    sudo docker compose exec -u root db chmod 777 /var/tmp/timetrackernx.bak
  6. DBを復元します。
    利用されている DB管理ソフトあわせて、以下のコマンドを実行してください。

    • SQL Server の場合

      sudo docker compose exec db /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P <your password> -No -Q "RESTORE DATABASE TimeTrackerNX TO DISK = N'/var/tmp/timetrackernx.bak'"

      「<your password>」を変更して実行してください。

    • PostgreSQL の場合
      以下の3つの操作(DB削除→DB作成→データ復元)を順番に実行してください。

      sudo docker compose exec db psql -U postgres -c 'drop database "timetrackernx":'
      sudo docker compose exec db psql -U postgres -c 'create database "timetrackernx":'
      sudo docker compose exec -T db psql -U postgres timetrackernx < /var/tmp/timetrackernx.bak
    詳しくは、各ツールの公式ドキュメントを参照ください。
  7. アプリコンテナとnginxコンテナを起動します。

    sudo docker compose start web nginx

コンテナを起動すれば TimeTracker NX も起動します。