跳到主要内容
跳到主要内容

备份

注意

在处理 ClickHouse Cloud 服务时,请勿使用 BACKUPRESTORE 命令。云备份应从 UI 进行管理。

数据库备份通过确保如果由于任何不可预见的原因导致数据丢失,服务可以从上次成功备份恢复到之前的状态,从而提供安全保障。这最大限度地减少了停机时间,并防止业务关键数据永久丢失。本指南介绍了备份在 ClickHouse Cloud 中如何工作,您可以配置服务的备份有哪些选项,以及如何从备份还原。

备份在 ClickHouse Cloud 中如何工作

ClickHouse Cloud 备份是“完整”备份和“增量”备份的组合,构成备份链。链从完整备份开始,然后在接下来的几个计划时间段内进行增量备份,以创建备份序列。一旦备份链达到一定长度,就会启动新的链。如果需要,可以利用整个备份链将数据恢复到新服务。一旦特定链中包含的所有备份都超过为服务设置的保留时间范围(稍后会详细介绍保留),则该链将被丢弃。

在下面的屏幕截图中,实线正方形显示完整备份,虚线正方形显示增量备份。正方形周围的实线矩形表示保留期和最终用户可见的备份,这些备份可用于备份还原。在下面的场景中,备份每 24 小时进行一次,并保留 2 天。

在第 1 天,进行完整备份以启动备份链。在第 2 天,进行增量备份,现在我们有一个完整备份和一个增量备份可供还原。到第 7 天,我们在链中有一个完整备份和六个增量备份,最近的两个增量备份对用户可见。在第 8 天,我们进行新的完整备份,在第 9 天,一旦我们在新链中有两个备份,则之前的链将被丢弃。

Backup chain

Clickhouse Cloud 中 生产 层级的默认备份策略和保留期

默认备份策略

ClickHouse Cloud 每 24 小时创建一次服务备份。生产 服务的备份保留 2 天,而 开发 服务的备份保留 1 天。如果您不按照下述方式自定义备份计划,这就是您服务的备份计划和保留策略。ClickHouse Cloud 中的默认备份不收取任何费用。

可配置备份

ClickHouse Cloud 允许您为 生产专用 层级服务配置备份计划。备份可以根据您的业务需求沿以下维度进行配置。

  • 保留期:每个备份将保留的天数。保留期可以指定为低至 1 天,高达 30 天,中间有几个值可供选择。
  • 频率:频率允许您指定后续备份之间的时间间隔。例如,“每 12 小时”的频率意味着备份将间隔 12 小时。频率范围可以从“每 6 小时”到“每 48 小时”,以以下小时增量递增:6、8、12、16、20、24、36、48。
  • 开始时间:您希望每天安排备份的开始时间。指定开始时间意味着备份“频率”将默认为每 24 小时一次。Clickhouse Cloud 将在指定开始时间后一小时内启动备份。
注意

自定义计划将覆盖 ClickHouse Cloud 中给定服务的默认备份策略。

要为服务配置备份计划,请转到控制台中的 设置 选项卡,然后单击 更改备份配置

Configure backup settings

这将打开另一个窗口,您可以在其中选择保留期、频率和开始时间的值。您需要保存选择的设置才能使其生效。

Select backup retention and frequency
注意

开始时间和频率是互斥的。开始时间优先。

注意

更改备份计划可能会导致更高的每月存储费用,因为某些备份可能不包含在服务的默认备份中。请参阅下面的“了解备份成本”部分。

备份状态列表

您的服务将根据设置的计划进行备份 - 无论是默认的每日计划还是您选择的自定义计划。所有可用的备份都可以从服务的 备份 选项卡查看。从这里,您可以看到备份的状态、持续时间以及备份的大小。您还可以使用 操作 列还原特定的备份。

List of backups statuses

了解备份成本

ClickHouse Cloud 包含两个免费备份,但选择需要保留更多数据或导致更频繁备份的计划可能会导致额外的备份存储费用。如果您不更改默认设置,则不会产生任何备份成本。

