你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Netezza 迁移的安全性、访问和操作

本文是一个包含七部分内容的系列的第三部分,提供有关如何从 Netezza 迁移到 Azure Synapse Analytics 的指导。 本文重点介绍安全访问操作的最佳做法。

安全注意事项

本文介绍现有旧版 Netezza 环境的连接方法,以及如何在风险和用户影响最小的情况下将其迁移到 Azure Synapse Analytics。

本文假设必须按原样迁移现有连接方法以及用户/角色/权限结构。 如果没有,请使用 Azure 门户创建和管理新的安全体系。

有关 Azure Synapse 安全选项的详细信息,请参阅安全白皮书

连接和身份验证

提示

Netezza 和 Azure Synapse 中的身份验证都可以“在数据库中”进行,或通过外部方法进行。

Netezza 授权选项

IBM Netezza 系统为 Netezza 数据库用户提供了多种身份验证方法:

  • 本地身份验证:Netezza 管理员使用 CREATE USER 命令或通过 Netezza 管理界面定义数据库用户及其密码。 在本地身份验证中,可以使用 Netezza 系统来管理数据库帐户和密码,以及在系统中添加和删除数据库用户。 此方法是默认的身份验证方法。

  • LDAP 身份验证:使用 LDAP 名称服务器对数据库用户进行身份验证,并管理密码、数据库帐户激活和停用。 Netezza 系统使用可插式身份验证模块 (PAM) 对 LDAP 名称服务器上的用户进行身份验证。 Microsoft Active Directory 遵守 LDAP 协议,因此可将用作 LDAP 服务器来进行 LDAP 身份验证。

  • Kerberos 身份验证:使用 Kerberos 分发服务器对数据库用户进行身份验证,并管理密码、数据库帐户激活和停用。

身份验证是系统范围的设置。 用户必须在本地进行身份验证,或者使用 LDAP 或 Kerberos 方法进行身份验证。 如果选择 LDAP 或 Kerberos 身份验证,请在创建用户时为每个用户指定本地身份验证。 LDAP 和 Kerberos 不可同时用于对用户进行身份验证。 Netezza 主机仅支持对数据库用户登录名进行 LDAP 或 Kerberos 身份验证,而不支持对主机上的操作系统登录名进行这种身份验证。

Azure Synapse 授权选项

Azure Synapse 支持两个基本连接和授权选项:

  • SQL 身份验证:SQL 身份验证通过包括数据库标识符、用户 ID 和密码以及其他可选参数的数据库连接进行。 它在功能上等同于 Netezza 本地连接。

  • Microsoft Entra 身份验证:通过 Microsoft Entra 身份验证,可以在一个位置集中管理数据库用户和其他 Microsoft 服务的标识。 集中 ID 管理提供了一个单一位置来管理 Azure Synapse 用户,并简化权限管理。 Microsoft Entra ID 还支持连接到 LDAP 和 Kerberos 服务 – 例如,如果要在迁移数据库后保留现有的 LDAP 目录,可以使用 Microsoft Entra ID 连接到这些目录。

用户、角色和权限

概述

提示

全方位的规划对于成功完成迁移项目至关重要。

Netezza 和 Azure Synapse 都通过用户、角色(Netezza 中的组)和权限的组合来实现数据库访问控制。 两者都使用标准 SQL CREATE USERCREATE ROLE/GROUP 语句来定义用户和角色,使用 GRANTREVOKE 语句来为这些用户和/或角色分配或删除权限。

提示

建议将迁移过程自动化,以减少使用的时间和错误范围。

从概念上讲,这两个数据库是相似的,现有用户 ID、组和权限的迁移可以在一定程度上自动化。 此类数据的迁移方式是从 Netezza 系统目录表中提取现有的旧用户和组信息,并生成要在 Azure Synapse 中运行的匹配等效 CREATE USERCREATE ROLE 语句,以重新创建相同的用户/角色层次结构。

提取数据后,使用 Netezza 系统目录表生成等效的 GRANT 语句以分配权限(如果存在等效的权限)。 下图显示了如何使用现有元数据生成所需的 SQL。

Chart showing how to automate the migration of privileges from an existing system.

有关详细信息,请参阅以下部分。

