导入和导出数据的最佳做法

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本页面介绍了使用 Cloud SQL 导入和导出数据的最佳做法。如需了解将数据导入 Cloud SQL 的分步说明,请参阅导入数据。如需了解导出数据(无论是位于 Cloud SQL 中的数据还是位于您所管理实例中的数据)的分步说明,请参阅导出数据

导入和导出最佳做法

以下是导入和导出数据时要考虑的最佳做法:

请勿使用 Cloud Storage 请求者付款存储分区

您无法使用启用了请求者付款功能的 Cloud Storage 存储分区来将数据导入 Cloud SQL 以及从 Cloud SQL 导出数据。

压缩数据以减少费用

Cloud SQL 支持导入和导出压缩文件及未压缩文件。压缩文件可以节省 Cloud Storage 上的大量存储空间并减少存储费用,这在导出大型实例时尤为明显。

导出 BAK 文件时,请使用 .gz 文件扩展名来压缩数据。导入扩展名为 .gz 的文件时,系统会自动将其解压缩。

减少长时间运行的导入和导出过程

导入和导出 Cloud SQL 可能需要很长时间才能完成,具体取决于要处理的数据大小。这可能产生以下影响:

  • 您无法停止长时间运行的 Cloud SQL 实例操作。
  • 针对每个实例,一次只能执行一项导入或导出操作,而长时间运行的导入或导出操作会阻止其他操作,例如每日自动备份。

对小批量数据使用 Cloud SQL 导入或导出功能可以缩短每项操作的完成时间。

对于整个数据库迁移,您通常应使用 BAK 文件而不是 SQL 文件进行导入。通常,从 SQL 文件导入比从 BAK 文件导入花费的时间更长。

使用条带式导入和导出

执行条带式导入或导出时,您可以缩短操作完成所需的时间,并支持导入和导出大于 5 TB 的数据库。如需了解详情,请参阅使用 BAK 文件导出和导入

验证导入的数据库

导入操作完成后,连接到您的数据库并运行相应的数据库命令,以确保内容正确无误。例如,连接并列出数据库、表和特定条目。

已知限制

如需查看已知限制列表,请参阅导入和导出数据的问题

自动执行导出操作

尽管 Cloud SQL 没有提供自动导出数据库的内置方法,但是您可以使用多个 Google Cloud 组件构建自己的自动化工具。如需了解详情,请参阅本教程

问题排查

排查导入操作问题

问题 问题排查
HTTP Error 409: Operation failed because another operation was already in progress 您的实例已有一项待处理的操作。一次只能执行一项操作。在当前操作完成后尝试您的请求。
导入操作花费的时间太长。 过多的有效连接可能会干扰导入操作。

关闭未使用的操作。检查 Cloud SQL 实例的 CPU 和内存用量,以确保有大量的可用资源。确保将最多资源用于导入操作的最佳方法是在开始执行操作之前重启实例。

重启后,系统会执行以下操作:

  • 关闭所有连接。
  • 结束任何可能正在消耗资源的任务。
如果转储文件中引用的一个或多个用户不存在,导入操作可能会失败。 在导入转储文件之前,拥有对象或获得了对转储数据库中的对象权限的所有数据库用户都必须存在于目标数据库中。否则,导入操作将无法使用原始所有权或权限重新创建对象。

在导入之前,先创建数据库用户

排查导出操作问题

问题 问题排查
HTTP Error 409: Operation failed because another operation was already in progress. 您的实例已有一项待处理的操作。一次只能执行一项操作。在当前操作完成后尝试您的请求。
HTTP Error 403: The service account does not have the required permissions for the bucket. 确保存储桶已存在,并且 Cloud SQL 实例(正在执行导出)的服务帐号具有 Storage Object Creator 角色 (roles/storage.objectCreator) 以允许导出到存储桶。请参阅适用于 Cloud Storage 的 IAM 角色
您希望自动执行导出。 Cloud SQL 不提供自动执行导出的方法。

您可以使用 Cloud Scheduler、Pub/Sub 和 Cloud Functions 等 Google Cloud 产品构建自己的自动导出系统,类似自动备份一文所述。

后续步骤