首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Postgresql数据库从9.1升级到9.2,将32位升级到64位

将Postgresql数据库从9.1升级到9.2,将32位升级到64位
EN

Server Fault用户
提问于 2013-09-20 19:48:04
回答 2查看 1.3K关注 0票数 1

作为服务器升级的一部分,我们将从32位Linux升级到64位Linux (Gentoo,如果有区别的话)和PostgreSQL9.1到9.2。我正在用pg_upgrade升级数据库.

我的第一次尝试是保存旧的(32位9.1) pgsql bin&lib目录,更新系统,然后在更新的(64位)系统上运行:

代码语言:javascript
复制
pg_upgrade -b pgsql.old/bin -B /usr/lib64/postgresql-9.2/bin -d data.old -D data.new

这是因为pg_upgrade尝试使用错误的libpq.so.5 (64位系统版本,而不是pgsql.old/lib中的32位版本)运行pgsql.old/bin/pg_ctl。如果我将LD_LIBRARY_PATH设置为指向pgsql.old/lib,那么我可以手动运行旧的32位pg_ctl,但这似乎对pg_upgrade没有帮助。

所以我想我只需要安装64位的PostgreSQL9.1和9.2。现在当我跑:

代码语言:javascript
复制
pg_upgrade -b /usr/lib64/postgresql-9.1/bin -B /usr/lib64/postgresql-9.2/bin -d data.old -D data.new

二进制文件运行良好,但升级早期失败,原因如下:

代码语言:javascript
复制
old and new pg_controldata alignments are invalid or do not match

我猜是由于数据库中32位对64位对齐问题造成的吗?

我知道pg_dump/pg_restore会工作得很好,但出于速度原因,我想尽可能使用pg_upgrade。这不是一个一蹴而就的交易-我们有几百个系统在实地,将需要更新的自动化方式(通过可引导的拇指驱动器与适当的脚本)。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2013-09-23 17:11:21

您不能使用pg_upgrade从32位升级到64位,也不能从任何OS/CPU/platform升级到任何其他OS/CPU/平台。数据文件依赖于平台,而pg_upgrade的工作方式是对数据文件进行复制(或链接)。所以这是行不通的。

此时,您的选项是转储/还原,或者使用逻辑复制系统来移动数据(Slony、Londiste、Bucardo)。

票数 1
EN

Server Fault用户

发布于 2013-09-20 19:58:33

我绝不会按你的方式去做。为了记录在案,我已经在PostgreSQL工作了,哦,6.x天(也就是很多很多年)。

毫无疑问,我总是这样做:

  1. 用pg_dump转储旧版本
  2. 安装新版本,可能会在您的情况下安装当前版本。我总是把默认位置连接起来。例如,如果pgsql在/usr/local/pgsql中结束,我将其更改为/usr/local/ pgsql -v9.1.2,然后我将sym链接到pgsql,这样我的RC脚本就不需要进行大量调整,我的LD_CONFIG也不需要调整。
  3. 在刚刚安装了新版本的新DB环境中
  4. 用psql恢复数据

我使用自定义RC脚本来停止、启动和重新启动postmaster,其中我有指向当前数据和xlog目录的设置。

另外,我知道你在使用某个发行版的包管理器。我避免这种情况,并且总是从源代码构建PostgreSQL。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/540592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档