在 PostgreSQL 中恢复误删数据,能否成功主要取决于是否有备份或日志机制。下面按常见场景给你一个实用指南。
pg_ctl stop
rm -rf $PGDATA/*
cp -r /backup/pgdata/* $PGDATA/
pg_ctl start
psql dbname < backup.sql
或只恢复某张表:
pg_restore -t table_name backup.dump
✅ 这是最安全、最可控的方式
前提:
recovery.confrestore_command = 'cp /archive/%f %p'
recovery_target_time = '2025-01-21 10:00:00'
✅ 可精确到秒级恢复
ROLLBACK;
某些情况下可用:
SELECT * FROM table_name
WHERE xmin != 0;
⚠️ 不保证成功,仅限紧急试探
如果你有:
recovery_min_apply_delay = '1h'
可以从备库导出误删前的数据。
适合:
✅ 开启 WAL 归档
✅ 定期备份(每日 + WAL)
✅ 使用事务:
BEGIN;
DELETE ...;
-- 确认无误
COMMIT;
✅ 给重要表加防删规则或权限控制
PostgreSQL 本身不能“自动撤销删除”,恢复靠的是备份 + WAL + 时间。
如果你愿意,可以告诉我:
我可以给你更具体的恢复步骤。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。