[pgsql-jp: 36914] Re: データファイル消失の障害
Takuya.Kanayama @ jp.yokogawa.com
Takuya.Kanayama @ jp.yokogawa.com
2006年 3月 23日 (木) 15:57:37 JST
金山です。自己レスです。
> > > 私どもの運用中のシステムで、postgreSQLの物理データファイルが、突然に消失しました。
原因が判明しました(嬉泣)。人為的でした(悲泣)。
<原因>
Windowsデスクトップのゴミ箱内のフォルダを削除したことによって、
リバースポイントで関連付けられていたpostgreSQLのデータベース
フォルダ内のデータファイルも削除されたため。
<リバースポイントとは?>
リバースポイントを設定すると、あるフォルダに対して、新たにもう一つ
別名でフォルダを作成でき、フォルダの中身は共有できる。もしも別名
のフォルダをゴミ箱に移しそこで削除をすると、元のフォルダの中身も
削除される。このリパースポイントは積極的には公にしていない機能ら
しく、この管理ツールはOSに同梱されていない。
<postgreSQLでは?>
Windowsネィティブ環境でのPostgreSQLのインストールと実行についてのよくある質問とその回答
http://www.postgresql.jp/wg/jpugdoc/FAQ_windows.ja.html#2.3
windows版のpostgreSQLでは、リバースポイント機能を使用している。
元のフォルダ:テーブル空間のロケーションで指定したフォルダ
別名フォルダ:C:\Program Files:\postgreSQL\8.0\data\pg_tblspc\nnnnn
<原因詳細>
過去にpostgreSQL8.0.3をアンインストールして8.1.2をインストールしたが、
その時、旧バージョン8.0.3のファイル群(C:\Program Files\postgreSQL)を、
リパースポイントが張られたまま、ゴミ箱に移動した。
そして、リパースポイント元のフォルダ(D:\)には、新たに8.1.2のファイル群を作成した。
ここで、ゴミ箱内のフォルダを削除すると、8.1.2のファイル群も削除されてしまう。
<再発防止策>
旧バージョンをアンインストールして、新バージョンをインストールする場合、
旧バージョンのアンインストール前に、ユーザが作成したテーブル空間を全て削除すること。
旧バージョンのアンインストール後に、インストールフォルダをゴミ箱から完全に削除すること。
ということで、皆さんも、今すぐゴミ箱を覗いてみてくださいな。
pgsql-jp メーリングリストの案内