Okapi Project

運用について

バージョン
2003 年 06 月 28 日 Ver.1.0
作成者
T.Itoh ( Xware )

要約

当ドキュメントは Okapi Project にて扱うデータベースのバックアップ計画について記述したドキュメントです。

目次


1.運用

日報システムを始めとするデータベースを利用したシステムでは、開発だけではなく運用についても十分な設計が必要となります。ここでは日報システムのデータベースを例として、運用に関する事柄をまとめます。

1.1.データベース運用の概略

日報システムにおいて検討中のデータベース運用に関する事項は次の通りです。 以下、個々の内容について説明します。

1.1.1.バックアップ

データベースの運用において最も重要なものがデータのバックアップです。特に今回の日報システムでは社員の個人的なデータだけでなく、社員ごとの稼働に関する情報をデータベース化して一元管理するため、データの消失は絶対に防止する必要があります。したがってバックアップに関する検討と運用については最優先にて行います。

まず、バックアップの手順は以下の流れを考えています。
  1. PostgreSQL にて、pg_dump コマンドを利用してメタ DB に含まれるすべてのテーブルを一括してバックアップします。バックアップファイルは単一のファイルになるため、日付と時刻を付与したファイル名で保存します。この操作はシェルスクリプトにて実行が可能にしておきます。
  2. あらかじめ DB サーバ上に Samba を導入して Windows 環境とファイル共有が可能にしておき、上記のシェルスクリプトを cron に登録して定期的に PostgreSQL のバックアップファイルを Samba の共有フォルダへ保存するように設定します。
  3. Windows 環境側にて、Samba 共有フォルダに対してドライブの割り当てを行い、その共有フォルダから任意のバックアップ用のフォルダへファイルをコピーするバッチファイルを作成します。
  4. バッチファイルを Windows のタスクに登録して定期的に共有フォルダからファイルをコピーするように設定しておきます。
以上の流れで行えば、比較的簡単な設定にて定期的に自動でデータベースのバックアップを取得することができます。Windows 側の端末にバックアップファイルがたまってきたら CD-R などの外部メディアに保存して既存のファイルを削除します。また、Samba の共有フォルダ等もファイルがたまってきた時のことを考慮して、削除用のシェルスクリプトを作成してこれも cron に登録しておきます。

1.1.2.最適化

PostgreSQL はファイルシステムの扱いが「追記型」と呼ばれる方式を採用しています。これはデータを削除する場合には物理的にデータを削除するわけではなく、「削除マーク」と呼ばれるフラグをデータに付与することで論理的にデータを削除します。更新時も同様に更新対象のデータに「削除マーク」を付与することで更新されたデータを新規に追加する形になります。これによって削除マークを付与されたデータはファイル上に不要データとして残ってしまうため、不要データを削除する操作が必要になります。

PostgreSQL ではこの操作をするためのコマンドとして VACUUM が用意されています。Version 7.2 以降の PostgreSQL では VACUUM コマンドを実行時にデータのロックをしないため、データベースの稼働時にも実行することができます。某雑誌の記事では忙しいシステムでは 1 時間に 1 回程度とし、暇なシステムでは 1 日に 1 回程度とされています。

今回のシステムでは更新を主体としたシステムであること、また日報という性質上毎日定期的な更新が発生することを考慮して 1 日に 1 回程度 VACUUM コマンドを実行するようにします。最適化コマンドの実施については PostgreSQL にてあらかじめ提供されている vacuumdb というシェルスクリプトを cron に登録するのみで行うことが可能です。

1.1.3.PostgreSQL の起動と停止

システムの開発時には PostgreSQL の起動と停止を頻繁に行ないます。通常の起動・停止コマンドは環境変数の設定を行なってからの起動コマンドなどが必要になるため、簡易的なコマンドとなるようなシェルスクリプトを用意して起動と停止を誰でもが簡単に行なえるようにします。

以上、運用に関する詳細な仕様については「データベース詳細仕様」を参照してください。

Copyright © 2003 - 2006 Okapi Project All Rights Reserved.