把 PostgreSQL 从其他环境迁移到 CentOS,常见有几种场景。下面我按最常用、最稳妥的方式给你一个完整说明,你可以对照自己的情况选择。
✅ 强烈推荐:逻辑迁移(pg_dump / pg_restore)
# 安装官方仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装 PostgreSQL
sudo yum install -y postgresql15-server postgresql15-contrib
# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
# 启动并设置开机自启
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
CentOS 8 / Rocky / Alma 类似,只是 yum → dnf
pg_dump -h 源IP -p 5432 -U 用户名 -d 数据库名 -Fc > db.dump
示例:
pg_dump -h 192.168.1.10 -p 5432 -U postgres -d mydb -Fc > mydb.dump
scp mydb.dump user@centos_ip:/tmp/
sudo -u postgres psql
CREATE DATABASE mydb;
\q
pg_restore -U postgres -d mydb /tmp/mydb.dump
✅ 优点:
/var/lib/pgsql/15/data
postgresql.conf / pg_hba.conf⚠️ 风险:容易因版本/系统差异导致无法启动
docker exec -t pg_container pg_dump -U postgres mydb > mydb.sql
psql -U postgres -d mydb < mydb.sql
编辑:
/var/lib/pgsql/15/data/pg_hba.conf
添加:
host all all 0.0.0.0/0 md5
修改:
listen_addresses = '*'
重启:
systemctl restart postgresql-15
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'newpassword';
| 场景 | 推荐方式 |
|---|---|
| 跨版本 | pg_dump |
| 不同系统 | pg_dump |
| 同版本、同系统 | 物理迁移 |
| Docker → CentOS | pg_dump |
你可以直接告诉我:
我可以给你精确到命令级别的迁移方案。