将企业数据库迁移到 Eon 模式
MIGRATE_ENTERPRISE_TO_EON 函数会将企业数据库迁移到 Eon 模式。迁移过程包括以下阶段:
提示
计划如何配置目标 Eon 数据库时,应考虑 MIGRATE_ENTERPRISE_TO_EON 会创建与原始企业数据库上的节点数相同的节点数以及相等数量的分段分片。请根据情况选择合适的实例类型。迁移先决条件
必须满足以下条件;否则 MIGRATE_ENTERPRISE_TO_EON 将返回错误:
-
源企业数据库版本必须不低于 10.0。
-
源数据库中的所有节点必须处于 UP 状态,且类型为 PERMANENT 或 EPHEMERAL。通过查询 NODES 系统表进行验证:
=> SELECT node_name, node_type, node_state FROM nodes; node_name | node_type | node_state ------------------+-----------+------------ v_vmart_node0001 | PERMANENT | UP v_vmart_node0002 | PERMANENT | UP v_vmart_node0003 | PERMANENT | UP (3 rows)
-
必须将源数据库配置为弹性群集。默认情况下,将自 Vertica 版本 9.2.1 起创建的任何数据库配置为弹性群集。要验证是否已将企业数据库配置为弹性群集,请查询 ELASTIC_CLUSTER 系统表:
=> SELECT is_enabled FROM elastic_cluster; is_enabled ------------ t (1 row)
如果查询返回 false,请对企业数据库调用 ENABLE_ELASTIC_CLUSTER 函数。
-
源企业数据库必须根据目标 Eon 对象存储的要求(请参阅下面的配置要求)来配置 Eon 参数。
-
该数据库不得包含不受 Eon 支持的投影。
不受支持的投影
Eon 数据库不支持四种类型的投影,如下所述。如果 MIGRATE_ENTERPRISE_TO_EON 在企业数据库中找到这些投影类型中的任何一种,它将回滚迁移并在迁移错误日志中报告违规投影或其锚表。例如:
The following projections are inconsistent with cluster segmentation. Rebalance them with REBALANCE_CLUSTER() or REBALANCE_TABLE():
Projection(Anchor Table): public.incon1_p1_b0(public.incon1)
配置要求
在迁移之前,您必须在源数据库中设置某些配置参数。具体参数取决于 Eon 数据库的环境。
重要
所有参数都必须在数据库级别设置。S3:AWS、Pure Storage、MinIO
以下要求适用于所有受支持的云和非云(本地)S3 环境:AWS、Pure Storage 和 MinIO。但有一个例外:通过 AWS 从企业模式数据库迁移时不适用。
-
AWSEndpoint(仅限 Pure Storage、MinIO)
-
AWSRegion(仅限 AWS)
重要
如果使用 Pure Storage 和 MinIO 迁移到本地公共存储,请将 AWSEnableHttps 设置为与数据库 TLS 加密设置兼容:如果使用 TLS,则 AWSEnableHttps=1,否则为 0。如果设置不兼容,迁移将返回错误。Azure
-
您必须使用
azb://
架构 URI 来设置用于公共数据存储的 Azure Blob 存储位置。有关此 URI 的格式,请参阅 Azure Blob 存储对象存储。 -
请选择以下身份验证方法之一以授予 Vertica 对存储位置的访问权限:
-
配置托管标识以授予 Azure VM 对存储位置的访问权限。此选项不需要在 Vertica 中进行任何配置。
-
在数据库级别设置 AzureStorageCredentials 和 AzureStorageEndpointConfig 配置参数,以使 Vertica 使用存储位置进行身份验证。
-
有关这两种身份验证方法的详细信息,请参阅 Azure Blob 存储对象存储。
GCP
HDFS
-
必须将源数据库配置为访问 HDFS,包括(如适用)高可用性 (HA) 和 Kerberos 身份验证 设置。
-
在数据库级别设置 HadoopConfDir(非 HA 环境则不需要)。
提示
如果使用 Kerberos 身份验证,请记录以下 Kerberos 配置参数的设置。您需要将这些设置应用于迁移的 Eon 数据库:
-
KerberosServiceName
-
KerberosRealm
-
KerberosKeytabFile
合规性验证
在运行迁移之前,请检查企业源数据库是否符合所有迁移要求。您可以通过将 MIGRATE_ENTERPRISE_TO_EON 的最后一个布尔实参设置为 true 来表示这是一次试运行而不是实际迁移:
=> SELECT migrate_enterprise_to_eon('s3://dbbucket', '/vertica/depot', true);
如果该函数遇到任何合规性问题,它会将这些问题写入数据库目录中的迁移错误日志 migrate_enterprise_to_eon_error.log
中。
迁移执行
MIGRATE_ENTERPRISE_TO_EON 将企业数据库迁移到 Eon 模式数据库。例如:
=> SELECT migrate_enterprise_to_eon('s3://dbbucket', '/vertica/depot', false);
如果最后一个实参被忽略或为 false,则该函数会执行迁移。MIGRATE_ENTERPRISE_TO_EON 将在前台运行,直到它返回成功或错误(阻止在源企业数据库上的同一会话中执行所有操作)。如果成功,MIGRATE_ENTERPRISE_TO_EON 将返回已迁移数据库中的节点的列表。然后,您可以继续恢复已迁移的 Eon 数据库。
处理中断的迁移
如果迁移在该函数返回结果(例如,客户端断开连接或发生网络中断)之前中断,则迁移会出错。在这种情况下,请调用 MIGRATE_ENTERPRISE_TO_EON 以重新开始迁移。
目标数据库的公共存储将保留发生错误之前已复制的数据。当您调用 MIGRATE_ENTERPRISE_TO_EON 以恢复迁移时,该函数会先检查公共存储上的数据,然后仅从源数据库复制未处理的数据。
重要
迁移到具有 HDFS 公共存储的 Eon 数据库时,迁移中断可能会使文件处于对用户可见的未完成状态。当您调用 MIGRATE_ENTERPRISE_TO_EON 以恢复迁移时,该函数会先比较源文件和目标文件的大小。如果发现给定文件的大小不一致,它会截断目标群集文件并重复传输整个文件。重复迁移
您可以多次重复迁移到同一个公共存储位置。这对于回填上一次迁移期间在源数据库中进行的更改很有用。
以下约束适用:
-
您只能从一个数据库迁移到同一公共存储位置。
-
恢复新迁移的 Eon 数据库后,您无法再次迁移到其公共存储,除非您先删除数据库,然后再清理存储。
监控迁移
DATABASE_MIGRATION_STATUS 系统表会实时显示迁移进度,还会存储以前迁移的数据。以下示例显示正在进行迁移的数据:
=> SELECT node_name, phase, status, bytes_to_transfer, bytes_transferred, communal_storage_location FROM database_migration_status ORDER BY node_name, start_time;
node_name | phase | status | bytes_to_transfer | bytes_transferred | communal_storage_location
------------------+--------------------+-----------+-------------------+------------------+---------------------------
v_vmart_node0001 | Catalog Conversion | COMPLETED | 0 | 0 | s3://verticadbbucket/
v_vmart_node0001 | Data Transfer | COMPLETED | 1134 | 1134 | s3://verticadbbucket/
v_vmart_node0001 | Catalog Transfer | COMPLETED | 3765 | 3765 | s3://verticadbbucket/
v_vmart_node0002 | Catalog Conversion | COMPLETED | 0 | 0 | s3://verticadbbucket/
v_vmart_node0002 | Data Transfer | COMPLETED | 1140 | 1140 | s3://verticadbbucket/
v_vmart_node0002 | Catalog Transfer | COMPLETED | 3766 | 3766 | s3://verticadbbucket/
v_vmart_node0003 | Catalog Conversion | COMPLETED | 0 | 0 | s3://verticadbbucket/
v_vmart_node0003 | Data Transfer | RUNNING | 5272616 | 183955 | s3://verticadbbucket/
错误日志记录
MIGRATE_ENTERPRISE_TO_EON 会在数据库目录的 migrate_enterprise_to_eon_error.log
中记录与迁移相关的警告、错误和提示。在执行期间,该函数还会将消息以及错误日志的路径名一起打印到标准输出中。
转换结果
请按如下方式处理源数据库中的可见对象:
-
全局编录对象:已同步到公共存储。
-
同一伙伴实例投影组中的多个分段投影:将迁移组中的一个投影。
-
仅在一个节点上复制的未分段投影:分布在所有节点上。
-
节点数:相同数量的节点,以及相等数量的分段分片。您可能希望更改分片数量,以提高与子群集中节点数量的一致性。有关详细信息,请参阅RESHARD_DATABASE。
-
USER 和 TEMP 存储位置:已迁移。请考虑评估所有已迁移的存储位置与 Eon 模式数据库的相关性。有关详细信息,请参阅临时数据的 S3 存储。
-
DATA 和 TEMP,DATA 存储位置:未迁移。新的默认 DATA 和 TEMP,DATA 位置与存储库位于同一路径上。
-
故障组和存储策略:未迁移。
-
外部过程:未迁移。
-
与网络设置(负载均衡组、网络地址、路由规则、子网等)相关的编录对象:未迁移。
存储库位置是在 MIGRATE_ENTERPRISE_TO_EON 中指定的。恢复后,将默认存储库大小设置为本地文件系统的 80%。
Eon 数据库激活
HDFS 先决条件
如果迁移到具有 HDFS 公共存储的 Eon 数据库,请创建在恢复新的 Eon 数据库时要使用的引导文件。引导文件必须位于要启动恢复操作的同一节点上,并且可以由启动恢复操作的用户读取。
仅当新的 Eon 数据库使用以下一项或两项时,才需要引导文件:
-
高可用性 (HA) 名称节点:将
HadoopConfDir
设为hdfs-site.xml
配置文件的位置 — 通常为/etc/hadoop/conf
。此文件定义了hdfs.nameservices
参数和各个名称节点,并且必须分布在所有群集节点上。有关详细信息,请参阅配置 HDFS 访问。 -
Kerberos 身份验证:设置以下 Kerberos 配置参数:
-
KerberosServiceName
-
KerberosRealm
-
KerberosKeytabFile
-
例如,采用 HA 和 Kerberos 身份验证的 Eon 数据库的引导文件必须具有以下设置:
HadoopConfDir = config-path
KerberosServiceName = principal-name
KerberosRealm = realm-name
KerberosKeytabFile = keytab-path
所有迁移
迁移完成且 Eon 数据库已做好使用准备后,请执行以下步骤:
-
请使用以下方法之一恢复数据库:
在以下示例中,管理工具
revive_db
命令会恢复使用 S3 公共存储的三节点数据库:admintools -t revive_db -x auth_params.conf \ --communal-storage-location=s3://verticadbbucket \ -d VMart \ -s 172.16.116.27,172.16.116.28,172.16.116.29 \ --force
在下一个示例中,
revive_db
会恢复使用 HDFS 公共存储的三节点数据库:admintools -t revive_db -x bootstrap_params.conf \ --communal-storage-location=webhdfs://mycluster/verticadb \ -d verticadb \ -s vnode01,vnode02,vnode03
-
检查
/opt/vertica/config/admintools.conf
中的controlmode
设置。此设置必须与实施 Eon 需满足的网络消息传递要求兼容。例如,S3/AWS (Amazon Cloud) 依赖于单播消息传递,这与point-to-point
(pt2pt) 的controlmode
设置兼容。如果源数据库controlmode
设置为broacast
且迁移到 S3/AWS 公共存储,则必须使用管理工具来更改controlmode
:$ admintools -t re_ip -d dbname -T
重要
如果未正确设置controlmode
,则尝试启动迁移的 Eon 数据库将失败。 -
启动 Eon 模式数据库。
-
调用 CLEAN_COMMUNAL_STORAGE 以移除迁移过程中可能留下的不需要的数据文件。
-
如果迁移到 S3 本地公共存储(Pure Storage 或 MinIO),则使用 ALTER DATABASE...SET PARAMETER 将 AWSStreamingConnectionPercentage 配置参数设为 0。
-
查看存储库存储位置大小并根据需要进行调整。
-
如果分片数量不是最佳,请考虑重新切分 Eon 模式数据库。有关详细信息,请参阅选择分片数和初始节点计数。如果需要,请使用 RESHARD_DATABASE 来更改分片数量。