GCP PostgreSQL仅含私有IP:数据库迁移及项目连接方案咨询
私有IP的GCP PostgreSQL:连接、迁移及权限问题解决
一、连接私有IP的PostgreSQL实例
因为实例仅分配私有IP,只能通过GCP内部网络或打通的外部网络访问,常用方式有三种:
- 同VPC下的Compute Engine虚拟机:在实例所在VPC内创建一台VM,登录VM后直接用私有IP连接,命令示例:
psql -h 10.123.45.67 -U postgres -d my_database - Cloud SQL Auth Proxy本地连接:本地环境可通过代理打通到GCP私有网络,步骤如下:
- 下载对应系统的Cloud SQL Auth Proxy工具
- 运行代理命令,将实例映射到本地端口:
./cloud_sql_proxy -instances=my-project-id:us-central1:my-sql-instance=tcp:5432 - 本地用
127.0.0.1作为主机地址连接:psql -h 127.0.0.1 -U postgres -d my_database
- VPC对等/云VPN打通外部网络:如果你的本地办公网络或其他云环境和GCP VPC通过对等连接或VPN打通,就能直接用私有IP访问实例
二、旧数据库迁移到新私有IP实例
分两种场景处理:
旧库是GCP Cloud SQL实例(同VPC或可连通)
- 用Cloud SQL内置迁移工具:在新实例的控制台找到「迁移」选项,选择源实例,配置迁移任务(支持全量迁移+增量同步),跟着向导完成即可
- pg_dump+pg_restore命令行迁移:在同VPC的VM上执行导出和导入:
导出旧库:
导入新库:pg_dump -h 10.76.54.32 -U old_user -d old_db > db_dump.sqlpsql -h 10.123.45.67 -U new_user -d new_db < db_dump.sql
旧库在外部(本地/其他云平台)
- 通过Auth Proxy中转迁移:先按照前面的方法用Auth Proxy把新库映射到本地,然后执行:
导出旧库:
导入新库:pg_dump -h old-db-host -U old_user -d old_db > db_dump.sqlpsql -h 127.0.0.1 -U new_user -d new_db < db_dump.sql - ETL工具迁移:用GCP Dataflow这类工具,配置数据源为旧数据库,数据目标为新的私有IP Cloud SQL实例,适合大规模数据迁移
三、公网IP权限问题
要给Cloud SQL实例分配公网IP,你需要拥有cloudsql.instances.update权限,这个权限通常包含在Cloud SQL Admin(roles/cloudsql.admin)角色里。直接联系项目管理员,请求为你的账号添加该角色或对应的权限,之后就能在实例控制台的「连接」页面修改公网IP设置了
内容的提问来源于stack exchange,提问作者Rahul Chhabra
相关产品推荐
相关产品推荐

