更快的复制postgresql数据库的方法



我在测试服务器上有12个测试数据库,我每天从主服务器生成转储并将其复制到测试服务器。我使用以下命令填充测试数据库:

zcat ${dump_address} | psql $db_name

每个数据库耗时45分钟。如果我只对一个数据库这样做,然后使用:

是否会更快?
CREATE DATABASE newdb WITH TEMPLATE olddb;

的其余部分?我可以试试其他的方法吗?

这取决于有多少数据和索引。一些加快速度的方法包括:

  • 确保转储没有INSERT命令-它们往往比COPY慢得多。
  • 如果您有很多索引或约束,请使用自定义或归档转储格式,然后调用pg_restore -j $my_cpu_count-j控制并发创建索引的线程数量,并且索引创建通常是cpu受限的。
  • 使用更快的磁盘
  • 完整复制$PGDATA (rsync或一些花哨的快照)。

最新更新