复制postgreSQL数据库,行数相同但表大小不同的表

问题描述

我转储了数据库

pg_dump dsmartgpp -f /data1/master/backup/db.sql 

然后我用

复制了数据库
nohup psql -h gpnm1 -d dsmartgpp_1 -U gpadmin < /data1/master/backup/db.sql

日志信息显示了一些关于postgis的函数和数据类型的错误,例如

更改功能 错误函数“gidx_out”已存在,且参数类型相同。

更改功能 错误:类型“gidx”已经存在

两个数据库间的某些表具有相同的数量或记录,但大小相差约 1MB。

解决方法

正如预期的那样。恢复 pg_dump 会创建数据库的逻辑副本。特别是,副本不会膨胀(别担心 - 有点膨胀是健康的)。

,

如果您想避免这些错误,请使用 template0 作为模板(空数据库)创建新数据库 (dsmartgpp_1)。您似乎在 template1 中安装了 PostGIS,它会被复制到每个新数据库中。或者您在导入转储之前在新数据库中安装了 PostGIS。

无论哪种方式,创建空数据库 (dsmartgpp_1) 并让转储安装 PostGIS 功能。

哦,还有一件事,您可以使用“-f /data1/master/backup/db.sql”而不是“<”重定向。

如果您想非常小心,还可以添加“-v ON_ERROR_STOP=1”。这将在第一个错误处停止。