用户和角色

提示

迁移数据仓库不仅需要表、视图和 SQL 语句。

有关 Netezza 系统中当前用户和组的信息保存在系统目录视图 _v_users_v_groupusers 中。 使用 nzsql 实用工具或工具(例如 Netezza 性能、NzAdmin 或 Netezza 实用工具脚本)列出用户权限。 例如,在 nzsql 中使用 dpudpgu 命令显示用户或组及其权限。

使用或编辑实用工具脚本 nz_get_usersnz_get_user_groups 来检索所需格式的相同信息。

直接查询系统目录视图(如果用户对这些视图拥有 SELECT 访问权限)以获取系统中当前定义的用户和角色列表。 查看示例以列出用户、组,或用户及其关联的组:

-- List of users
SELECT USERNAME FROM _V_USER;

--List of groups
SELECT DISTINCT(GROUPNAME) FROM _V_USERGROUPS;

--List of users and their associated groups
SELECT USERNAME, GROUPNAME FROM _V_GROUPUSERS;

请修改示例 SELECT 语句,以通过在 SELECT 语句中包含相应的文本作为字面量来生成一个结果集,该结果集是一系列 CREATE USERCREATE GROUP 语句。

无法检索现有密码,因此需要实现一种方案以在 Azure Synapse 上分配新的初始密码。

权限

提示

基本数据库操作(例如 DML 和 DDL)具有等效的 Azure Synapse 权限。

在 Netezza 系统中,系统表 _t_usrobj_priv 保留用户和角色的访问权限。 查询这些表(如果用户对这些表拥有 SELECT 访问权限)以获取系统中当前定义的访问权限列表。

在 Netezza 中,单个权限表示为字段 privileges 或 g_privileges 中的单个位。 请参阅用户组权限中的示例 SQL 语句

获取包含 GRANT 命令的、用于复制当前用户和组特权的 DDL 脚本的最简单方法是使用相应的 Netezza 实用工具脚本:

--List of group privileges
nz_ddl_grant_group -usrobj dbname > output_file_dbname;

--List of user privileges
nz_ddl_grant_user -usrobj dbname > output_file_dbname;

可以修改输出文件以生成适用于 Azure Synapse 的脚本(一系列 GRANT 语句)。

Netezza 支持两类访问权限:管理员和对象。 有关 Netezza 访问权限及其在 Azure Synapse 中的等效项的列表,请参阅下表。

