如何将Supabase生产数据库的数据拉取至本地Supabase数据库
从Supabase生产数据库同步数据到本地环境的方法
直接用PostgreSQL原生的pg_dump和pg_restore就能搞定,步骤如下:
导出生产数据库数据
- 打开Supabase控制台,进入你的项目,找到「数据库」→「连接字符串」,复制生产环境的
postgres协议连接URL(别复制API相关的那个)。 - 终端执行导出命令,把URL里的
[用户名]「密码」「主机地址」「端口」「数据库名」替换成实际值:
参数说明:pg_dump "postgresql://[用户名]:[密码]@[主机地址]:[端口]/[数据库名]" -F c -b -v -f supabase_prod_dump.dump-F c用自定义格式(恢复更高效),-b包含大对象,-v显示实时进度,-f指定导出文件的保存路径。
导入到本地Docker数据库
- 确认本地Supabase的
supabase-db容器在运行,用docker ps可以查看容器状态。 - 把导出的dump文件复制到容器里:
docker cp supabase_prod_dump.dump supabase-db:/tmp/ - 执行恢复命令,二选一即可:
- 方式一:进入容器的psql环境执行
然后在psql命令行输入:docker exec -it supabase-db psql -U postgres -d postgrespg_restore -U postgres -d postgres -v /tmp/supabase_prod_dump.dump - 方式二:直接在宿主机终端执行
docker exec -i supabase-db pg_restore -U postgres -d postgres -v < supabase_prod_dump.dump
- 方式一:进入容器的psql环境执行
避坑提醒
- 导出前最好暂停生产环境的写入操作(如果业务允许),防止导出过程中数据变化导致不一致。
- 本地数据库的Schema要和生产环境完全一致,不然恢复会报错。可以先在Supabase控制台的「数据库」→「Schema编辑器」导出Schema的SQL,在本地执行同步。
- 如果生产环境开了Row Level Security(RLS),恢复后需要重新配置权限,或者导出时加上
--no-owner --no-privileges参数避免权限冲突。
内容的提问来源于stack exchange,提问作者Jan Cahlík
相关产品推荐
相关产品推荐

