我在Heroku / AWS上有一个~140 GB的postgreDB。我想在Windows Azure - Windows Server 2012 R2虚拟机上创建一个转储,因为我需要将数据库移动到Azure环境中。
数据库有几个较小的表,但主要由一个约130 GB的表组成,包括索引。它有大约5亿行。
我已尝试使用pg_dump,其中包含:
./pg_dump -Fc --no-acl --no-owner --host * --port 5432 -U * -d * > F:/051418.dump
我已尝试过各种Azure虚拟机大小,包括一些相当大的(D12_V2)28GB内存,4个VCPU 12000 MAXIOP等。但在所有情况下,由于内存交换,pg_dump完全停止。
在上面的机器上,它目前正在使用所有可用内存,并使用过去12小时交换磁盘上的内存。由于交换,我不希望它完成。
从其他帖子我已经明白它可能是网络速度的问题,比磁盘IO速度快得多,导致pg_dump吸收所有可用内存等等,所以我尝试过使用具有大多数IOP的天蓝色机器。这没有帮助。
那么还有另外一种方法可以强制pg_dump限制它的内存使用量,或等待更多的数据,直到它写入磁盘并清除内存?
期待您的帮助!
Krgds。
基督教