[pgsql-jp: 36928] Re: データファイル消失の障害

Tetsuya Abe tetsuya @ mitene.or.jp
2006年 3月 26日 (日) 23:06:26 JST


阿部と申します。

 学校に勤めておりまして(教員です)、校内LANの管理者という
立場です。成績その他のデータの処理や管理に、RDBMSを来年度
以降(4月以降)導入しようと考えております。そうして、データの
一元性を保たないことには、これ以上のシステムの改善が望めなく
なったためです。

 サーバーOSは Windows 2000 Server で、MySQL と PostgreSQL の
二つを候補として検討し、PostgreSQL でいこうとこのMLに最近参加
いたしました。MLに参加して2日目ぐらいに金山さんの

 > 私どもの運用中のシステムで、postgreSQLの物理データファイルが、突然に 
消失しました。

を拝見して不安になりました。やはり Windows では比較上長い実績のある
MySQL にするべきかと計画変更を考えていたところに、金山さんの

 > 原因が判明しました(嬉泣)。人為的でした(悲泣)。

のご発言を拝見し、当初の計画通り PostgreSQL でいくことに決めました。


ところで、

 > <原因>
 > Windowsデスクトップのゴミ箱内のフォルダを削除したことによって、
 > リバースポイントで関連付けられていたpostgreSQLのデータベース
 > フォルダ内のデータファイルも削除されたため。

このリパースポイントを設定して作る別名のフォルダとはジャンクションの
ことですね。ジャンクションとはUNIX系のOSでいうシンボリックリンク
に相当するものです。(参照:http://homepage1.nifty.com/emk/symlink.html)

 本校のサーバーにも業者の技術者がショートカットより安全性が保たれると
ジャンクションを多数作りました。ただ、その技術者の理解不足で、不要に
なったディレクトリ構造(ジャンクションを含む)を Explorer で削除して
しまって(削除したのは私ですが、その技術者の見ている前で削除しました)
大事なファイルをいくつか消してしまいました。

 こんな技術者の言うことを信じていては大変なことになると、その後自分で
勉強しました。それでわかったことは

 (1)ジャンクションはコマンドプロンプトで dir 命令を実行すると、
    <DIR> ではなく <JUNCTION> と表示される。

 (2)FileSystemObject の Folder オブジェクトの Attributes プロパティーは
    ジャンクションの場合 ReparsePoint(2^10 bit = 1024)が立っている。

 (3)Explorer はジャンクションに対応していないので、削除すると元フォルダ
    の中のファイルやフォルダーも削除してしまう。また、バックアップを取る
    とジャンクションの中のオブジェクトのコピーも取るので、大きなディスク
    容量が必要になる。2Gbyte 弱のバックアップに5Gbyte 超の容量が必要で
    した。

 (4)ジャンクションはコマンドプロンプトから Rmdir 命令で安全に(元フォルダ
    の中のオブジェクトは削除せずに)削除できる。

上記の調べたことを使って、ジャンクションを含むディレクトリ構造を安全に削除する
ツールと、ジャンクションを無視して必要なオブジェクトだけをバックアップするツール
をWSHスクリプトで作成しました。それ以来、ジャンクションを含むディレクトリ構造
のメンテナンスに気を遣わなくてすむようになりました。

 PostgreSQL の管理にもこれらのツールが役立ちそうで、偶然とはいえラッキーな
気分です。

 金山さん、情報をアップしていただき本当にありがとうございました。
長文で失礼いたしました。

/// 阿部哲也



pgsql-jp メーリングリストの案内