我需要定期将 RDS 上的 PostgreSQL 转储到 S3 上的文件中(以便在 AWS 之外的其他地方使用它)。
有没有比运行脚本更好的方法,该脚本pg_dump使用例如运行并将结果上传到 S3 boto3?
出于测试目的,我使用pg_restore. 在新数据库中,我运行匿名化敏感数据的 SQL 查询。但是,像下面这样的查询会更新一个表中超过 2000 万条记录,该表具有约 10 个索引(在 期间创建pg_restore)。
UPDATE users SET email = users.id || '@example.com',
phone_number = NULL;
Run Code Online (Sandbox Code Playgroud)
这需要几个小时的当前设置。
为了加快速度,我想为了运行而禁用表的索引update,然后再次启用它们并重新索引表。我怎样才能做到这一点?还有其他方法可以加快速度UPDATE吗?
笔记:
我试过了
UPDATE pg_index
SET indisready=false
WHERE indrelid = (
SELECT oid
FROM pg_class
WHERE relname='users'
);
Run Code Online (Sandbox Code Playgroud)但得到了下面的错误。
ERROR: permission denied for relation pg_index
Run Code Online (Sandbox Code Playgroud)
显然,您不能在 AWS RDS PostgreSQL 实例中以超级用户身份执行此操作。