管理员特权 说明 Azure Synapse 等效项
备份 允许用户创建备份。 用户可以运行备份。 用户可以运行命令 nzbackup 1
[创建] 聚合 允许用户创建用户定义的聚合 (UDA)。 对现有 UDA 执行操作的权限由对象特权控制。 CREATE FUNCTION 3
[创建] 数据库 允许用户创建数据库。 对现有数据库执行操作的权限由对象特权控制。 CREATE DATABASE
[创建] 外部表 允许用户创建外部表。 对现有表执行操作的权限由对象特权控制。 CREATE TABLE
[创建] 函数 允许用户创建用户定义的函数 (UDF)。 对现有 UDF 执行操作的权限由对象特权控制。 CREATE FUNCTION
[创建] 组 允许用户创建组。 对现有组执行操作的权限由对象特权控制。 CREATE ROLE
[创建] 索引 仅供系统使用。 用户无法创建索引。 CREATE INDEX
[创建] 库 允许用户创建共享库。 对现有共享库执行操作的权限由对象特权控制。 1
[创建] 具体化视图 允许用户创建具体化视图。 CREATE VIEW
[创建] 过程 允许用户创建存储过程。 对现有存储过程执行操作的权限由对象特权控制。 CREATE PROCEDURE
[创建] 架构 允许用户创建架构。 对现有架构执行操作的权限由对象特权控制。 CREATE SCHEMA
[创建] 序列 允许用户创建数据库序列。 1
[创建] 同义词 允许用户创建同义词。 CREATE SYNONYM
[创建] 表 允许用户创建表。 对现有表执行操作的权限由对象特权控制。 CREATE TABLE
[创建] 临时表 允许用户创建临时表。 对现有表执行操作的权限由对象特权控制。 CREATE TABLE
[创建] 用户 允许用户创建用户。 对现有用户执行操作的权限由对象特权控制。 CREATE USER
[创建] 视图 允许用户创建视图。 对现有视图执行操作的权限由对象特权控制。 CREATE VIEW
[管理] 硬件 允许用户执行以下硬件相关操作:查看硬件状态、管理 SPU、管理拓扑和镜像,以及运行诊断测试。 用户可运行以下命令:nzhw 和 nzds。 4
[管理] 安全性 允许用户运行与以下高级安全选项相关的命令和操作,例如:管理和配置历史记录数据库、管理多级安全对象、为用户和组指定安全性、管理数据库密钥存储和用于审核数据数字签名的密钥和密钥存储。 4
[管理] 系统 允许用户执行以下管理操作:启动/停止/暂停/恢复系统、中止会话,查看分布图、系统统计信息和日志。 用户可使用以下命令:nzsystem、nzstate、nzstats 和 nzsession。 4
还原 允许用户还原系统。 用户可以运行 nzrestore 命令。 2
取消隔离 允许用户创建或者更改用户定义的函数或聚合,以便在非隔离模式下运行。 1
对象特权 - 中止 说明 Azure Synapse 等效项
中止 允许用户中止会话。 适用于组和用户。 KILL DATABASE CONNECTION
更改 允许用户修改对象属性。 适用于所有对象。 ALTER
删除 允许用户删除表行。 仅适用于表。 DELETE
丢弃 允许用户删除对象。 适用于所有对象类型。 DROP
执行 允许用户运行用户定义的函数、用户定义的聚合或存储过程。 EXECUTE
GenStats 允许用户生成有关表或数据库的统计信息。 用户可以运行 GENERATE STATISTICS 命令。 2
清理 允许用户回收已删除或过时的行占用的磁盘空间,通过组织键来重新组织表,或者迁移具有多个存储版本的表的数据。 2
插入 允许用户在表中插入行。 仅适用于表。 INSERT
列出 允许用户以列表或其他形式显示对象名称。 适用于所有对象。 列表
Select 允许用户选择(或查询)表中的行。 适用于表和视图。 SELECT
Truncate 允许用户从表中删除所有行。 仅适用于表。 TRUNCATE
更新 允许用户修改表行。 仅适用于表。 UPDATE

表格注释:

  1. 在 Azure Synapse 中没有与此函数直接等效的函数。

  2. 这些 Netezza 函数在 Azure Synapse 中自动处理。

  3. Azure Synaps CREATE FUNCTION 功能包含 Netezza 聚合功能。

  4. 这些功能由系统或通过 Azure Synapse 中的 Azure 门户自动管理。 请参阅下一部分的“操作注意事项”。

请参阅 Azure Synapse Analytics 安全权限

运行考虑事项

提示

有必要执行操作任务来使任何数据仓库保持高效运行。

本部分介绍如何在 Azure Synapse 中以最低的风险、在对用户造成最小影响的情况下实现典型的 Netezza 操作任务。

与所有数据仓库产品一样,一旦投入生产,就有必要执行持续的管理任务来使系统保持高效运行并提供监视和审核数据。 为将来的发展规划资源利用率和容量也属于这种任务类别,数据备份/还原同样如此。

Netezza 管理任务通常分为两种类别:

  • 系统管理,包括管理硬件、配置设置、系统状态、访问权限、磁盘空间、使用情况、升级和其他任务。

  • 数据库管理,包括管理用户数据库及其内容、加载数据、备份数据、还原数据以及控制对数据的访问和权限。

