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