PosqgreSQL9.2での処理巻き戻し
例えば間違えてレコードを削除してしまった場合、削除レコードはしばらく表面上消されただけの状態なので復元可能。
ただし、大量のデータ処理をした後など、autovacuumが働いてしまったあとなどは無理かも。
pg_controldata /var/lib/pgsql/dataで現在の状態を表示。
/var/lib/pgsql/dataはCentOSでのpostgresのデフォルトのデータ保存場所なので、環境により適宜置き換えてください。
Latest checkpoint's NextXID: のところの数字が現在のトランザクションID。
この数字を減らすと巻き戻しができる。
pg_resetxlog -x 5224810 /var/lib/pgsql/data
など。
実行環境だといろいろとアレなので、一瞬データベースを停止させてdataディレクトリをバックアップして、テストサーバーなどに復元してから解析したほうがいいかも。
自己責任で。
ただし、大量のデータ処理をした後など、autovacuumが働いてしまったあとなどは無理かも。
pg_controldata /var/lib/pgsql/dataで現在の状態を表示。
/var/lib/pgsql/dataはCentOSでのpostgresのデフォルトのデータ保存場所なので、環境により適宜置き換えてください。
Latest checkpoint's NextXID: のところの数字が現在のトランザクションID。
この数字を減らすと巻き戻しができる。
pg_resetxlog -x 5224810 /var/lib/pgsql/data
など。
実行環境だといろいろとアレなので、一瞬データベースを停止させてdataディレクトリをバックアップして、テストサーバーなどに復元してから解析したほうがいいかも。
自己責任で。
関連 2016-01-12 10:21:31