Debian上PostgreSQL数据库迁移技巧

以下是在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

二、物理复制(适合大规模数据)

  • 流复制配置
    1. 源服务器修改postgresql.conf:启用wal_level = replica,设置archive_mode = on
    2. 配置pg_hba.conf允许复制连接。
    3. 创建复制用户:CREATE USER replicator WITH REPLICATION PASSWORD 'password'
    4. 目标服务器使用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验证数据完整性,删除临时文件。

参考来源: