我需要将 PostgresSql db 从旧服务器导入到新的 Amazon RDS。
我创建了一个数据库转储文件,通过 pgAdmin 连接到我的 RDS,并开始导入 pgAdmin 控制台(\i dump_file.sql
)。
一切似乎都正常,但速度真的很慢,而且似乎在同一行停留了几个小时。我打开了 RDS 监视器,看到以下内容:
因此看起来有写入操作符(但为什么这么少)和一些 CPU 使用率,但看起来它使用的能力百分比非常低。我还详细检查了磁盘使用情况,磁盘缩小了,所以它确实在写入,例如它没有卡住,只是非常慢。
我该怎么做才能更快地导入我的数据库?为什么这么慢?为什么它只使用这么少的 CPU 和写入操作?
感觉 RDS 没有发挥其全部潜力。
PS 我的数据库大小约为10Gb。
答案1
默认的 postgresql 配置不适合批量导入数据。在导入那么多数据之前,您需要做的主要事情是增加max_wal_size
以减少 postgresql 在导入过程中需要执行检查点的次数。此外,如果您对数据的质量有把握,请在事务中导入它。请参阅https://www.postgresql.org/docs/9.5/static/populate.htm其他想法(关闭复制、禁用索引、禁用触发器、用于pg_restore --jobs X
并行化导入)