以下是在Debian上进行PostgreSQL数据库迁移的常用技巧及工具:
一、逻辑备份与恢复
- pg_dump/pg_restore
- 单库迁移:
备份:pg_dump -U username -d source_db -F c -b -v -f backup.dump
恢复:pg_restore -U username -d target_db -v backup.dump - 全库迁移:
备份:pg_dumpall -U username -f all_databases.sql
恢复:psql -U username -f all_databases.sql - 压缩与并行:
压缩备份:pg_dump -F c -Z 9 -f backup.dump.gz
并行恢复:pg_restore -j 4 -d target_db backup.dump
- 单库迁移:
二、物理复制(适合大规模数据)
- 流复制配置:
- 源服务器修改
postgresql.conf:启用wal_level = replica,设置archive_mode = on。 - 配置
pg_hba.conf允许复制连接。 - 创建复制用户:
CREATE USER replicator WITH REPLICATION PASSWORD 'password'。 - 目标服务器使用
pg_basebackup拉取数据:pg_basebackup -U replicator -D /data -Ft -z -P。
- 源服务器修改
三、第三方工具迁移
- pgloader
支持从MySQL/Oracle等导入数据,配置文件示例:LOAD DATABASE FROM mysql://user:pass@host/source_db INTO postgresql://user:pass@host/target_db WITH include drop, create tables, reset sequences执行:
pgloader migration.load。
四、注意事项
- 权限与版本:确保目标服务器用户有足够权限,源与目标版本兼容。
- 数据一致性:迁移前锁定源数据库(如
pg_dump的-Fc格式可保证一致性)。 - 验证与清理:迁移后通过
pg_checksums验证数据完整性,删除临时文件。
参考来源: