在 Debian 上迁移 PostgreSQL 数据库,常见有同版本迁移、跨版本迁移、同机/跨机迁移几种场景。下面按最常用、最稳妥的方式给你说明。
psql --version
pg_lsclusters
pg_dump -U 用户名 数据库名 > db.sql
或整库集群备份:
pg_dumpall -U postgres > all.sql
Debian 常通过 pg_lsclusters 管理多个版本。
apt install postgresql-15
pg_ctlcluster 13 main stop
/usr/lib/postgresql/15/bin/pg_upgrade \
-b /usr/lib/postgresql/13/bin \
-B /usr/lib/postgresql/15/bin \
-d /var/lib/postgresql/13/main \
-D /var/lib/postgresql/15/main \
-U postgres
pg_ctlcluster 15 main start
pg_dump -h 旧IP -U 用户 数据库名 > db.sql
createdb -U postgres 数据库名
psql -U postgres 数据库名 < db.sql
如果是大库,建议:
pg_dump -Fc 数据库名 > db.dump
pg_restore -U postgres -d 数据库名 db.dump
适合生产环境零停机。
postgresql.confwal_level = logical
CREATE PUBLICATION pub FOR ALL TABLES;
CREATE SUBSCRIPTION sub
CONNECTION 'host=源IP dbname=库 user=用户'
PUBLICATION pub;
pg_upgrade 或 dump/restorepostgresql.conf / pg_hba.conf 配置如果你能告诉我:
我可以给你更精确的命令。