You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将本地PostgreSQL迁移至AWS RDS PostgreSQL实例?

本地PostgreSQL迁移至AWS RDS PostgreSQL的可行方案与实操步骤

当然有成熟的迁移方案!根据你的数据库规模、可接受的停机时间,我整理了三种最常用的方式,一步步给你讲清楚:

一、pg_dump + pg_restore(适合中小型数据库,操作简单)

这是最基础的迁移方式,适合数据量不大(比如几十GB以内)、能接受短时间停机的场景。

具体步骤:

  1. 备份本地数据库
    在本地PostgreSQL服务器上执行备份命令,建议用自定义格式(压缩率高,恢复更灵活):

    pg_dump -Fc -U 本地用户名 -d 本地数据库名 -f 备份文件名.dump
    

    举个实际例子:pg_dump -Fc -U postgres -d my_business_db -f mydb_backup.dump

  2. 将备份文件上传到AWS
    你可以用scp直接传到同区域的AWS EC2实例(传输速度更快),或者用AWS CLI上传到S3桶:

    aws s3 cp mydb_backup.dump s3://your-backup-bucket-name/
    

    要是没装AWS CLI,直接登录S3控制台手动上传也没问题。

  3. 恢复到RDS PostgreSQL

    • 如果备份文件在EC2上,直接用pg_restore连接RDS实例:
      pg_restore -U rds_admin_user -h your-rds-instance-endpoint -d rds_target_db -Fc mydb_backup.dump
      
    • 如果备份在S3,先把文件下载到EC2或本地,再执行上面的恢复命令。

    注意:RDS要提前创建好版本兼容的PostgreSQL实例,并且安全组要允许你的本地机器/EC2访问RDS的5432端口。

二、AWS数据库迁移服务(DMS)—— 低停机迁移(适合大型数据库)

如果你的数据库很大,或者业务不能接受长时间停机,DMS是最佳选择。它支持全量+增量同步,先迁移历史数据,再实时同步新增/修改的数据,最后切换业务时几乎无停机。

具体步骤:

  1. 准备源端和目标端

    • 源端(本地PostgreSQL):开启逻辑复制,修改postgresql.conf里的配置:
      wal_level = logical
      max_replication_slots = 5  # 至少留1个给DMS
      max_wal_senders = 5
      
      重启PostgreSQL服务后,创建一个有复制权限的专用用户:
      CREATE USER dms_sync_user WITH REPLICATION LOGIN PASSWORD 'your-strong-password';
      GRANT SELECT ON ALL TABLES IN SCHEMA public TO dms_sync_user;
      
    • 目标端(RDS):提前创建好PostgreSQL实例,确保DMS服务能同时连通源端和目标端(安全组开放5432端口,网络打通)。
  2. 创建DMS迁移任务

    • 登录AWS控制台打开DMS服务,先创建源端点(选择PostgreSQL类型,填写本地数据库的IP、端口、用户名密码)和目标端点(直接选择已创建的RDS实例,自动填充连接信息)。
    • 创建复制实例:根据数据量选合适的规格,建议选和源库CPU/内存匹配的实例,确保同步效率。
    • 创建迁移任务:
      • 任务模式选「全量迁移+持续数据变更捕获(CDC)」;
      • 表映射里选择要迁移的库/表,或者直接全库迁移;
      • 启动任务后,先等全量迁移完成,再观察增量同步的状态,确认数据完全一致后,就可以把业务切换到RDS了。

三、S3 + 并行备份恢复(超大型数据库,优化传输)

如果数据库是几百GB甚至TB级,直接单进程备份传输太慢,可以用并行备份+S3加速传输的方式。

具体步骤:

  1. 并行备份本地数据库
    用pg_dump的并行选项,利用多核CPU加快备份速度:

    pg_dump -Fc -U local_user -d huge_db -j 8 -f huge_db_backup.dump
    

    -j 8表示用8个并行进程,根据你的服务器CPU核数调整,核数多就设大一点。

  2. 并行上传到S3
    用AWS CLI的多分段上传功能,比单文件上传快很多:

    aws s3 cp huge_db_backup.dump s3://your-large-backup-bucket/ --multipart-chunk-size 20MB --multipart-threshold 20MB
    
  3. 并行恢复到RDS
    把S3的备份文件下载到同区域的EC2实例(跨区域传输慢,尽量选同区域),然后用pg_restore并行恢复:

    pg_restore -U rds_user -h rds-endpoint -d rds_target_db -j 8 -Fc huge_db_backup.dump
    

关键注意事项

  • 版本兼容:本地PostgreSQL版本要和RDS版本兼容,比如本地是12.8,RDS选12.x系列,不要跨大版本迁移(比如从11直接迁到15,可能有兼容性问题)。
  • 数据一致性验证:迁移完成后,一定要验证数据!比如对比核心表的行数,用SELECT COUNT(*) FROM table_name;,或者用pg_checksums校验数据完整性。
  • 索引与约束优化:如果用pg_dump恢复,默认会同步索引和约束,你可以先跳过索引恢复(加上--no-indexes参数),等数据全部导入后再单独创建索引,能大幅加快恢复速度。

内容的提问来源于stack exchange,提问作者DAIDYAKA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 11:28:14