小编pmi*_*hna的帖子

将 RDS 上的 PostgreSQL 转储到 S3 的最佳方法

我需要定期将 RDS 上的 PostgreSQL 转储到 S3 上的文件中(以便在 AWS 之外的其他地方使用它)。

有没有比运行脚本更好的方法,该脚本pg_dump使用例如运行并将结果上传到 S3 boto3

postgresql aws amazon-rds

11
推荐指数
1
解决办法
1万
查看次数

在更新整个表之前暂时禁用索引

出于测试目的,我使用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吗?

笔记:

  1. 我试过了

    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 实例中以超级用户身份执行此操作。

  1. 删除索引然后再次创建它们会很不方便,因为我必须提前知道它们涵盖哪些列。理想情况下,我会有一个命令将现有的索引配置存储在某个临时变量中,然后使用此信息重新创建它们。

postgresql index update pg-restore amazon-rds

3
推荐指数
1
解决办法
1689
查看次数

标签 统计

amazon-rds ×2

postgresql ×2

aws ×1

index ×1

pg-restore ×1

update ×1