PostgreSQL上で、delete from <table_name> によって、誤ってデータを削除してしまいました。
なんとかして復旧する方法はないでしょうか?
よろしくお願いします。
http://www.postgresql.jp/document/ で、
日本語ドキュメントが手に入るようですよ。
でも多分、この人は、こんな回答じゃ全然
満足してくれないでしょうね。
「PostgreSQL の対話式カーソルは読み取り専用です。」だそうだから、バックアップを取っていない限り、復旧不能では?
バックアップというのは、機械のミスにだけではなく、人間のミスに対して(人間のミスにこそ?)役に立つのです。
って、そういう僕自身、最近全くバックアップとってないけど…
お役に立てず、<(_ _)>
http://www.postgresql.jp/document/pg800doc/html/backup.html
貴重なデータを全て保存しているため、 PostgreSQL データベースは定期的にバックアップされなければなりません。
ということなので、バックアップしてあるかと思います。
バックアップから復旧してみては?
http://wiz.syscon.co.jp/BackupDbLinux.html
http://www.hizlab.net/app/pgadmin.html
http://www.stackasterisk.jp/tech/dataBase/postgresql02_03.jsp
もちろんバックアップがあれば復旧しますが、最終dumpがしばらく前なので、リストアでは十分な復旧が行えないのです。
残存ファイルやログからなんとか復旧できる方法を求む。
ここで紹介されているrecovery_target_timeを指定する方法で復旧できないでしょうか。
あいにくPostgres7.4なので、PITRが使えないのです。
DB上の話なので、ファイルが消えてしまったのとは少し状況が違います。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26804&am...
基本的にはどうにもなりません。
PostgreSQLでは、VACCUMEコマンドを実行するまでは、ディスク上に物理的にデータが存在はしています。ですがこれを元にデータを復旧する手順は用意されていないようです。
7.4ではトランザクションログを利用した実装でないので復旧は難しいかと思います。
他の商用DBであればできるのですけども・・・
@ITに同様の質問がありましたので、記載しておきます。
残念ながら、無理だと思われます。
回答になっておりませんので、ポイントは不要です。
失礼致しました。
xlogは残っているようなのですが、復旧手順がないんですね。。。
そろそろ諦めるしかないか。。。
壊れたファイルのリカバリーツールですが。
(試す前にデータは物理バックアップはしてください)
pgfsck
試したわけでも方法が紹介されていたわけでもありませんが,トランザクションIDベースで論理削除されるようなので,pg_resetxlog辺りでxidを無理繰り戻してみるのはどうでしょうか。
http://www.postgresql.jp/document/pg746doc/html/app-pgresetxlog....
うーむ。そこをなんとか。
物理的には残っているらしいのですが。。。