升级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
执行命令前的准备工作
查看文件夹。
在执行命令时,可以指定以下选项。
为了确认使用的文件夹是否存在,我们需要先进行检查。
还有其他选项,但就我个人而言,我选择了上述的选项。
本来似乎不需要-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