经常会有小伙伴来聊天广场摸鱼,杜老师之前尝试直接更换 PostgreSQL 版本,结果差点导致数据丢失。最近整理了一些 PostgreSQL 版本升级方法,供有需要的小伙伴参考。
pg_upgrade 法 {#pg-upgrade-法}
在开始升级前,请确保数据库已经完整备份。这可以通过使用 pg_dump
工具完成。
确保服务器已经安装 PostgreSQL14,包括客户端库。如果服务器上已经安装了 PostgreSQL13,需要先卸载它,然后再安装 PostgreSQL 14。
使用 pg_upgrade
工具来升级数据目录。例如,如果当前的数据目录位于/var/lib/postgresql/13/main
,那么升级命令可参考 pg_upgrade -b /var/lib/postgresql/13/main -B /var/lib/postgresql/14/main -d /usr/local/pgsql/14/bin -u postgres
。
确保使用正确的路径和 PostgreSQL 14 的安装路径。
编辑主配置 postgresql.conf
文件,修改任何可能与新版本不兼容的设置。
使用 PostgreSQL14 启动服务器。
使用 psql
连接到数据库并检查版本信息,确保一切正常。
一旦确认升级成功,可以删除旧版本的数据目录。
pg_dump 法 {#pg-dump-法}
在升级前,务必备份 PostgreSQL 数据库。可以使用 pg_dump
命令来创建数据库的备份:
|-----------|------------------------------------------------------------------|
| 1
| pg_dump -h localhost -U postgres -Fc -f backup.dump mydb
|
安装新版本 PostgreSQL:
|-------------|----------------------------------------------------------------|
| 1 2
| sudo apt-get update sudo apt-get install postgresql-14
|
升级 PostgreSQL 的数据版本:
|-------------|---------------------------------------------------------------------------|
| 1 2
| sudo pg_dropcluster --stop 13 main sudo pg_upgradecluster 13 main
|
恢复数据:
|-----------|-----------------------------------------------------------------|
| 1
| pg_restore -h localhost -U postgres -d mydb backup.dump
|
删除旧版本 PostgreSQL:
|-----------|------------------------------------------|
| 1
| sudo apt-get purge postgresql-13
|
重启 PostgreSQL 的服务:
|-----------|----------------------------------------------|
| 1
| sudo systemctl restart postgresql-14
|