简单的问题:我想将 Postgres 服务器的所有数据、模式、角色以及所有内容从 Windows 迁移到 Linux。
我可以只复制%PGDATA%
Windows 中服务器指向 Linux 的目录的内容,并在那里启动服务器,将 PGDATA 参数/变量指向该目录吗?换句话说,数据文件平台是否独立于从一个操作系统移植到另一个操作系统?
我还开发了一个用于克隆 PG 数据库、模式+数据的脚本,但出于各种原因,我更愿意将数据文件放在 USB 驱动器上并完成它。
简单的问题:我想将 Postgres 服务器的所有数据、模式、角色以及所有内容从 Windows 迁移到 Linux。
我可以只复制%PGDATA%
Windows 中服务器指向 Linux 的目录的内容,并在那里启动服务器,将 PGDATA 参数/变量指向该目录吗?换句话说,数据文件平台是否独立于从一个操作系统移植到另一个操作系统?
我还开发了一个用于克隆 PG 数据库、模式+数据的脚本,但出于各种原因,我更愿意将数据文件放在 USB 驱动器上并完成它。
不,你不能那样做。数据目录中的文件在操作系统(或不同架构)之间不兼容。
您将需要使用
pg_dump
和pg_restore
只是为了记录,你应该在 PostgreSQL 邮件列表中询问。
我个人的想法是二进制格式是固定的,所以没问题。
无论如何,只是为了尝试,我:
a) 将 pgdata 目录从 PG9.5 从 Windows Server 2012 复制到 Linux;
b) 在 Linux 上编译 9.5;
c) 更改 postgresql.conf 中的特定 Windows 选项;
d) 运行它...
它开始了,但它抱怨语言环境(我必须进一步调查才能弄清楚):
无论如何,服务器已启动并正在运行。同样使用 pg_dump 我不认为语言环境是自动转换的。
因此,找到原始超级用户以及如何更改整理/语言环境应该是唯一剩下的事情了。