IBM Netezza 提供了多种方法或界面,可用于执行各种系统和数据库管理任务:

  • Netezza 命令(即 nz* 命令)安装在 Netezza 主机的 /nz/kit/bin 目录下。 对于许多 nz* 命令,必须能够登录到 Netezza 系统才能访问并运行这些命令。 在大多数情况下,用户以默认 nz 用户帐户身份登录,但你可以在系统上创建其他 Linux 用户帐户。 某些命令要求指定数据库用户帐户、密码和数据库,以确保你有权执行任务。

  • Netezza CLI 客户端工具包打包了可从 Windows 和 UNIX 客户端系统运行的 nz* 命令的子集。 客户端命令还可能要求指定数据库用户帐户、密码和数据库,以确保你拥有执行任务的数据库管理和对象权限。

  • SQL 命令支持在 SQL 数据库会话中执行管理任务和查询。 可以从 Netezza nzsql 命令解释器或通过 SQL API(例如 ODBC、JDBC 和 OLE DB 提供程序)运行 SQL 命令。 必须有一个数据库用户帐户,才能使用相应的权限对你执行的查询和任务运行 SQL 命令。

  • NzAdmin 工具是在 Windows 客户端工作站上运行的用于管理 Netezza 系统的 Netezza 界面。

虽然从概念上讲,针对不同数据仓库的管理和操作任务是相似的,但各自的实现可能有所不同。 一般来说,Azure Synapse 等基于云的新式产品往往采用更自动且“系统托管”的方法(与在 Netezza 等旧数据仓库中采用的更“手动”的方法相反)。

以下部分将 Netezza 和 Azure Synapse 的各种操作任务选项做了比较。

保养工作任务

提示

保养工作任务使生产仓库保持高效运行,并优化存储等资源的使用。

在大多数旧数据仓库环境中,常规的“保养工作”任务非常耗时。 通过删除更新或删除的旧版本的行,或重新组织数据、日志文件或索引块(Netezza 中的 GROOMVACUUM)来回收磁盘存储空间,以提高效率。 收集统计信息也可能是一项耗时的任务,在批量引入数据后需要执行该任务,以便为查询优化器提供最新数据来建立查询执行计划的基础。

Netezza 建议按如下所述收集统计信息:

  • 收集未填充的表的统计信息,以设置用于内部处理的区间直方图。 完成这第一次收集后,后续的统计信息收集速度更快。 确保在添加数据后重新收集统计信息。

  • 为新填充的表收集原型阶段统计信息。

  • 在对表或分区进行很大比例的更改(大约更改了 10% 的行)后,收集生产阶段统计信息。 如果存在大量的非唯一值(例如日期或时间戳),按 7% 的比例重新收集统计信息可能有利。

  • 在创建用户并将真实查询负载应用于数据库(最多大约三个月的查询)之后收集生产阶段统计信息。

  • 在 CPU 利用率较低的时段,在升级或迁移之后的最初几周收集统计信息。

Netezza 数据库在数据字典中包含许多日志表,这些表可以自动积累数据,也可以在启用某些功能后自动积累数据。 由于日志数据会不断增长,因此请清除旧信息以避免耗尽永久性空间。 可以使用一些选项来自动维护这些日志。

提示

在 Azure 中自动化和监视保养工作任务。

Azure Synapse 提供一个选项用于自动创建统计信息,以便可以根据需要使用它们。 手动、按计划或自动对索引和数据块执行碎片整理。 利用原生内置的 Azure 功能可以减少迁移练习中所需的工作量。

监视和审核

提示

Netezza Performance Portal 是监视 Netezza 系统及记录其日志的建议方法。

Netezza 提供 Netezza Performance Portal 来监视一个或多个 Netezza 系统的各个方面,包括活动、性能、队列和资源利用率。 Netezza 性能门户是一个交互式 GUI,允许用户深入到任何图表的低级别详细信息。

提示

Azure 门户提供了一个 UI 用于管理所有 Azure 数据和流程的监视与审核任务。

同样,Azure Synapse 在 Azure 门户中提供了丰富的监视体验用于提供数据仓库工作负载的见解。 建议使用 Azure 门户来监视数据仓库,因为它提供可配置的保持期、警报、建议,并为指标和日志提供可自定义的图表与仪表板。

在门户中,还可与 Operations Management Suite (OMS)、Azure Monitor(日志)等其他 Azure 监视服务集成。这样,不仅可以针对数据仓库,而且还能针对整个 Azure 分析平台提供一体式监视体验,构成一种集成式监视体验。

提示

低级别和系统范围的指标将自动记录在 Azure Synapse 中。

Azure Synapse 的资源利用率统计信息将自动记录在系统中。 每个查询的指标包括 CPU、内存、缓存、I/O 和临时工作区的使用率统计信息,以及失败的连接尝试等连接信息。