要了解备份成本,您可以从使用情况屏幕查看每个服务的备份成本(如下所示)。一旦您的备份在自定义计划下运行几天后,您就可以了解成本并推断出每月的备份成本。

Backup usage chart

估算备份的总成本需要您设置一个计划。我们也在更新我们的 定价计算器,以便您可以在设置计划之前获得每月成本估算。您需要提供以下输入才能估算成本

  • 完整备份和增量备份的大小
  • 期望的频率
  • 期望的保留期
  • 云提供商和区域
注意

请记住,随着服务中数据大小随时间变化(增长),备份的估计成本也会发生变化。

还原备份

备份将还原到新的 ClickHouse Cloud 服务,而不是从中进行备份的现有服务。

单击 还原 备份图标后,您可以指定将要创建的新服务的服务名称,然后还原此备份

Restoring a backup

新服务将在服务列表中显示为 正在配置,直到准备就绪

Provisioning service in progress

使用还原的服务

备份还原完成后,您现在将有两个类似的服务:需要还原的 原始服务 和从原始服务的备份还原的新的 还原服务

备份还原完成后,您应该执行以下操作之一

  • 使用新的还原服务并删除原始服务。
  • 将数据从新的还原服务迁移回原始服务,并删除新的还原服务。

使用 新的还原服务

要使用新服务,请执行以下步骤

  1. 验证新服务是否具有您的用例所需的 IP 访问列表条目。
  2. 验证新服务是否包含您需要的数据。
  3. 删除原始服务。

将数据从 新的还原服务 迁移回 原始服务

假设由于任何原因您无法使用新还原的服务;例如,如果您有用户或应用程序连接到现有服务。您可以决定将新还原的数据迁移到原始服务中。可以通过以下步骤完成迁移

允许远程访问新还原的服务

新服务应从与原始服务具有相同 IP 允许列表的备份中还原。这是必需的,因为除非您允许从 任何位置 访问,否则将不允许连接到其他 ClickHouse Cloud 服务。修改允许列表并暂时允许从 任何位置 访问。有关详细信息,请参阅 IP 访问列表 文档。

在新还原的 ClickHouse 服务上(托管还原数据的系统)

注意

您需要重置新服务的密码才能访问它。您可以从服务列表 设置 选项卡执行此操作。

添加一个只读用户,该用户可以读取源表(本例中为 db.table

CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;

复制表定义

select create_table_query
from system.tables
where database = 'db' and table = 'table'

在目标 ClickHouse Cloud 系统上(损坏表的系统)

创建目标数据库

CREATE DATABASE db

使用来自源的 CREATE TABLE 语句,创建目标表

提示

运行 CREATE 语句时,将 ENGINE 更改为不带任何参数的 ReplicatedMergeTree。ClickHouse Cloud 始终复制表并提供正确的参数。

CREATE TABLE db.table ...
# highlight-next-line
ENGINE = ReplicatedMergeTree
ORDER BY ...

使用 remoteSecure 函数将数据从新还原的 ClickHouse Cloud 服务拉取到您的原始服务中

INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')

在您成功将数据插入到原始服务后,请务必验证服务中的数据。数据验证后,您还应删除新服务。

取消删除或取消丢弃表

ClickHouse Cloud 中不支持

ClickHouse Cloud 中不支持 UNDROP 命令。如果您不小心 DROP 了一个表,最好的做法是还原您的上次备份并从备份中重新创建表。

为了防止用户意外删除表,您可以使用 GRANT 语句 撤销特定用户或角色的 DROP TABLE 命令 的权限。

注意

为了防止意外删除数据,请注意,默认情况下,在 ClickHouse Cloud 中无法删除大于 1TB 大小的表。如果您希望删除大于此阈值的表,可以使用设置 max_table_size_to_drop 来执行此操作

DROP TABLE IF EXISTS table_to_drop SYNC SETTINGS max_table_size_to_drop=2097152 -- increases the limit to 2TB