管理员指南 > Codebeamer 维护 > 数据库迁移至 PostgreSQL > 将数据库从 PostgreSQL 16.x 迁移到 PostgreSQL 17.x
将数据库从 PostgreSQL 16.x 迁移到 PostgreSQL 17.x
Codebeamer 3.1 支持 PostgreSQL 17.x 数据库。如果现有的 PostgreSQL 数据库版本为 16.x,您必须迁移到 PostgreSQL 17.x 数据库。
在开始迁移过程之前,请确保满足以下先决条件:
PostgreSQL 17 随 PostgreSQL 16 一同安装。
这两个数据库在不同的端口上运行。例如,PostgreSQL 16 在 port 5433 上运行,而 PostgreSQL 17 在 port 5434 上运行。
这两个 PostgreSQL 实例均具有单独的二进制路径和数据目录。
备份 PostgreSQL 16 数据库。
迁移步骤
1. 创建 .pgpass 文件。为了避免在迁移过程中出现密码提示,需要用到此文件。
创建此文件时,请注意以下事项:
确保该文件没有任何扩展。
在 Windows 上,将该文件保存到以下位置:
C:\Users\<您的用户名>\.pgpass.
以下列格式提供这两个 PostgreSQL 数据库的主机和端口详情:
hostname:pg16_port:pg16_database:pg16_username:pg16_password
hostname:pg17_port:pg17_database:pg17_username:pg17_password
例如:
localhost:5433:*:postgres:yourpassword
localhost:5434:*:postgres:yourpassword
2. 仅在 PostgresSQL 16 数据库上删除 adminpack 扩展。
此步骤是必需的,因为 PostgresSQL 16 支持的 adminpack 扩展不再受 PostgresSQL 17 支持。
要删除 adminpack 扩展:
a. 连接到 PostgreSQL 16 数据库。
b. 运行以下命令:
DROP EXTENSION IF EXISTS adminpack;
* 
请不要在其他数据库上运行此命令。
3. 运行 pg_upgrade 工具。
a. 以管理员权限打开命令提示符,然后从单独的目录运行该工具。例如,C:\pgupgrade
b. 通过运行以下命令,将该目录添加到 PATH 环境变量中。确保在运行此命令之前,两个数据库均已停止。
C:\pgupgrade> set PGPASSFILE=C:\Users\<username>\.pgpass
c. 通过运行以下命令,开始迁移数据。确保根据需要更新路径。
C:\pgupgrade> "C:\Program Files\PostgreSQL\17\bin\pg_upgrade.exe" -b "C:\Program Files\PostgreSQL\16\bin" -B "C:\Program Files\PostgreSQL\17\bin" -d "C:\Program Files\PostgreSQL\16\data" -D "C:\Program Files\PostgreSQL\17\data" -U postgres -p <Postgres 16 port> -P <Postgres 17 port>
4. 启动 PostgreSQL 17 服务器。
在转到下一步之前,确保 PostgreSQL 17 服务器正在配置的端口上运行。
5. 如需删除 PostgreSQL 16 数据库,运行 VACUUM ANALYZE 命令。
C:\pgupgrade> "C:\Program Files\PostgreSQL\17\bin\vacuumdb" -U postgres -p 5434 --all --analyze-in-stages
6. 迁移后删除 \.pgpass 文件,以免出现安全漏洞。
7. 通过更新 <Server Install Location>\config 目录下的 Codebeamer 3.0 configuration.properties 文件,添加 PostgreSQL 17 数据库的详情,例如主机、端口、用户名和密码。
8. Codebeamer 服务器从 3.0 升级到 3.1。
这对您有帮助吗?