Azure Synapse 提供一组动态管理视图 (DMV)。 在主动排查和识别工作负荷的性能瓶颈时,这些视图非常有用。

有关详细信息,请参阅 Azure Synapse 操作和管理选项

高可用性 (HA) 和灾难恢复 (DR)

Netezza 设备是冗余的容错系统,Netezza 系统中有多种选项来支持高可用性和灾难恢复。

为灾难恢复添加 IBM Netezza 复制服务,通过跨本地和广域网络扩展冗余来提高容错能力。

IBM Netezza Replication Services 通过将主要系统(主要节点)上的数据与一个或多个目标节点(从属节点)上的数据同步来防止丢失数据。 这些节点构成了一个复制集。

高可用性 Linux(也称为 Linux-HA)提供从主要或活动 Netezza 主机到辅助或备用 Netezza 主机的故障转移功能。 Linux-HA 解决方案中的主群集管理守护程序称为“检测信号”。 检测信号监视主机并管理服务的通信和状态检查。

每个服务都是一个资源。

Netezza 将特定于 Netezza 的服务分组到 nps 资源组中。 当检测信号检测到表示主机有故障或 Netezza 用户失去服务的问题时,检测信号可以启动到备用主机的故障转移。

分布式复制块设备 (DRBD) 是一个块设备驱动程序,可以在主机之间镜像块设备(硬盘、分区和逻辑卷)的内容。 Netezza 仅在 /nz 和 /export/home 分区上使用 DRBD 复制。 将新数据写入主要主机上的 /nz 分区和 /export/home 分区时,DRBD 软件会自动对备用主机上的 /nz 和 /export/home 分区进行相同的更改。

提示

Azure Synapse 自动创建快照以确保快速恢复。

Azure Synapse 使用数据库快照来提供仓库的高可用性。 数据仓库快照会创建一个还原点,利用该还原点可将数据仓库恢复或复制到以前的状态。 由于 Azure Synapse 属于分布式系统,因此数据仓库快照包含 Azure 存储中的许多文件。 快照捕获数据仓库中存储的数据的增量更改。

提示

在更新密钥之前,使用用户定义的快照定义恢复点。

提示

Microsoft Azure 提供自动备份到单独的地理位置以实现 DR 的功能。

Azure Synapse 自动创建全天快照,并创建 7 天的可用还原点。 无法更改此保留期。 Azure Synapse 支持 8 小时恢复点目标 (RPO)。 可以在主要区域中从过去 7 天创建的任一快照还原数据仓库。

此外,支持用户定义的还原点,以便在进行大规模修改之前和之后手动触发快照来创建数据仓库的还原点。 此功能确保还原点保持逻辑一致性,可在发生任何工作负载中断或用户错误时提供额外的数据保护,以实现小于 8 小时的所需 RPO。

除了前面所述的快照外,Azure Synapse 还按标准方式每日异地备份到配对的数据中心一次。 异地还原的 RPO 为 24 小时。 可以将异地备份还原到支持 Azure Synapse 的任何其他区域中的服务器。 异地备份可确保主要区域中的还原点不可用时可以还原数据仓库。

工作负荷管理

提示

在生产数据仓库中,通常会并发运行具有不同资源使用特征的混合工作负载。

Netezza 整合了用于管理工作负载的各项功能:

方法 说明
计划程序规则 计划程序规则影响计划的安排。 每个计划程序规则指定一个条件或一组条件。 每当计划程序收到计划时,都会评估所有修改计划程序规则的行为并执行相应的操作。 每当计划程序选择一个要执行的计划时,都会评估所有限制性计划程序规则。 仅当执行该计划不会超过限制性计划程序规则施加的限制时,才会执行该计划。 否则,该计划将等待执行。 这样,你便能够以影响其他 WLM 技术(SQB、GRA 和 PQE)的方式对计划进行分类和操作。
有保证的资源分配 (GRA) 可将系统资源总量中的最小份额和最大百分比分配给称作资源组的实体。 计划程序确保每个资源组获得与其最小份额成比例的系统资源。 当其他资源组处于空闲状态时,资源组将获得更大份额的资源,但获得的资源永远不会超过其配置的最大百分比。 每个计划都与一个资源组相关联,该资源组的设置决定了要提供多少比例的可用系统资源来处理计划。
短查询偏差 (SQB) 资源(即计划槽、内存和优先队列)是为短查询保留的。 短查询是指成本估算值小于指定的最大值(默认为两秒)的查询。 使用 SQB 时,即使系统正忙于处理其他更长的查询,也可以运行短查询。
优先查询执行 (PQE) 根据配置的设置,系统将为每个查询分配一个优先级(关键、高、正常或低)。 优先级取决于与查询关联的用户、组或会话等因素。 然后,系统可以使用优先级作为分配资源的基础。

