Docker 運用時の操作
概要
TimeTracker NX をDocker上で運用する時のデータベース管理方法を紹介します。
具体的には以下を実施する際の手順です。
本ページは Linux環境で構築した Docker の手順をご紹介します。
バックアップ
サーバーマシンの障害やトラブルに備え、データベース上のデータを定期的にバックアップしてください。
バックアップされたデータがあれば、仮にサーバーマシンの障害が発生してデータが失われても、
バックアップした時点のデータに戻すことができます。
手順をご紹介します。
-
次のリンクの手順でTimeTracker NX を停止します。
「システムを安全に停止する」上記手順を踏まないとデータベースの不整合が取れなくなる可能性があります。 -
compose.yml
を配置したディレクトリに移動し、アプリコンテナとnginxコンテナを停止します。sudo docker compose stop web nginx
-
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
詳しくは、各ツールの公式ドキュメントを参照ください。 -
-
(SQL Serverの場合) 取得したDBバックアップファイルをローカルのカレントディレクトリにコピーします。
以下のようにコピー元/コピー先を指定してください。sudo docker compose cp db:/var/tmp/timetrackernx.bak ./timetrackernx.bak
-
アプリコンテナとnginxコンテナを起動します。
sudo docker compose start web nginx
コンテナを起動すれば TimeTracker NX も起動します。
復元
以下の問題が発生した場合、バックアップしたファイルを復元することで、
バックアップした時点のデータの状態に戻すことができま す。
- データベースに障害が発生した
- 重要なデータを間違って削除してしまった
手順をご紹介します。
-
次のリンクの手順でTimeTracker NX を停止します。
「システムを安全に停止する」上記手順を踏まないとデータベースの不整合が取れなくなる可能性があります。 -
compose.yml
を配置したディレクトリに移動し、アプリコンテナとnginxコンテナを停止します。sudo docker compose stop web nginx
-
次のリンク先の手順でRedisをクリアします。
「Redis のIDを切り替える/データを削除する方法」
Redisのデータを削除する -
(SQL Serverの場合) ローカルにある DBのバックアップファイルを DBサーバーにコピーします。
以下のようにコピー元/コピー先を指定してください。sudo docker compose cp ./timetrackernx.bak db:/var/tmp/timetrackernx.bak
-
(SQL Serverの場合) コピーした DBのバックアップファイルのアクセス権限を変更します。
sudo docker compose exec -u root db chmod 777 /var/tmp/timetrackernx.bak
-
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
詳しくは、各ツールの公式ドキュメントを参照ください。 -
-
アプリコンテナとnginxコンテナを起動します。
sudo docker compose start web nginx
コンテナを起動すれば TimeTracker NX も起動します。