我需要将非常大的PostGIS数据库(约320 GB)从server1(PostgreSQL 9.1,PostGIS 1.5)升级到server2(PostgreSQL 9.3,PostGIS 2.1)。
升级过程有据可查。问题是我在server1上没有足够的空间将文件转储到那里,对其进行校验和,然后将其复制到server2并验证总和。我试过了:
- 从管道中转储服务器1到Server2上使用
nc
。 - 将转储文件直接写入到使用挂载在server1上的server2文件系统中。
sshfs
两次转储文件似乎已损坏。pg_restore
在不同的地方出现错误,如下所示:
pg_restore: [compress_io] could not uncompress data: incorrect data check
谁能建议一种更好的方法来完成此迁移和升级?
更新:尝试了NFS(并再次尝试SSHFS)。显然,这些远程文件系统无法可靠地传输大量数据。生成的SQL文件中明显缺少块,从而在导入期间导致如下语法错误:
ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
第二个选项似乎不错,但是为什么不使用NFS?也许有一些小的中断无法由sshfs处理。320Gb是一个很大的文件。
—
马可(Marco)
买更大的磁盘?如今,1Tb的成本几乎为零。
—
Colin't Hart 2015年
事实证明,NFS与SSHFS一样不可靠,无法传输大量数据。更新问题。
—
kontextify