逻辑备份是最基础的迁移方式,适用于跨版本、跨平台或需要灵活调整数据的场景。
pg_dump导出数据库(-Fc格式支持压缩和并行,提升效率):pg_dump -U postgres -Fc db_name -f db_name.dump
将db_name.dump传输到目标服务器(如用scp),然后使用pg_restore导入:pg_restore -U postgres -d new_db_name db_name.dump
pg_dumpall:pg_dumpall -U postgres -f all.dump
传输到目标服务器后,用psql恢复:psql -U postgres -f all.dump
pg_dump可兼容旧版本数据库,建议用新版本工具导出。物理迁移直接复制数据库文件,速度快,适用于同版本、同架构的迁移(如CentOS系统内升级PostgreSQL版本)。
systemctl stop postgresql;/var/lib/pgsql/data,可通过postgresql.conf确认):cp -rp /var/lib/pgsql/data/* /new/data/directory/
③ 修改权限:确保新目录属主为postgres,权限为700:chown -R postgres:postgres /new/data/directory/
chmod -R 700 /new/data/directory/
④ 修改配置:编辑/etc/postgresql/[版本]/main/postgresql.conf,将data_directory指向新路径;systemctl start postgresql。pgloader支持从MySQL、SQLite、Oracle等多种数据库迁移到PostgreSQL,也适用于PostgreSQL跨版本迁移,具备自动类型转换、并行处理等功能。
yum install -y pgloader;migrate.load):LOAD DATABASE
FROM mysql://user:password@source_host/source_db
INTO postgresql://user:password@target_host/target_db
WITH include no drop, create tables, create indexes, reset sequences
③ 执行迁移:pgloader migrate.load。CloudCanal等可视化工具支持PostgreSQL与其他数据库(如Doris、MySQL)的双向同步,适合需要持续数据同步的场景。
pg_hba.conf,禁止写入);psql -f backup.sql时添加-1参数),避免部分失败导致数据不一致。postgres)对数据目录有读写权限;GRANT语句是否生效)、表空间路径(pg_tablespace表)是否正确。pg_upgrade(就地升级,停机时间短)或逻辑备份还原(兼容性好);pg_upgrade -c检查兼容性问题(如不支持的扩展、数据类型);pg_stat_statements扩展的变更)。