恢复仪表盘备份
学习如何将仪表盘备份恢复到新的Supabase项目
开始前的准备
注意事项
以下内容不会直接存储在您的数据库中,需要在新建项目中重新创建或设置:
- 边缘函数
- 认证设置和 API 密钥
- Realtime 设置
- 数据库扩展和设置
- 只读副本
恢复备份
获取新的数据库连接字符串
在项目仪表板中,点击连接。
默认使用会话池连接字符串。如果您的ISP支持IPv6或已启用IPv4附加组件,请使用直接连接字符串。
会话池连接字符串:
1postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@aws-0-us-east-1.pooler.supabase.com:5432/postgres
直接连接字符串:
1postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@db.[PROJECT-REF].supabase.com:5432/postgres
获取备份文件路径
获取下载的备份文件的相对路径。
如果在下载备份的同一目录中执行恢复操作,文件路径如下所示:
./backup_name.backup
验证备份文件格式
备份文件将以.gz扩展名进行gzip压缩。您需要解压文件使其格式如下:
backup_name.backup
恢复您的备份
1psql -d [CONNECTION_STRING] -f /file/path
将[CONNECTION_STRING]
替换为步骤1和2中的连接字符串。
将/file/path
替换为步骤3中的文件路径。
使用替换后的值运行命令,将备份恢复到您的新项目。
将存储对象迁移至新项目的S3存储
完成备份恢复后,存储桶和文件元数据会显示在新项目的控制面板中。
但存储在S3桶中的实际文件并不会自动迁移。
您可以使用下方提供的Google Colab脚本来将下载的存储对象迁移至新项目的S3存储桶:
该方法需要先将文件上传至Google Colab,再转存到S3存储桶。如果存储对象较大,可能会显著增加上传时间。
备份恢复过程中的常见错误
"对象已存在" "关系y的约束x已存在" "多种其他变体错误"
这些错误在恢复到新的Supabase项目时是预期会出现的。仪表板生成的备份是一个完整转储,包含所有模式的CREATE命令。这是有意设计的,因为完整转储允许您即使在Supabase之外也能从头重建整个数据库。
这种方法的一个副作用是,新的Supabase项目已经对这些模式(如storage和auth)应用了这些命令。这些错误不会造成问题,因为系统会跳过并执行下一条命令。另一个副作用是,所有触发器都会在恢复过程中运行,这虽然不理想但通常不会造成问题。
在某些情况下,这种方法可能会失败,如果发生这种情况,您应该联系Supabase支持寻求帮助。
"psql: 错误: 连接到服务器 "aws-0-us-east-1.pooler.supabase.com" (44.216.29.125) 端口5432失败: 收到GSSAPI协商的无效响应"
您可能正在使用psql和Postgres 15或更低版本。完全卸载Postgres安装,并按照上述说明安装最新版本以解决此问题。
"psql: 错误: 连接到服务器 "aws-0-us-east-1.pooler.supabase.com" (44.216.29.125) 端口5432失败: 从服务器收到SCRAM交换的错误: 密码错误"
如果数据库密码被重置,可能需要几分钟才能生效。如果您重置了密码,请等待几分钟后重试。