跳至主要内容

备份

注意

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

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

ClickHouse 云中备份的工作原理

ClickHouse 云备份是“完整”和“增量”备份的组合,构成了备份链。该链从完整备份开始,然后在接下来的几个预定的时间段内进行增量备份,以创建一系列备份。备份链达到一定长度后,将启动一个新的链。如果需要,可以利用整个备份链将数据还原到新服务。一旦特定链中包含的所有备份都超过了为服务设置的保留时间范围(有关保留时间的更多信息,请参见下文),该链将被丢弃。

在下图中,实线方块表示完整备份,虚线方块表示增量备份。围绕方块的实线矩形表示保留期以及对最终用户可见的备份,这些备份可用于备份还原。在以下场景中,每 24 小时进行一次备份,并保留 2 天。

在第 1 天,进行完整备份以启动备份链。在第 2 天,进行增量备份,现在我们可以从完整备份和增量备份还原数据。到第 7 天,我们有 1 个完整备份和 6 个增量备份,最近的 2 个增量备份对用户可见。在第 8 天,我们进行新的完整备份,在第 9 天,当我们在新链中拥有 2 个备份后,上一条链将被丢弃。

Backup chain

Clickhouse 云中**生产**层的默认备份策略和保留时间

默认备份策略

ClickHouse 云会每 24 小时创建一次服务备份。**生产**服务的备份保留 2 天,而**开发**服务的备份保留 1 天。如果您没有按照以下说明自定义备份计划,这将是您服务备份的计划和保留策略。ClickHouse 云中默认备份不收费。

可配置备份

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

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

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

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

Configure backup settings

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

Select backup retention and frequency
注意

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

注意

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

备份状态列表

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

List of backups statuses

了解备份成本

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

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

Backup usage chart

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

  • 完整备份和增量备份的大小
  • 所需的频率
  • 所需的保留时间
  • 云提供商和区域
注意

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

还原备份​

备份会还原到新的 ClickHouse 云服务,而不是还原到进行备份的现有服务。

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

Restoring a backup

新服务将在服务列表中显示为 Provisioning,直到它准备好为止

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 ...
ENGINE = ReplicatedMergeTree
ORDER BY ...

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

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

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

取消删除或取消删除表

ClickHouse Cloud 不支持 UNDROP 命令。如果您不小心 DROP 了表,最佳做法是恢复您的最后一次备份并从备份中重新创建表。

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

此外,为了防止意外删除数据,请注意,在 ClickHouse Cloud 中无法删除大小超过 1TB 的表。如果您希望删除超过此阈值的表,请联系[email protected]