升级PostgreSQL版本从9.4到12的备忘录

首先

我想大量生成数据并进行一些试验,同时也想借此机会学习一下,所以我打算尝试创建一个存储过程。但据说PostgreSQL只能在11版本及以上使用…
所以我还是决定直接升级到12版本吧。

版本升级步骤

我参考了这里的内容:

请在Windows10环境中运行pg_upgrade命令,将旧版本升级至新版本。

1. 下载所需的版本。 de .

你可以在这里进行安装。

2. 下载并执行已获取的exe文件,进行安装。

由于旧环境需要与此处特定的区域设置相匹配,因此最好确保已经确认了指定的区域设置。
此外,由于后续可能需要对data文件夹进行修改,所以建议将该文件夹创建在与系统文件分开的其他地方较为理想。
(我之前并没有仔细考虑,直接将其安装在了系统文件下面,真是…)

3. 运行命令之前的准备工作

执行initdb任务。

我将在新安装的版本中执行这个命令。

"C:\Program Files\PostgreSQL\12\bin\initdb.exe" -D "C:\Program Files\PostgreSQL\12\data"

在这里需要注意的是,旧版本使用initdb的选项和新版本使用initdb的选项必须一致。如果旧版本和新版本的区域设置、排序顺序等不一致,将无法进行迁移。(根据经验)

如果在旧版本中没有特别更改过,那么可能可以跳过这一步。

(2) 设置密码设定文件。

如果你是Windows用户,你可以修改%APPDATA%\postgresql\文件夹中的pgpass.conf文件。

记录方法:主机名:端口:数据库:用户名:密码
例子:本地主机:5432:postgres:postgres:密码

临时更改认证方式。

这里需要对旧和新两者都进行更改。
要修改名为pg_hba.conf的文件。
将”METHOD”右侧的列中的”md5″字符串全部改写为”trust”。
虽然写的是暂时的,但通过这样做,即使在执行psql命令时无需输入用户名和密码,您也可以继续使用,所以如果不需要调整,也可以不用还原。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

执行命令前的准备工作

查看文件夹。

在执行命令时,可以指定以下选项。
为了确认使用的文件夹是否存在,我们需要先进行检查。

オプション意味-d旧PostgreSQLのdataフォルダ-D新PostgreSQLのdataフォルダ-b旧PostgreSQLのbinフォルダ-B新PostgreSQLのbinフォルダ-p旧のポート番号-P新のポート番号-Uユーザー名

还有其他选项,但就我个人而言,我选择了上述的选项。
本来似乎不需要-p和-P参数,但在我初次执行时,它会查找端口号为50432的服务器启动,所以我也使用这个选项进行了指定。

移动文件夹。

在执行pg_upgrade时,将会输出一个名为pg_upgrade_internal.log的日志文件,由于它被输出到工作目录,所以我们应该将它移动到适合postgres用户也能输出日志的位置。

停止服务器。

无论是旧的还是新的PostgreSQL服务器,都需要保持停止状态。

(5) 准备好了,行动吧

在下面的情况中,所有内容都是使用完整路径指定的,但是将bin文件夹放入环境变量中并执行也是可以的。请确保在最新版本中运行pg_upgrade.exe。

"C:\Program Files\PostgreSQL\12\bin\pg_upgrade.exe" -b "C:\Program Files\PostgreSQL\9.4\bin" -B "C:\Program Files\PostgreSQL\12\bin" -d "C:\Program Files\PostgreSQL\9.4\data" -D "C:\Program Files\PostgreSQL\12\data" -p 5432 -P 5432 -U postgres

升级已完成。如果出现了消息,则表示结束。虽然消息中提到了,统计信息似乎不会迁移,所以需要按照消息执行批处理。本次不执行。

将pg_hba.conf文件还原,然后结束。

请只给出一个中文的原生解释:
参考:提供资料或意见来帮助他人做出决策或寻找信息的行为。

    • postgresql pg_upgrade実施時に、connection to database failed: fe_sendauth: no password supplied が発生

 

    • PostgreSQL 12.0文書

 

    pg_upgrade を使ったDBクラスタ移行手順 on Windows
广告
将在 10 秒后关闭
bannerAds