AWS RDS PostgreSQL免费层表莫名消失问题求助
解决Amazon RDS PostgreSQL免费层表周期性消失问题
问题分析
你在使用Amazon RDS PostgreSQL免费层时遇到表周期性消失,本次所有表和序列仅剩1个。先将你提供的日志内容翻译如下:
2023-09-23 04:00:08 UTC:101.36.106.49(47734):[unknown]@[unknown]:[22010]:LOG: 启动数据包长度无效 2023-09-23 04:00:18 UTC:101.36.106.49(52710):[unknown]@[unknown]:[22021]:LOG: 启动数据包长度无效 2023-09-23 04:00:19 UTC:101.36.106.49(54170):[unknown]@[unknown]:[22022]:FATAL: 不支持的前端协议65363.19778:服务器仅支持3.0到3.0 2023-09-23 04:00:21 UTC:101.36.106.49(56122):versionprobe@versionprobe:[22024]:FATAL: 主机"101.36.106.49"用户"versionprobe"数据库"versionprobe"无pg_hba.conf条目,未加密
这些日志显示IP为101.36.106.49的地址在尝试未授权访问你的RDS实例。虽然最后一次连接被拒绝,但不排除此前存在成功的未授权登录——拥有高权限的用户可通过CASCADE参数强制删除带关联关系的表,这也解释了为何你手动删除依赖表会失败,而表却能被批量删除。
另外可以明确:RDS自动备份不会导致表消失,自动备份是创建实例快照,不会修改现有实例的运行数据,无需怀疑这个因素。
解决步骤
- 紧急限制访问范围:立刻修改RDS实例的安全组,仅允许业务必需的IP地址访问PostgreSQL端口(默认5432),禁止使用
0.0.0.0/0这类全局开放规则。 - 核查并收紧用户权限:登录数据库,检查所有用户的权限配置,移除不必要用户的
DROP、TRUNCATE等高危权限;同时重置所有数据库用户的密码,确保使用包含大小写、数字、特殊字符的强密码。 - 追踪异常操作记录:查看RDS的完整数据库日志,搜索
DROP TABLE或DROP SEQUENCE关键字,确认删表操作的执行时间、操作用户和来源IP,精准定位问题根源。 - 快速恢复数据:利用Amazon RDS的自动备份功能,将实例恢复到表消失前的时间点(免费层默认开启自动备份,保留周期为7天)。
- 开启审计日志:在RDS控制台开启PostgreSQL的审计日志功能,后续可实时追踪所有数据库操作,便于快速发现异常行为。
- 排查应用端误操作:检查应用程序代码、定时任务,确认是否存在误执行删表逻辑的情况,比如错误的SQL脚本、逻辑分支。
内容的提问来源于stack exchange,提问作者Andrei Suruceanu
相关产品推荐
相关产品推荐

