迁移到托管式灾难恢复
本页介绍了如何从 BigQuery 跨区域复制迁移到 BigQuery 管理的灾难恢复。
概览
BigQuery 跨区域复制 (CRR) 和托管式灾难恢复 (DR) 功能旨在增强数据可用性和灾难恢复能力。不过,它们处理区域性服务中断的方式不同。如果主区域不可用,CRR 不允许提升次要副本。相比之下,灾难恢复通过允许故障切换到辅助副本(即使主区域不可用),提供了更全面的保护。使用 CRR 时,系统只会复制存储空间,而使用 DR 时,系统会复制存储空间和计算容量。
下表介绍了 CRR 和 DR 的功能:
功能 | CRR | DR |
---|---|---|
初始复制流程 | 使用 CRR 初始复制数据集。 | 在将 CRR 数据集迁移到 DR 数据集之前,初始加载数据会先使用 CRR 复制。 |
促销活动复制 | 使用标准复制。 | 使用增强型复制。 |
促销流程 | 在数据集级层进行提升。 | 在预留级别进行提升(预留故障切换和数据集提升)。多个数据集可以附加到一个故障切换预留。 数据集级升级不适用于 DR。 |
促销活动执行 | 通过界面或基于 SQL 的 DDL 命令为每个数据集创建视图。不支持 CLI、客户端库、API 或 Terraform。 | 通过界面或基于 SQL 的 DDL 命令为每个 EPE 预订。不支持 CLI、客户端库、API 或 Terraform。 |
故障切换模式 | 软故障切换。 | 硬故障切换。 |
版本要求 | 任何容量模型。 | 企业 Plus 版。 |
限制 | CRR 限制。 | 包括 CRR 限制和 DR 限制。 |
写入权限 | 在任何容量模式下运行的作业都可以写入主区域中的复制数据集。辅助副本始终是只读的。 | 只有在企业 Plus 版预留下运行的作业才能写入主区域中的复制数据集。次要数据集和预留副本始终是只读的。 |
读取权限 | 采用任何容量模型运行的作业都可以从复制的数据集读取数据。 | 采用任何容量模型运行的作业都可以从复制的数据集读取数据。 |
迁移影响
以下部分概述了迁移到 DR 时发生的费用和功能变化。
费用影响
从 CRR 迁移到 DR 时,请考虑以下费用影响:
灾难恢复仅支持企业 Plus 版的写入访问权限,这会导致计算费用更高。您可以从任何容量模型读取数据,因此现有作业的读取费用不会发生变化。
灾难恢复使用增强型复制,这会产生额外费用,具体取决于区域对。
CRR 和 DR 的存储价格相同。
如需详细了解价格,请参阅价格。
功能影响
从 CRR 迁移到 DR 时,请考虑以下功能影响:
灾难恢复仅支持在预订级别进行故障切换。依赖于数据集级别故障转移的所有现有作业都会失败。
将数据集附加到灾难恢复预留后,只有企业 Plus 版查询才能对该数据集进行写入。任何不使用企业 Plus 版计算容量的现有写入作业都会失败。
准备工作
在开始迁移之前,请先熟悉跨区域复制和托管式灾难恢复中的概念。
如需迁移到 DR,您必须满足以下前提条件:
您有一个已启用 BigQuery 的有效 Trusted Cloud by S3NS 项目。
您已使用 CRR 创建和复制了数据集。
数据集具有您要用于 DR 的主要位置和次要位置。
您拥有使用 DR 所需的权限。如需详细了解权限,请参阅开始前须知。
从 CRR 迁移到 DR
以下部分介绍了如何将数据集从 CRR 迁移到 DR。假设您已为 CRR 配置好数据集。
创建故障切换预留
如需启用灾难恢复,您必须在主要区域中创建故障切换预留。使用相应的主要区域和次要区域配置预订。主区域和次要区域应与您打算迁移到 DR 的所有 CRR 数据集的区域一致。如需创建故障转移预订,请选择以下选项之一:
控制台
在 Trusted Cloud 控制台中,前往 BigQuery 页面。
在导航菜单中,点击容量管理,然后点击创建预留。
在预留名称字段中,输入预留的名称。
在位置列表中,选择相应位置。
在版本列表中,选择企业 Plus 版。
在预留大小上限选择器列表中,选择预留大小上限。
可选:在基准槽数字段中,输入预留的基准槽数。
可用自动扩缩槽的数量为预留大小上限值减去基准槽数值。例如,如果您创建了一个包含 100 个基准槽且预留大小上限为 400 的预留,则该预留包含 300 个自动扩缩槽。如需详细了解基准槽,请参阅将预留与基准槽和自动扩缩槽搭配使用。
在次要位置列表中,选择次要位置。
如需停用空闲槽共享并且仅使用指定的槽容量,请点击忽略空闲槽切换开关。
如需展开高级设置部分,请点击
展开箭头。可选:如需设置目标作业并发,请点击开启替换自动目标作业并发切换开关,然后为目标作业并发输入值。槽明细显示在费用估算表中。预留摘要显示在容量摘要表中。
点击保存。
新预留会显示在槽预留标签页中。
SQL
如需创建预留,请使用 CREATE RESERVATION
数据定义语言 (DDL) 语句。
在 Trusted Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,输入以下语句:
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, edition = ENTERPRISE_PLUS, secondary_location = SECONDARY_LOCATION);
替换以下内容:
ADMIN_PROJECT_ID
:拥有预留资源的管理项目的项目 ID。LOCATION
:预留的位置。如果您选择 BigQuery Omni 位置,则您的版本选项仅限于企业版。RESERVATION_NAME
:预留的名称。该名称必须以小写字母或数字开头和结尾,并且只能包含小写字母、数字和短划线。
NUMBER_OF_BASELINE_SLOTS
:要分配给预留的基准槽数。您不能在同一预留中设置slot_capacity
选项和edition
选项。SECONDARY_LOCATION
:预留的次要位置。如果发生服务中断,则附加到此预留的任何数据集都会故障切换到此位置。
点击
运行。
如需详细了解如何运行查询,请参阅运行交互式查询。
将数据集附加到预留
创建故障切换预留后,将您的跨区域数据集附加到该预留。这会为所有已附加的数据集启用故障切换。如需将数据集附加到预订,请选择以下选项之一:
控制台
在 Trusted Cloud 控制台中,前往 BigQuery 页面。
在导航菜单中,点击容量管理,然后点击槽预留标签页。
点击要向其附加数据集的预留。
点击灾难恢复标签页。
点击添加故障切换数据集。
输入要与预留关联的数据集的名称。
点击添加。
SQL
如需将数据集附加到预留,请使用 ALTER SCHEMA SET OPTIONS
DDL 语句。
在 Trusted Cloud 控制台中,前往 BigQuery 页面。
在查询编辑器中,输入以下语句:
ALTER SCHEMA `DATASET_NAME` SET OPTIONS ( failover_reservation = ADMIN_PROJECT_ID.RESERVATION_NAME);
替换以下内容:
DATASET_NAME
:数据集的名称。ADMIN_PROJECT_ID.RESERVATION_NAME
:您要将数据集关联到的预留的名称。
点击
运行。
如需详细了解如何运行查询,请参阅运行交互式查询。
验证配置
如需验证配置的状态,请查询 INFORMATION_SCHEMA.SCHEMATA_REPLICAS
视图。
PROJECT_ID.`region-REGION`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS[_BY_PROJECT]
验证数据集是否已附加到正确区域的正确预订。
替换以下内容:-
可选:
PROJECT_ID
:您的 Trusted Cloud 项目的 ID。如果未指定,则使用默认项目。 -
REGION
:任何数据集区域名称。例如`region-us`
。
示例
以下示例将引导您使用 GoogleSQL 通过实用示例逐步完成从 CRR 迁移到 DR 的操作。对于此示例,假设存在以下情况:
您在一个名为
myproject
的项目中开展工作。您已创建名为
mydataset
的数据集,并使用 CRR 对其进行了配置。mydataset
的主要区域为us-central1
,次要区域为us-west1
。
如需开始将数据集迁移到 DR,请先使用企业 Plus 版创建预留。在此示例中,预订名称为 myreservation
。
CREATE RESERVATION `myproject.region-us-central1.myreservation`
OPTIONS (
slot_capacity = 0,
edition = ENTERPRISE_PLUS,
autoscale_max_slots = 50,
secondary_location = 'us-west-1');
预订创建后,您可以将数据集附加到预订。以下示例将数据集附加到预订:
ALTER SCHEMA
`myproject.mydataset`
SET OPTIONS (
failover_reservation = 'myproject.myreservation');
然后,验证数据集是否已成功附加。
SELECT
failover_reservation_project_id,failover_reservation_name,
FROM
`myproject`.`region-us-west1`.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
WHERE
schema_name='mydataset';
此查询的结果应如下所示:
+---------------------------------+---------------------------+ | failover_reservation_project_id | failover_reservation_name | +---------------------------------+---------------------------+ | myproject | myreservation | | myproject | myreservation | +---------------------------------+---------------------------+