平台

恢复仪表盘备份

学习如何将仪表盘备份恢复到新的Supabase项目


开始前的准备

注意事项

以下内容不会直接存储在您的数据库中,需要在新建项目中重新创建或设置:

  • 边缘函数
  • 认证设置和 API 密钥
  • Realtime 设置
  • 数据库扩展和设置
  • 只读副本

恢复备份

1

获取新的数据库连接字符串

在项目仪表板中,点击连接

会话池连接字符串:

1
postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@aws-0-us-east-1.pooler.supabase.com:5432/postgres

直接连接字符串:

1
postgresql://postgres.[PROJECT-REF]:[YOUR-PASSWORD]@db.[PROJECT-REF].supabase.com:5432/postgres
2

获取数据库密码

数据库设置中重置密码。

将连接字符串中的[YOUR-PASSWORD]替换为数据库密码。

3

获取备份文件路径

获取下载的备份文件的相对路径。

如果在下载备份的同一目录中执行恢复操作,文件路径如下所示:

./backup_name.backup

4

验证备份文件格式

备份文件将以.gz扩展名进行gzip压缩。您需要解压文件使其格式如下:

backup_name.backup

5

恢复您的备份

1
psql -d [CONNECTION_STRING] -f /file/path

[CONNECTION_STRING]替换为步骤1和2中的连接字符串。

/file/path替换为步骤3中的文件路径。

使用替换后的值运行命令,将备份恢复到您的新项目。

将存储对象迁移至新项目的S3存储

完成备份恢复后,存储桶和文件元数据会显示在新项目的控制面板中。
但存储在S3桶中的实际文件并不会自动迁移。

您可以使用下方提供的Google Colab脚本来将下载的存储对象迁移至新项目的S3存储桶:

在Colab中打开

该方法需要先将文件上传至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交换的错误: 密码错误"

如果数据库密码被重置,可能需要几分钟才能生效。如果您重置了密码,请等待几分钟后重试。