Azure Synapse 会自动记录资源利用率统计信息。 指标包括每个查询的 CPU、内存、缓存、I/O 和临时工作区的使用统计信息。 Azure Synapse 还会记录连接信息,例如连接尝试失败。

提示

低级别和系统范围的指标会自动记录在 Azure 中。

在 Azure Synapse 中,资源类是预先确定的资源限制,用于控制查询执行的计算资源和并发性。 资源类可以针对并发运行的查询数以及分配给每个查询的计算资源量设置限制,从而帮助管理工作负载。 我们需要在内存和并发性之间进行权衡。

Azure Synapse 支持以下基本工作负载管理概念:

  • 工作负载分类:可以将请求分配给工作负载组以设置重要性级别。

  • 工作负载重要性:可影响请求获取资源访问权限的顺序。 默认情况下,当资源可用时,查询以先进先出的方式从队列中释放。 工作负载重要性使较高优先级的查询能立即接收资源,无论队列长度情况如何。

  • 工作负载隔离:可以为工作负载组保留资源,为不同资源分配最大和最小使用量,限制一组请求可以使用的资源,并设置超时值以自动终止失控查询。

运行混合工作负荷会给繁忙的系统带来资源挑战。 成功的工作负载管理方案能够有效地管理资源,确保高效的资源利用,并将投资回报率 (ROI) 最大化。 工作负载分类工作负载重要性工作负载隔离可以更好地控制工作负载利用系统资源的方式。

工作负载管理指南介绍了用于分析工作负载、管理和监视工作负载重要性的技术](../../sql-data-warehouse/sql-data-warehouse-how-to-manage-and-monitor-workload-importance.md),以及将资源类转换为工作负载组的步骤。 使用 Azure 门户DMV 上的 T-SQL 查询来监视工作负载,确保有效利用适用的资源。 Azure Synapse 提供了一组动态管理视图 (DMV),用于监视工作负负载管理的各个方面。 在主动排查和识别工作负载的性能瓶颈时,这些视图非常有用。

此信息还可用于容量规划,以及确定附加用户或应用程序工作负载所需的资源。 这也适用于计划纵向扩展/缩减计算资源,以便对“高峰”工作负载(例如具有临时、激烈的活动突发)进行经济高效的支持,周围是不频繁的活动周期。

有关 Azure Synapse 中的工作负载管理的详细信息,请参阅使用资源类进行工作负载管理

缩放计算资源

提示

Azure 的一项主要优势是能够按需独立纵向扩展和缩减计算资源,以便以经济高效的方式处理高峰工作负载。

Azure Synapse 的体系结构对存储和计算进行了分隔,允许单独缩放每种资源。 因此,可以根据性能需求独立于数据存储缩放计算资源。 还可以暂停和恢复计算资源。 此体系结构的原生优势是,计算和存储的计费是分开的。 如果未使用数据仓库,你可以通过暂停计算来节省计算成本。

通过调整数据仓库的数据仓库单位设置,可以纵向扩展或缩减计算资源。 添加更多的数据仓库单位后,加载和查询性能会线性提高。

添加更多计算节点可增大计算能力,并可以利用更高的并行处理能力。 随着计算节点数量的增加,每个计算节点的分布区数量会减少,因此可为查询提供更高的计算能力和并发处理能力。 同样,减少数据仓库单位会减少计算节点数量,从而减少用于查询的计算资源。

后续步骤

若要详细了解可视化效果和报表,请参阅本系列教程的下一篇文章:Netezza 的可视化效果和报表迁移