华为云用户手册

  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的 IaaS、PaaS 和 SaaS 类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。 华为云租户的安全责任在于对使用的 IaaS、PaaS 和 SaaS 类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API 网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 访问控制 权限控制 购买实例之后,您可以使用 IAM 为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,通过IAM进行精细的权限管理。具体内容请参见权限管理。 VPC和子网 虚拟私有云(Virtual Private Cloud,VPC)为云数据库构建隔离的、用户自主配置和管理的虚拟网络环境,提升用户云上资源的安全性,简化用户的网络部署。您可以在VPC中定义安全组、VPN、IP地址段、带宽等网络特性,方便管理、配置内部网络,进行安全、快捷的网络变更。 子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全性。 具体内容请参见创建虚拟私有云和子网。 安全组 安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求并相互信任的弹性云服务器和云数据库RDS实例提供访问策略。为了保障数据库的安全性和稳定性,在使用RDS数据库实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。 具体请参见设置安全组规则。
  • 身份认证 用户访问云数据库RDS时支持对数据库用户进行身份验证,包含密码验证和IAM验证两种方式。 密码验证 您需要对数据库实例进行管理,使用数据管理服务(Data Admin Service)登录数据库时,需要对账号密码进行验证,验证成功后方可进行操作。 IAM验证 您可以使用 统一身份认证 服务(Identity and Access Management, IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。您创建的IAM用户,需要通过验证用户和密码才可以使用云数据库RDS资源。具体请参见创建IAM用户并登录。
  • 与其他服务的关系 云数据库 RDS for MariaDB与其他服务之间的关系,具体如下图所示。 图1 RDS for MariaDB与其他服务的关系示意图 表1 与其他服务的关系 相关服务 交互功能 弹性云服务器(E CS ) 通过弹性云服务器(Elastic Cloud Server,简称ECS)远程连接云数据库 RDS for MariaDB实例可以有效地降低应用响应时间、节省公网流量费用。 虚拟私有云(VPC) 对您的云数据库 RDS for MariaDB实例进行网络隔离和访问控制。 对象存储服务 (OBS) 存储云数据库 RDS for MariaDB实例的自动和手动备份数据。 云监控服务 (Cloud Eye) 云监控 服务是一个开放性的监控平台,帮助用户实时监测云数据库 RDS for MariaDB资源的动态。云监控服务提供多种告警方式以保证及时预警,为您的服务正常运行保驾护航。 云审计 服务( CTS ) 云审计服务(Cloud Trace Service,简称CTS),为用户提供云服务资源的操作记录,供您查询、审计和回溯使用。 数据库安全服务(DBSS) 数据库前端使用数据库安全服务(Database Security Service,简称DBSS),多种策略防止数据库被攻击,持久保护云上数据库安全。 分布式缓存服务(DCS) 分布式缓存服务(Distributed Cache Service,简称DCS)通过将热点数据放入缓存,加快用户端的访问速度,提升用户体验。 数据复制服务 (DRS) 使用数据复制服务,实现数据库平滑迁移上云。 数据管理服务(DAS) 使用数据管理服务,通过专业优质的可视化操作界面,提高数据管理工作的效率和安全。
  • 数据库实例状态 数据库实例状态是数据库实例的运行情况。用户可以使用管理控制台和API操作查看数据库实例状态。 表1 状态及说明 状态 说明 正常 数据库实例正常和可用。 异常 数据库实例不可用。 创建中 正在创建数据库实例。 克隆中 正在克隆数据库实例。 创建失败 数据库实例创建失败。 主备切换中 正在进行主实例和备实例的切换。 转主备中 单机实例正在转换为主备实例。 重启中 实例重启中。 端口修改中 正在修改数据库实例的数据库端口。 规格变更中 数据库实例的CPU和内存规格变更中。 扩容中 数据库实例的磁盘空间扩容中。 备份中 正在备份数据库实例。 恢复中 正在恢复备份到实例中。 恢复失败 实例恢复失败。 冻结 账户余额小于或等于0元,系统对该用户下的实例进行冻结。您需前往费用中心充值成功,欠款核销后,冻结的实例才会解冻。 存储空间满 实例的磁盘空间已满,此时不可进行数据库写入操作,您需要扩容磁盘使实例恢复到正常状态。 转包周期中 按需付费实例正在转为包周期实例。 已删除 数据库实例已被删除,对于已经删除的实例,将不会在实例列表中显示。 实例小版本升级中 实例正在升级中。 版本升级 实例版本正在升级中。 只读升主中 只读实例正在转换为独立的单机实例。 等待重启 数据库参数修改后,有些参数修改,需等待用户重启实例才能生效。 停止中 实例正在停止中。 已停止 数据库实例已停止,默认停止七天,对于已停止的实例,再次正常使用需用户手动开启或超过默认时间数据库自动开启。 开启中 已停止的实例正在开启中。 实例读写状态变更中 正在变更数据库实例的读写状态。 强制只读 实例状态被手动设置为只读状态,在该状态下不允许执行写入、更新等引起数据变动的操作。
  • 存储类型说明 云数据库 RDS for MariaDB支持SSD云盘/超高IO的存储类型,可以满足不同的业务场景,具体如下: SSD云盘/超高IO:均为云盘存储,弹性扩容,将数据存储于SSD云盘,即实现了计算与存储分离。最大吞吐量350 MB/s。 RDS for MariaDB称之为SSD云盘,在个别Region的存量实例下称为超高IO。 支持的IOPS取决于云硬盘(Elastic Volume Service,简称EVS)的IO性能,具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”中“超高IO”的内容。
  • RDS权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 RDS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问RDS时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对RDS服务,管理员能够控制IAM用户仅能对某一类数据库资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,RDS支持的API授权项请参见策略及授权项说明。 如表1所示,包括了RDS的所有系统权限。 表1 RDS系统策略 策略名称/系统角色 描述 类别 依赖关系 RDS FullAccess 关系型数据库服务所有权限。 系统策略 购买包周期实例需要配置授权项: bss:order:update bss:order:pay 如果要使用存储空间自动扩容功能,IAM子账号需要添加如下授权项: 创建自定义策略: iam:agencies:listAgencies iam:agencies:createAgency iam:permissions:listRolesForAgencyOnProject iam:permissions:grantRoleToGroupOnProject iam:roles:listRoles iam:roles:createRole 添加系统角色:Security Administrator 选择该用户所在的一个用户组。 单击“授权”。 添加Security Administrator系统角色。 创建 RAM 共享KMS密钥的包周期实例,依赖IAM权限点: iam:agencies:listAgencies iam:roles:listRoles iam:agencies:pass iam:agencies:createAgency iam:permissions:grantRoleToAgency 其中RDS FullAccess已包含iam:agencies:listAgencies、iam:roles:listRoles、iam:agencies:pass权限。 由于RDS是Region级服务,而IAM是Global级服务,将RDS FullAccess授权给项目时,需要再授权BSS ServiceAgencyReadPolicy(全局级服务);如果将RDS FullAccess授权给全部项目,可正常使用IAM权限。 BSS ServiceAgencyCreatePolicy包含其他操作权限:iam:agencies:createAgency、iam:permissions:grantRoleToAgency。 RDS ReadOnlyAccess 关系型数据库服务资源只读权限。 系统策略 无。 RDS ManageAccess 关系型数据库服务除删除操作外的DBA权限。 系统策略 无。 RDS Administrator 关系型数据库服务管理员。 系统角色 依赖Tenant Guest和Server Administrator角色,在同项目中勾选依赖的角色。 仅添加RDS Administrator权限后,如果要使用存储空间自动扩容功能,IAM子账号需要添加的授权项请参见表3中的存储空间自动扩容的说明。 表2列出了RDS常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 RDS FullAccess RDS ReadOnlyAccess RDS ManageAccess RDS Administrator 创建RDS实例 √ x √ √ 删除RDS实例 √ x x √ 查询RDS实例列表 √ √ √ √ 表3 常用操作与对应授权项 操作名称 授权项 备注 创建数据库实例 rds:instance:create rds:param:list 界面选择VPC、子网、安全组需要配置: vpc:vpcs:list vpc:vpcs:get vpc:subnets:get vpc:securityGroups:get vpc:securityGroupRules:get 创建加密实例需要在项目上配置KMS Administrator权限。 购买包周期实例需要配置: bss:order:update bss:order:pay 变更数据库实例的规格 rds:instance:modifySpec 无。 扩容数据库实例的磁盘空间 rds:instance:extendSpace 无。 重启数据库实例 rds:instance:restart 无。 删除数据库实例 rds:instance:delete 无。 查询数据库实例列表 rds:instance:list 无。 实例详情 rds:instance:list 实例详情界面展示VPC、子网、安全组,需要对应配置vpc:*:get和vpc:*:list。 修改数据库实例密码 rds:password:update 无。 修改端口 rds:instance:modifyPort 无。 修改内网IP rds:instance:modifyIp 界面查询剩余ip列表需要: vpc:subnets:get vpc:ports:get 修改实例名称 rds:instance:modify 无。 修改运维时间窗 rds:instance:modify 无。 手动主备倒换 rds:instance:switchover 无。 修改同步模式 rds:instance:modifySynchronizeModel 无。 切换策略 rds:instance:modifyStrategy 无。 修改实例安全组 rds:instance:modifySecurityGroup 无。 绑定/解绑公网IP rds:instance:modifyPublicAccess 界面列出公网ip需要: vpc:publicIps:get vpc:publicIps:list 设置回收站策略 rds:instance:setRecycleBin 无。 查询回收站 rds:instance:list 无。 开启、关闭SSL rds:instance:modifySSL 无。 开启、关闭事件定时器 rds:instance:modifyEvent 无。 申请内网 域名 rds:instance:createDns 无。 备机可用区迁移 rds:instance:create 备机迁移涉及租户子网下的IP操作,若为加密实例,需要在项目上配置KMS Administrator权限。 表级时间点恢复 rds:instance:tableRestore 无。 透明 数据加密 (Transparent Data Encryption,TDE)权限 rds:instance:tde 无。 修改主机权限 rds:instance:modifyHost 无。 查询对应账号下的主机 rds:instance:list 无。 获取参数模板列表 rds:param:list 无。 创建参数模板 rds:param:create 无。 修改参数模板参数 rds:param:modify 无。 应用参数模板 rds:param:apply 无。 修改指定实例的参数 rds:param:modify 无。 获取指定实例的参数模板 rds:param:list 无。 获取指定参数模板的参数 rds:param:list 无。 删除参数模板 rds:param:delete 无。 重置参数模板 rds:param:reset 无。 对比参数模板 rds:param:list 无。 保存参数模板 rds:param:save 无。 查询参数模板类型 rds:param:list 无。 设置自动备份策略 rds:instance:modifyBackupPolicy 无。 查询自动备份策略 rds:instance:list 无。 创建手动备份 rds:backup:create 无。 获取备份列表 rds:backup:list 无。 获取备份下载链接 rds:backup:download 无。 删除手动备份 rds:backup:delete 无。 复制备份 rds:backup:create 无。 查询可恢复时间段 rds:instance:list 无。 恢复到新实例 rds:instance:create 界面选择VPC、子网、安全组需要配置: vpc:vpcs:list vpc:vpcs:get vpc:subnets:get vpc:securityGroups:get vpc:securityGroupRules:get 恢复到已有或当前实例 rds:instance:restoreInPlace 无。 获取实例binlog清理策略 rds:binlog:get 无。 合并binlog文件 rds:binlog:merge 无。 下载binlog文件 rds:binlog:download 无。 删除binlog文件 rds:binlog:delete 无。 设置binlog清理策略 rds:binlog:setPolicy 无。 获取数据库备份文件列表 rds:backup:list 无。 获取历史数据库列表 rds:backup:list 无。 查询数据库错误日志 rds:log:list 无。 查询数据库慢日志 rds:log:list 无。 下载数据库错误日志 rds:log:download 无。 下载数据库慢日志 rds:log:download 无。 开启、关闭审计日志 rds:auditlog:operate 无。 获取审计日志列表 rds:auditlog:list 无。 查询审计日志策略 rds:auditlog:list 无。 生成审计日志下载链接 rds:auditlog:download 无。 获取主备切换日志 rds:log:list 无。 创建数据库 rds:database:create 无。 查询数据库列表 rds:database:list 无。 查询指定用户的已授权数据库 rds:database:list 无。 删除数据库 rds:database:drop 无。 创建数据库账户 rds:databaseUser:create 无。 查询数据库账户列表 rds:databaseUser:list 无。 查询指定数据库的已授权账户 rds:databaseUser:list 无。 删除数据库账户 rds:databaseUser:drop 无。 授权数据库账户 rds:databasePrivilege:grant 无。 解除数据库账户权限 rds:databasePrivilege:revoke 无。 任务中心列表 rds:task:list 无。 删除任务中心任务 rds:task:delete 无。 包周期下单 bss:order:update 购买包周期实例需要配置授权项: bss:order:pay 用户标签操作 rds:instance:modify 标签相关操作依赖tms:resourceTags:*权限。 存储空间自动扩容 rds:instance:extendSpace 如果选择自动扩容,IAM主账号不需要添加授权项,IAM子账号需要添加如下授权项: 创建自定义策略: iam:agencies:listAgencies iam:agencies:createAgency iam:permissions:listRolesForAgencyOnProject iam:permissions:grantRoleToGroupOnProject iam:roles:listRoles iam:roles:createRole 添加系统角色:Security Administrator 选择该用户所在的一个用户组。 单击“授权”。 添加Security Administrator系统角色。
  • 数据库实例类型 数据库实例是云数据库 RDS for MariaDB的最小管理单元。一个实例代表了一个独立运行的云数据库 RDS for MariaDB。您可以在一个实例中创建和管理多个数据库,并且可以使用与独立访问数据库实例相同的工具和应用进行访问。使用管理控制台或基于HTTPS请求的API(Application programming interface)可以方便地创建或者修改数据库实例。云数据库 RDS for MariaDB服务对运行实例数量没有限制,但每个数据库实例都有唯一的标识符。 实例可进行如下分类: 表1 实例类型 实例类型 简介 使用说明 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。 单机版出现故障后,无法保障及时恢复。 主备实例 采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。 RDS支持跨AZ高可用。选择主可用区和备可用区不在同一个可用区(AZ)。 备机提高了实例的可靠性,创建主机的过程中,会同步创建备机,备机创建成功后,用户不可见。 当主节点故障后,会自动发生主备切换,数据库客户端会发生短暂中断,数据库客户端需要支持重新连接。 关于主备之间的同步方式:RDS for MariaDB默认是半同步。 只读实例 采用单个物理节点架构或高可用架构。 当只读实例与主数据库之间复制异常后,单机版和高可用版只读都需要较长时间重建和恢复(取决于数据量)。当只读实例所在物理机故障后,备用只读实例自动顶替。购买只读实例时,注意表库名的大小写敏感要与主实例保持一致。 父主题: 实例说明
  • 实例 云数据库 RDS for MariaDB的最小管理单元是实例,一个实例代表了一个独立运行的数据库,实例ID是实例的唯一标识符。一个数据库实例可以包含多个由用户创建的数据库,并且可以使用多种工具和应用程序进行访问。每个数据库名具有唯一性。 购买实例时会有默认的管理员账号,使用该账号可以创建库、数据库用户并分配权限。关于root用户权限详见表6。管理员密码支持购买实例时设置或者购买后设置,如果忘记管理员密码,可以重置密码。 用户可以在界面创建及管理MariaDB引擎实例。实例的类型、规格、引擎、版本和状态,请参考实例说明。
  • 区域和可用区 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 高可靠性 双机热备 服务采用热备架构,故障秒级自动切换。 数据备份 每天自动备份数据,备份都是以压缩包的形式自动存储在(Object Storage Service,简称OBS)。备份文件保留732天,支持一键式恢复。用户可以设置自动备份的周期,还可以根据自身业务特点随时发起备份,选择备份周期、修改备份策略。 数据恢复 支持按备份集和指定时间点的恢复。在大多数场景下,用户可以将732天内任意一个时间点的数据恢复到新实例或已有实例上,数据验证无误后即可将数据迁回主实例,完成数据回溯。 RDS支持将删除的主备或者单机实例,加入回收站管理。您可以在回收站中重建实例恢复数据,可以恢复1~7天内删除的实例。 数据可靠 数据持久性高达99.9999999%,保证数据安全可靠,保护您的业务免受故障影响。
  • 高性能 性能优化 华为云多年的数据库研发、搭建和维护经验,结合数据库云化改造技术,大幅优化传统数据库,为您打造更高可用、更高可靠、更高安全、更高性能、便捷运维、弹性伸缩的华为云数据库服务。 优质的硬件基础 华为云关系型数据库使用的是华为经过多年的研究、创新和开发,通过多重考验的服务器硬件,为用户带来稳定的、高性能数据库服务。 SQL优化方案 华为云关系型数据库提供慢SQL检测,用户可以根据华为云关系型数据库服务提出的优化建议进行代码优化。 高速访问 关系型数据库可以配合同一地域的弹性云服务器一起使用,通过内网通信,缩短应用响应时间,同时节省公网流量费用。
  • 高安全性 网络隔离 通过虚拟私有云(Virtual Private Cloud,简称VPC)和网络安全组实现网络隔离。虚拟私有云允许租户通过配置虚拟私有云入站IP范围,来控制连接数据库的IP地址段。云数据库 RDS for MariaDB实例运行在租户独立的虚拟私有云内,可提升云数据库 RDS for MariaDB实例的安全性。您可以综合运用子网和安全组的配置,来完成云数据库RDS实例的隔离。 访问控制 通过主/子账号和安全组实现访问控制。创建云数据库 RDS for MariaDB实例时,云数据库RDS服务会为租户同步创建一个数据库主账号,根据需要创建数据库实例和数据库子账号,将数据库对象赋予数据库子账号,从而达到权限分离的目的。可以通过虚拟私有云对云数据库 RDS for MariaDB实例所在的安全组入站、出站规则进行限制,从而控制可以连接数据库的网络范围。 传输加密 通过TLS加密、SSL加密实现传输加密。使用从服务控制台上下载的CA根证书,并在连接数据库时提供该证书,对数据库服务端进行认证并达到加密传输的目的。 存储加密 云数据库 RDS for MariaDB服务支持对存储到数据库中的数据加密后存储。 数据删除 删除云数据库 RDS for MariaDB实例时,存储在数据库实例中的数据都会被删除。安全删除不仅包括数据库实例所挂载的磁盘,也包括自动备份数据的存储空间。删除的实例可以通过保留的手动备份恢复实例数据,也可以使用回收站保留期内的实例通过重建实例恢复数据。 安全防护 处于多层防火墙的保护之下,可以有力地抗击各种恶意攻击,保证数据安全,防御DDoS攻击、防SQL注入等。建议用户通过内网访问实例,可使实例免受DDoS攻击风险。
  • 易管理 创建使用 您可以通过华为云官网实时生成目标实例,云数据库RDS服务配合弹性云服务器一起使用,通过内网连接云数据库RDS可以有效地降低应用响应时间、节省公网流量费用。 弹性扩容 可以根据您的业务情况弹性伸缩所需的资源,按需开支,量身定做。配合云监控(Cloud Eye)监测数据库压力和数据存储量的变化,您可以灵活调整实例规格。 完全兼容 您无需再次学习,云数据库 RDS for MariaDB的操作方法与原生数据库引擎的完全相同,并兼容现有的程序和工具。使用数据复制服务(Data Replication Service,简称DRS),可用极低成本将数据迁移到华为云关系型数据库,享受华为云数据库为您带来的超值服务。 运维便捷 RDS for MariaDB的日常维护和管理,包括但不限于软硬件故障处理、数据库补丁更新等工作,保障云数据库 RDS for MariaDB运转正常。云数据库RDS提供专业数据库管理平台,重启、重置密码、参数修改、查看错误日志和慢日志、恢复数据等一键式功能。提供CPU利用率、IOPS、连接数、磁盘空间等实例信息实时监控及告警,让您随时随地了解实例动态。
  • RDS for MariaDB与自建数据库优势对比 表1 优势对比 项目 云数据库 RDS for MariaDB 自购服务器搭建数据库服务 服务可用性 请参见弹性云服务器的优势。 需要购买额外设备,自建主从,自建RAID。 数据可靠性 请参见什么是云硬盘。 需要购买额外设备,自建主从,自建RAID。 数据库备份 支持自动备份,手动备份,自定义备份存储周期。 需要购买设备,并自行搭建设置和后期维护。 软硬件投入 无需投入软硬件成本,按需购买,弹性伸缩。 数据库服务器成本相对较高。 系统托管 无需托管。 需要自购2U服务器设备,如需实现主从,购买两台服务器,并进行自建。 维护成本 无需运维。 需要投入大量人力成本,招聘专业的DBA进行维护。 部署扩容 弹性扩容,快速升级,按需开通。 需采购和原设备匹配的硬件,需托管机房的配合,需部署设备,整体周期较长。
  • 详细步骤 加密MySQL密码,供自定义脚本使用 登录MySQL服务器,输入cd /home/rdadmin/Agent/bin/ ,进入Agent目录。 执行/home/rdadmin/Agent/bin/agentcli encpwd,回显如下: Enter password: 输入MySQL密码,并按“Enter”,屏幕上就会打印出加密后的密码,将其复制到剪贴板中。 冻结解冻脚本中配置的明文密码长度不超过16位,否则配置后密码会被截断,应用一致性备份会失败。 执行cd /home/rdadmin/Agent/bin/thirdparty/ebk_user ,进入自定义脚本目录,然后执行vi mysql_freeze.sh,打开MySQL示例冻结脚本。 将下图所示的MYSQL_USER与MYSQL_PASSWORD修改为实际值,其中MYSQL_PASSWORD为步骤1的屏幕输出。 也可以使用sed命令来直接进行修改: sed -i 's/^MYSQL_PASSWORD=.*/MYSQL_PASSWORD="XXX"/' mysql_freeze.sh mysql_unfreeze.sh ,其中XXX为步骤1中打印出的密码。 此操作会同时修改冻结解冻脚本,所以无需再执行步骤3。 执行vi mysql_unfreeze.sh,打开MySQL示例解冻脚本,修改此脚本中的用户名和密码。 mysql_unfreeze.sh与mysql_freeze.sh脚本实现了基本的数据库冻结与解冻操作,如果您在冻结、解冻时有其它额外步骤需要执行,可以自行在其中进行修改。详细说明请参见 通过自定义脚本实现其它Linux应用的一致性备份。 MySQL的冻结是通过FLUSH TABLES WITH READ LOCK指令来实现的,该指令需在指定时间内(10s)获取全局读锁和刷新缓存到磁盘;如果数据库业务繁忙时执行,该指令可能执行超时,一致性备份失败,严重时可能会导致数据库上层业务操作失败等问题。 此指令不会触发bin log刷盘操作,如果开启了bin log,且sync_binlog参数不为1,则可能出现保存的备份映像中部分SQL操作未记录到bin log的情况,如果bin log也需要完整保护,请设置sync_binlog=1。
  • 配置作业上移策略 如需将数据入湖检测规则应用到数据集成(离线作业)的表敏感数据实时检测中,则需开启并配置作业上移策略。 在 DataArts Studio 控制台首页,选择对应工作空间的“数据安全”模块,进入数据安全页面。 单击左侧导航树中的“数据识别规则”,在数据识别规则页面中单击“数据入湖检测规则”,进入数据入湖检测规则页签。 在数据入湖检测规则页面中,作业上移策略配置参数说明请参见表1。 图1 配置数据入湖检测规则 表1 作业上移策略配置参数 参数名 参数说明 实时检测作业上移敏感信息 是否开启在数据集成(离线作业)进行表数据迁移时的表敏感数据实时检测,默认关闭。 敏感信息拦截策略 在数据集成(离线作业)作业中,如果识别到了敏感信息的拦截策略: 强拦截:只要检测到敏感信息,就无法保存作业。 弱拦截:对配置了加解密或脱敏处理的敏感字段不做拦截。 不拦截:无处理策略,不做任何拦截。 采样条数 在数据集成(离线作业)作业中,表示对表字段进行检测时采样前多少行,最多为100行。 同步 单击同步按钮,将策略同步至数据集成(离线作业)。此处的规则策略需要同步至数据集成(离线作业)中才会生效。
  • 约束与限制 数据集成(离线作业)的表数据迁移和数据安全敏感数据发现中的推荐识别场景下,仅支持 MRS Hive、DWS、 DLI 和RDS MySQL数据源。 数据集成(离线作业)的表敏感数据检测对表内容格式要求如下: 表字段数量至多为500。 对于字符串类型的表字段,仅会检测前1000个字符的敏感信息,超过1000字符部分会被截断。 识别规则仅支持规则类型为正则表达式的内置规则或自定义规则,识别规则至多可以配置50条。
  • 约束与限制 当前数据水印任务仅支持MRS Hive和MRS Doris数据源。 主键不支持嵌入水印。 数值整型字段嵌入水印可能会出现数据被修改的情况,请选择可以接受值发生改变的字段嵌入水印。 数据水印嵌入任务的数据集范围选择为增量时,需选择时间字段类型Timestamp、Date字段类型来确定增量范围。 MRS Doris数据源仅支持在字符串类型字段嵌入水印,包含Varchar、Text、String等,请确保待嵌入水印的表中包含字符串类型字段 MRS Doris数据水印任务除了需要MRS Doris数据源,还需要额外准备包含Hadoop、Spark和Yarn组件的MRS集群,用于运行数据水印任务。
  • 操作步骤 本小节以Oracle到DWS的实时同步为示例,介绍如何配置Migration实时集成作业。配置作业前请务必阅读使用前自检概览, 确认已做好所有准备工作。 参见新建实时集成作业创建一个实时集成作业并进入作业配置界面。 选择数据连接类型:源端选Oracle,目的端选DWS。 图1 选择数据连接类型 选择集成作业类型:同步类型默认为实时,同步场景包含整库场景。 图2 选择集成作业类型 同步场景相关介绍请参见同步场景。 配置网络资源:选择已创建的Oracle、DWS数据连接和已配置好网络连接的migration资源组。 图3 选择数据连接及migration资源组 无可选数据连接时,可单击“新建”跳转至管理中心数据连接界面,单击“创建数据连接”创建数据连接,详情请参见配置DataArts Studio数据连接参数进行配置。 无可选migration资源组时,可单击“新建”跳转至购买migration资源组页面创建migration资源组配置,详情请参见购买创建数据集成资源组增量包进行配置。 检测网络连通性:数据连接和migration资源组配置完成后需要测试整个迁移任务的网络连通性,可通过以下方式进行数据源和migration资源组之间的连通性测试。 单击展开“源端配置”触发连通性测试,会对整个迁移任务的连通性做校验。 单击源端和目的端数据源和migration资源组中的“测试”按钮进行检测。 网络连通性检测异常可先参考数据源和资源组网络不通如何排查?章节进行排查。 配置源端参数。 各同步场景下选择需要同步库表的方式请参考下表。 表5 选择需要同步的库表 同步场景 配置方式 整库 选择需要迁移的Oracle库表。 图4 选择库表 库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。 配置目的端参数。 源库表和目标匹配策略。 各同步场景下源端库表和目标端库表的匹配策略请参考下表。 表6 源库表和目标匹配策略 同步场景 配置方式 整库 Schema匹配策略。 与来源库同名:数据将同步至与来源Oracle库名相同的DWS Schema中。 自定义:数据将同步至自行指定的DWS Schema中。 表匹配策略。 与来源表同名:数据将同步至与来源Oracle表名相同的DWS表中。 自定义:数据将同步至自行指定的DWS表中。 图5 整库场景下源库表和目标匹配策略 说明: 自定义匹配策略时,支持用内置变量#{source_db_name}和#{source_table_name}标志来源的库名和表名,其中表匹配策略必须包含#{source_table_name}。 DWS参数配置。 其余DWS目的端参数说明请参考下表。 图6 DWS配置项 表7 DWS配置项 配置项 默认值 单位 配置说明 写入模式 UPSERT - UPSERT MODE:批量更新入库模式。 COPY MODE:DWS专有的高性能批量入库模式。 批写最大数据量 50000 条 单批次写入DWS数据的条数,可根据表数据大小和作业内存使用适当调整。 定时批写时间间隔 3 秒 支持配置每批次数据写入DWS的时间间隔。 高级配置 - - 支持通过参数配置部分高级功能,参数详情可参考DWS高级配置一览表。 表8 DWS高级配置一览表 参数名 参数类型 默认值 单位 参数说明 sink.buffer-flush.max-size int 512 MB 写入DWS时每批数据的最大字节数,可根据作业配置内存和数据大小适当调整。 sink.keyby.enable boolean true - 数据分流开关,在多并发场景下开启数据分流可将数据按规则分配给不同的工作进程写入目的端,可提高写入性能。 sink.keyby.mode string table - 数据分流模式,可选填写: pk:按数据主键值进行分流。 table:按表名进行分流。 说明: 多并发场景下,若开启DDL功能,只能按表名分流,否则可能导致数据不一致。 确保不会有DDL时,可以选择按主键分流,多并发场景下可提高写入性能。 sink.field.name.case-sensitive boolean true - 同步数据大小写敏感开关,开启后在同步数据时对库名、表名、字段名大小写均敏感。 sink.verify.column-number boolean false - 校验数据列数的开关,链路默认以同名映射方式同步数据,不检验是否所有列均同步。 开启本开关后,若源端与目的端列数不同将认为是数据不一致的场景,导致作业异常。 sink.server.timezone string 本地时区 - 连接目的端数据库时指定的session时区,支持时区标准写法,例如UTC+8等。 logical.delete.enabled boolean false - 逻辑删除开关。 logical.delete.column string logical_is_deleted - 逻辑删除标记列名称,默认为logical_is_deleted,支持用户自定义。 刷新源表和目标表映射,检查映射关系是否正确,同时可根据需求修改表属性、添加附加字段,并通过“自动建表”能力在目的端DWS数据库中建出相应的表。 图7 源表与目标表映射 附加字段编辑:单击操作列“附加字段编辑”可为目的端的DWS表中增加自定义字段,同时附加字段也会额外加入到DWS表的建表中。用户可以在已有的源表字段基础上添加多个附加字段,并自定义字段名、选择字段类型、填写字段值。 字段名称:目的端DWS表新增字段的名称。 字段类型:目的端DWS表新增字段的类型。 字段值:目的端DWS表新增字段的取值来源。 表9 附加字段取值方式 类型 示例 常量 支持数字、字母、中文、特殊字符。彩色表情字符可能导致作业提交失败,需谨慎使用。 自动建表:单击“自动建表”可按照已配置映射规则在目的端数据库自动建表,成功后表建立方式会显示为使用已有表。 图8 自动建表 Migration仅支持自动建表,不支持自动建库和模式,需用户自行在目的端手动建出库和模式后再使用本功能建表。 自动建表时对应的字段类型映射关系请参见字段映射关系章节。 配置DDL消息处理规则。 实时集成作业除了能够同步对数据的增删改等DML操作外,也支持对部分表结构变化(DDL)进行同步。针对支持的DDL操作,用户可根据实际需求配置为正常处理/忽略/出错。 正常处理:Migration识别到源端库表出现该DDL动作时,作业自动同步到目的端执行该DDL操作。 忽略:Migration识别到源端库表出现该DDL动作时,作业忽略该DDL,不同步到目的端表中。 出错:Migration识别到源端库表出现该DDL动作时,作业抛出异常。 图9 DDL配置 配置任务属性。 表10 任务配置参数说明 参数 说明 默认值 执行内存 作业执行分配内存,跟随处理器核数变化而自动变化。 8GB 处理器核数 范围:2-32。 每增加1处理核数,则自动增加4G执行内存和1并发数。 2 并发数 作业执行支持并发数。该参数无需配置,跟随处理器核数变化而自动变化。 1 自动重试 作业失败时是否开启自动重试。 否 最大重试次数 “自动重试”为是时显示该参数。 1 重试间隔时间 “自动重试”为是时显示该参数。 120秒 是否写入脏数据 选择是否记录脏数据,默认不记录脏数据,当脏数据过多时,会影响同步任务的整体同步速度。 否:默认为否,不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。 是:允许脏数据,即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时: 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。 若产生的脏数据超出阈值范围,同步任务将失败退出。 说明: 脏数据认定标准:脏数据是对业务没有意义,格式非法或者同步过程中出现问题的数据;单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如,源端是VARCHAR类型的数据写到INT类型的目标列中,则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时,配置同步过程中是否写入脏数据,配置脏数据条数(单个分片的最大错误记录数)保证任务运行,即当脏数据超过指定条数时,任务失败退出。 否 脏数据策略 “是否写入脏数据”为是时显示该参数,当前支持以下策略: 不归档:不对脏数据进行存储,仅记录到任务日志中。 归档到OBS:将脏数据存储到OBS中,并打印到任务日志中。 不归档 脏数据写入连接 “脏数据策略”选择归档到OBS时显示该参数。 脏数据要写入的连接,目前只支持写入到OBS连接。 - 脏数据目录 脏数据写入的OBS目录。 - 脏数据阈值 是否写入脏数据为是时显示该参数。 用户根据实际设置脏数据阈值。 说明: 脏数据阈值仅针对每个并发生效。比如阈值为100,并发为3,则该作业可容忍的脏数据条数最多为300。 输入-1表示不限制脏数据条数。 100 添加自定义属性 支持通过自定义属性修改部分作业参数及开启部分高级功能,详情可参见任务性能调优章节。 - 提交并运行任务。 作业配置完毕后,单击作业开发页面左上角“提交”,完成作业提交。 图10 提交作业 提交成功后,单击作业开发页面“启动”按钮,在弹出的启动配置对话框按照实际情况配置同步位点参数,单击“确定”启动作业。 图11 启动配置 表11 启动配置参数 参数 说明 同步模式 增量同步:从指定时间位点开始同步增量数据。 全量+增量:先同步全量数据,随后实时同步增量数据。 时间 增量同步需要设置该参数,指示增量同步起始的时间位点。 说明: 配置的位点时间早于Binlog日志最早时间点时,默认会以日志最新时间点开始消费。 监控作业。 通过单击作业开发页面导航栏的“前往监控”按钮,可前往作业监控页面查看运行情况、监控日志等信息,并配置对应的告警规则,详情请参见实时集成任务运维。 图12 前往监控
  • 注意事项 除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见下表。 表4 注意事项 类型名称 使用和操作限制 数据库限制 源端数据库中的库名、表名、字段名不能包含:.-以及非ASCII字符,建议尽量使用常规字符避免任务失败。 目的端数据库中的对象名需要满足约束:长度不超过63个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$。 使用限制 通用: 实时同步过程中,不支持IP、端口、账号、密码修改。 Oracle归档日志建议保留3天以上,否则可能因无法获取日志导致任务失败,特殊情况导可能致数据不一致或者丢失。 禁止对Oracle源库做resetlogs操作,否则会导致数据无法同步且任务无法恢复。 不支持修改源数据库Oracle用户名(SCHEMA名),包括11.2.0.2之前版本通过修改USER$字典表方式及11.2.0.2之后通过ALTER USER username RENAME TO new_username修改SCHEMA名称的场景。 Oracle为源端时,暂不支持迁移CLOB、NCLOB和BLOB类型。 Oracle为源端时,暂不支持Oracle RAC集群。 Oracle为源端时,支持连接单实例的oracle备库,不支持RAC集群备库,备库读取时只支持读取archive log,不支持读取standby log。连接备库时建议oracle 设置定时归档,减少数据同步时延。 网络带宽建议大于100M/s。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 支持DML:包括INSERT、UPDATE、DELETE。 支持的DDL:新增列。 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志,增量数据同步时无法获取变更信息,会存在数据不一致的风险。 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer,logminer限制了表名和列名在30个字符以内,详情请参见LogMiner分析日志相关介绍。 增量启动时,选择时间位点启动,请确保oracle数据库时区和数据库所在主机时区一致,才能保证增量位点的准确性。 增量同步不支持Oracle上的分布式事务(XA事务)和PARALLEL DML。 增量阶段不支持Oracle字符集扩展的字符,标准字符集无法解析Oracle自定义扩展字符。 增量同步不支持同步或迁移触发器,需要关闭目标Oracle的触发器。 增量同步不支持同步或迁移存在外键约束的数据。 增量同步不支持同步或迁移使用Oracle Data Pump向源库导入的数据。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。 其他限制 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源数据库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 Migration自动建表时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为DWS目标库为字节长)。 Oracle为源端时全量+增量或增量作业,如果需要同步PDB库中的表,Oracle连接中需要填写CDB库的用户名和密码,不能为PDB用户名和密码,因为Oracle日志统一在存储在CDB库中,同时Oracle logminer只能运行在CDB库中。 DDL删除表时需执行“drop table test_table_name purage命令”。 Oracle数据库默认删除表是一个高危操作,执行"drop table test_table_name"命令时, Oracle会将该命令转换为“rename table test_table_name as xxxxx”, 即将该表重新命名为Oracle临时表空间中的一张待处理表,原表实际并未删除,migration默认直接忽略该语法;Oracle删除表语句"drop table test_table_name purage"会彻底删除表,migration会自动识别删除表并下发给下游。 全量和增量同步不支持隐藏列(UNUESD, INVISIBIE)。 当使用PDB数据库同步时,由于Oracle LogMiner组件的限制,增量同步时必须打开全部PDB。 不支持无主键表。 不支持DCL操作。 不支持同步或迁移连续的RENAME TABLE操作,否则可能会导致任务失败。 不支持同步或迁移全局临时表(任务正常运行)。 不支持同步或迁移含有默认值函数的表,否则会导致数据不一致。 不支持同步或迁移默认值中含有表达式的表。 不支持同步或迁移外部表。 不支持同步或迁移计算列、加密列。 不支持同步或迁移虚拟私有数据库(Virtual Private Database, VPD)。 不支持同步或迁移dbms_scheduler和dbms_job创建的job。 不支持同步或迁移Schema名称的变更操作。 不支持同步或迁移嵌套表,否则会导致任务报错。 不支持同步或迁移物化视图(Materialized View)。 不支持同步或迁移包含关键字或者特殊字符的属性名的DDL操作。 不支持ROWID变更操作(例如split partition、table move、table shrink、move partition key),否则可能会导致数据不一致或任务失败。 不支持Secure Sockets Layer(SSL)加密传输模式。 不支持Oracle Label Security模式。
  • 支持的同步对象范围 在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考下表。 表3 同步对象范围 类型名称 使用须知 同步对象范围 支持同步的DML:包括INSERT、UPDATE、DELETE。 支持同步的DDL:新增列。 仅支持同步有主键表。 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。
  • 数据库账号权限要求 在使用Migration进行同步时,源端和目的端所使用的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考下表进行赋权。 表2 数据库账号权限 类型名称 权限要求 源数据库连接账号 Oracle 库需要开启归档日志,同时需表查询权限和日志解析权限,开通对应权限详情请参考Oracle数据源如何开通归档日志、查询权限和日志解析权限?。 目标数据库连接账号 目标数据库的每张表必须具有如下权限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE。
  • 操作步骤 本小节以Oracle到MRS Hudi的实时同步为示例,介绍如何配置Migration实时集成作业。配置作业前请务必阅读使用前自检概览, 确认已做好所有准备工作。 参见新建实时集成作业创建一个实时集成作业并进入作业配置界面。 选择数据连接类型:源端选Oracle,目的端选Hudi。 图2 选择数据连接类型 选择集成作业类型:同步类型默认为实时,同步场景包含整库场景。 图3 选择集成作业类型 同步场景相关介绍请参见同步场景。 配置网络资源:选择已创建的Oracle、MRS Hudi数据连接和已配置好网络连接的migration资源组。 图4 选择数据连接及migration资源组 无可选数据连接时,可单击“新建”跳转至管理中心数据连接界面,单击“创建数据连接”创建数据连接,详情请参见配置DataArts Studio数据连接参数进行配置。 无可选migration资源组时,可单击“新建”跳转至购买migration资源组页面创建migration资源组配置,详情请参见购买创建数据集成资源组增量包进行配置。 检测网络连通性:数据连接和migration资源组配置完成后需要测试整个迁移任务的网络连通性,可通过以下方式进行数据源和migration资源组之间的连通性测试。 单击展开“源端配置”触发连通性测试,会对整个迁移任务的连通性做校验。 单击源端和目的端数据源和migration资源组中的“测试”按钮进行检测。 网络连通性检测异常可先参考数据源和资源组网络不通如何排查?章节进行排查。 配置源端参数。 选择需要迁移的Oracle库表。 图5 选择库表 库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。 配置目的端参数。 源库表和目标匹配策略。 各同步场景下源端库表和目标端库表的匹配策略请参考下表。 表5 源库表和目标匹配策略 同步场景 配置方式 整库 库匹配策略。 与来源库同名:数据将同步至与来源Oracle 库名相同的Hudi库中。 自定义:数据将同步至自行指定的Hudi库中。 表匹配策略。 与来源表同名:数据将同步至与来源Oracle 库名相同的Hudi表中。 自定义:数据将同步至自行指定的Hudi表中。 图6 整库场景下源库表和目标匹配策略 说明: 自定义匹配策略时,支持用内置变量#{source_db_name}和#{source_table_name}标志来源的库名和表名,其中表匹配策略必须包含#{source_table_name}。 Hudi参数配置。 其余Hudi目的端参数说明请参考下表。 图7 Hudi目的端配置项 表6 Hudi目的端配置项 配置项 默认值 单位 配置说明 数据存储路径 - - Hudi自动建表时的warehouse路径,每张表会在warehouse路径下创建子目录。支持填写HDFS和OBS路径,路径格式参考: OBS路径:obs://bucket/warehouse。 HDFS路径:/tmp/warehouse。 Hudi表属性全局配置 - - 支持通过参数配置部分高级功能,参数详情可参考Hudi高级配置一览表。 表7 Hudi高级配置一览表 参数名 参数类型 默认值 单位 参数说明 index.type string BLOOM - Hudi表索引类型。 支持BLOOM和BUCKET索引,数据量较大场景下强烈建议使用BUCKET索引性能更好。 hoodie.bucket.index.num.buckets int 256 个 Hudi表单分区下Bucket桶数。 说明: 使用Hudi BUCKET表时需要设置Bucket桶数,桶数设置关系到表的性能,需要格外引起注意。 非分区表桶数 = MAX(单表数据量大小(G)/2G*2,再向上取整,4)。 分区表桶数 = MAX(单分区数据量大小(G)/2G*2,再后向上取整,1)。 其中,要注意的是: 需要使用的是表的总数据大小,而不是压缩以后的文件大小。 桶的设置以偶数最佳,非分区表最小桶数请设置4个,分区表最小桶数请设置1个。 changelog.enabled boolean false - Hudi changelog功能开关,开启后Migration作业可输出DELETE和UPDATE BEFORE数据。 logical.delete.enabled boolean true - 逻辑删除开关,changelog开启时必须关闭逻辑删除。 hoodie.write.liststatus.optimized boolean true - 写log文件时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 hoodie.index.liststatus.optimized boolean false - 定位数据时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 compaction.async.enabled boolean true - 异步compaction开关。compaction操作一定程度会影响实时任务的写入性能,如果用户使用外置的compaction操作对hudi进行compaction,可以考虑设置为false关闭实时处理集成作业的compaction操作。 compaction.schedule.enabled boolean true - 生成compaction计划的开关。compaction计划必须由本服务生成,计划的执行可以交给Spark。 compaction.delta_commits int 5 次 生成compaction request的频率。compaction request生成频率降低可以使得compaction频率降低从而提升作业性能。如果hudi增量数据较小。可以考虑增大该值。 说明: 例如配置为40,即每40次commit生成一个compaction request,因为Migration每分钟生成1个commit,那么每个compaction request将间隔40分钟。 clean.async.enabled boolean true - 做历史版本数据文件清理的开关。 clean.retain_commits int 30 次 要保留的commit数。这些commit关联的数据文件版本将被保留 num_of_commits * time_between_commits 这么长的时间,建议配置为2倍的compaction.delta_commits。 说明: 例如配置为80,因为Migration每分钟生成1个commit,那么超过80分钟后如果有旧版本数据文件 ,则会生成clean request,且在执行clean时保留最近80个commit。 hoodie.archive.automatic boolean true - Hudi commit文件老化开关。 archive.min_commits int 40 次 将旧版commit归档到日志文件中时要保留不归档的最小commit数。建议配置成clean.retain_commits + 1。 说明: 例如配置成81,那么在触发归档动作时,将会保留最近81次commit文件。 archive.max_commits int 50 次 触发归档动作的commit数。建议配置成archive.min_commits + 20。 说明: 例如配置成101,那么将在生成101个commit文件后触发归档commit文件动作。 为了达到Migration作业性能最优,建议使用Hudi Bucket索引的MOR表,并根据实际数据量配置Bucket桶数。 为了保证Migration作业的稳定性,建议将Hudi Compaction单独拆成Spark作业交由MRS执行,在Migration任务里仅开启生成compaction计划,具体可以参考如何配置Hudi Compaction的Spark周期任务?。 刷新源表和目标表映射,检查映射关系是否正确,同时可根据需求修改表属性、添加附加字段,并通过“自动建表”能力在目的端Hudi数据库中建出相应的表。 图8 源表与目标表映射 同步主键 Hudi表必须设置“同步主键”,在源端为非主键表时,表映射会失败。 表属性编辑 单击操作列“表属性编辑”可配置Hudi表属性,包含表类型,分区类型及表自定义属性。 图9 Hudi表属性配置 表类型:Hudi的表类型,可选MERGE_ON_READ和COPY_ON_WRITE。 分区类型:Hudi表分区类型,可选无分区、时间分区、自定义分区。 其中时间分区需要用户指定一个源端字段名,选择一个时间转换格式。 比如时间分区用户指定一个源端字段名src_col_1,选择一个时间转换格式,日(yyyyMMdd)、月(yyyyMM)、年(yyyy),自动建表时会在Hudi表默认创建一个cdc_partition_key的字段,系统会根据配置的时间转换格式将源端字段(src_col_1)的值格式化后写入cdc_partition_key中。 自定义分区不支持timestamp类型的字段,使用timestamp类型的字段会导致作业失败。 表自定义属性:支持通过参数配置单表的部分高级功能,参数详情可参考Hudi高级配置一览表。 附加字段编辑:单击操作列“附加字段编辑”可为目的端的Hudi表中增加自定义字段,同时附加字段也会额外加入到Hudi表的建表中。用户可以在已有的源表字段基础上添加多个附加字段,并自定义字段名、选择字段类型、填写字段值。 字段名称:目的端Hudi表新增字段的名称。 字段类型:目的端Hudi表新增字段的类型。 字段值:目的端Hudi表新增字段的取值来源。 表8 附加字段取值方式 类型 示例 常量 支持数字、字母、中文、特殊字符。彩色表情字符可能导致作业提交失败,需谨慎使用。 内置变量 源端host ip地址:source.host。 源端schema名称:source.schema。 源端table名称:source.table。 目的端schema名称:target.schema。 目的端table名称:target.table。 源表字段 源表中的任一字段。 配置附加字段的取值来源于源表字段时,请注意任务运行过程中不能修改对应源表字段的名称,否则可能导致作业异常。 udf方法 substring(#col, pos[, len]): 截取源端col列的子串, 范围在[pos, pos+len)。 date_format(#col, time_format[, src_tz, dst_tz]): 将源端col列按time_format格式化, 可选转换时区。 now([tz]): 获取指定时区的当前时间。 if(cond_exp, str1, str2): 满足条件表达式cond_exp时返回str1, 否则返回str2。 concat(#col[, #str, ...]): 拼接多个参数, 可为源端列或字符串。 from_unixtime(#col[, time_format]): 将unix时间戳按time_format格式化。 unix_timestamp(#col[, precision, time_format]): 将时间转成unix时间戳,可显式定义时间格式及转换后精度,time_format时间格式要与源端保持一致。 自动建表:单击“自动建表”可按照已配置映射规则在目的端数据库自动建表,成功后表建立方式会显示为使用已有表。 图10 自动建表 Migration仅支持自动建表,不支持自动建库和模式,需用户自行在目的端手动建出库和模式后再使用本功能建表。 自动建表时对应的字段类型映射关系请参见字段映射关系章节。 自动建出的Hudi表会带有3个审计字段,分别是cdc_last_update_date、logical_is_deleted、_hoodie_event_time,并会以_hoodie_event_time作为Hudi表的预聚合键。 配置任务属性。 表9 任务配置参数说明 参数 说明 默认值 执行内存 作业执行分配内存,跟随处理器核数变化而自动变化。 8GB 处理器核数 范围:2-32。 每增加1处理核数,则自动增加4G执行内存和1并发数。 2 并发数 作业执行支持并发数。该参数无需配置,跟随处理器核数变化而自动变化。 1 自动重试 作业失败时是否开启自动重试。 否 最大重试次数 “自动重试”为是时显示该参数。 1 重试间隔时间 “自动重试”为是时显示该参数。 120秒 是否写入脏数据 选择是否记录脏数据,默认不记录脏数据,当脏数据过多时,会影响同步任务的整体同步速度。 否:默认为否,不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。 是:允许脏数据,即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时: 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。 若产生的脏数据超出阈值范围,同步任务将失败退出。 说明: 脏数据认定标准:脏数据是对业务没有意义,格式非法或者同步过程中出现问题的数据;单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如,源端是VARCHAR类型的数据写到INT类型的目标列中,则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时,配置同步过程中是否写入脏数据,配置脏数据条数(单个分片的最大错误记录数)保证任务运行,即当脏数据超过指定条数时,任务失败退出。 否 脏数据策略 “是否写入脏数据”为是时显示该参数,当前支持以下策略: 不归档:不对脏数据进行存储,仅记录到任务日志中。 归档到OBS:将脏数据存储到OBS中,并打印到任务日志中。 不归档 脏数据写入连接 “脏数据策略”选择归档到OBS时显示该参数。 脏数据要写入的连接,目前只支持写入到OBS连接。 - 脏数据目录 脏数据写入的OBS目录。 - 脏数据阈值 是否写入脏数据为是时显示该参数。 用户根据实际设置脏数据阈值。 说明: 脏数据阈值仅针对每个并发生效。比如阈值为100,并发为3,则该作业可容忍的脏数据条数最多为300。 输入-1表示不限制脏数据条数。 100 添加自定义属性 支持通过自定义属性修改部分作业参数及开启部分高级功能,详情可参见任务性能调优章节。 - 提交并运行任务。 作业配置完毕后,单击作业开发页面左上角“提交”,完成作业提交。 图11 提交作业 提交成功后,单击作业开发页面“启动”按钮,在弹出的启动配置对话框按照实际情况配置同步位点参数,单击“确定”启动作业。 图12 启动配置 表10 启动配置参数 参数 说明 同步模式 增量同步:从指定时间位点开始同步增量数据。 全量+增量:先同步全量数据,随后实时同步增量数据。 时间 增量同步需要设置该参数,指示增量同步起始的时间位点。 说明: 配置的位点时间早于CDC日志最早时间点时,默认会以日志最新时间点开始消费。 监控作业。 通过单击作业开发页面导航栏的“前往监控”按钮,可前往作业监控页面查看运行情况、监控日志等信息,并配置对应的告警规则,详情请参见实时集成任务运维。 图13 前往监控
  • 注意事项 除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见下表。 表4 注意事项 类型名称 使用和操作限制 数据库限制 源端数据库中的库名、表名、字段名不能包含:.-以及非ASCII字符,建议尽量使用常规字符避免任务失败。 目标数据库中的库名、表名、字段名仅支持数字、字母和下划线,且字段名必须以字母或下划线开头,建议尽量使用常规字符避免任务失败。 使用限制 通用: 实时同步过程中,不支持IP、端口、账号、密码修改。 Oracle归档日志建议保留3天以上,否则可能因无法获取日志导致任务失败,特殊情况导可能致数据不一致或者丢失。 禁止对Oracle源库做resetlogs操作,否则会导致数据无法同步且任务无法恢复。 不支持修改源数据库Oracle用户名(SCHEMA名),包括11.2.0.2之前版本通过修改USER$字典表方式及11.2.0.2之后通过ALTER USER username RENAME TO new_username修改SCHEMA名称的场景。 Oracle为源端时,暂不支持迁移CLOB、NCLOB和BLOB类型。 Oracle为源端时,暂不支持Oracle RAC集群。 Oracle为源端时,支持连接单实例的oracle备库,不支持RAC集群备库,备库读取时只支持读取archive log,不支持读取standby log。连接备库时建议oracle 设置定时归档,减少数据同步时延。 网络带宽建议大于100M/s。 Hudi表使用Bucket索引的场景下不允许更新分区键,否则可能产生重复数据。 Hudi表使用Bucket索引的场景下主键仅保证单分区内唯一。 本链路所使用的Hudi表需带有3个审计字段:cdc_last_update_date、logical_is_deleted、_hoodie_event_time,并会以_hoodie_event_time作为Hudi表的预聚合键。因此,若使用已存在的表,也需要携带这3个审计字段,否则可能导致任务异常。 cdc_last_update_date:Migration任务处理CDC数据的时间。 logical_is_deleted:逻辑删除标志。 _hoodie_event_time:数据在Oracle CDC中的时间戳。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 支持DML:包括INSERT、UPDATE、DELETE。 支持的DDL:新增列。 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志,增量数据同步时无法获取变更信息,会存在数据不一致的风险。 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer,logminer限制了表名和列名在30个字符以内,详情请参见LogMiner分析日志相关介绍。 增量启动时,选择时间位点启动,请确保oracle数据库时区和数据库所在主机时区一致,才能保证增量位点的准确性。 增量同步不支持Oracle上的分布式事务(XA事务)和PARALLEL DML。 增量阶段不支持Oracle字符集扩展的字符,标准字符集无法解析Oracle自定义扩展字符。 增量同步不支持同步或迁移触发器,需要关闭目标Oracle的触发器。 增量同步不支持同步或迁移存在外键约束的数据。 增量同步不支持同步或迁移使用Oracle Data Pump向源库导入的数据。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。 其他限制 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列若是非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源数据库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 Oracle中表结构长度(所有列长字节数之和,char、varchar2等类型字节长度和编码有关)超过65535时,可能导致同步失败。 当使用PDB数据库同步时,由于Oracle LogMiner组件的限制,增量同步时必须打开全部PDB。 Oralce 12.2及以上版本,由于Oracle LogMiner组件的限制,增量同步不支持表名或列名超过30个字符。 Oracle为源端时全量+增量或增量作业,如果需要同步PDB库中的表,Oracle连接中需要填写CDB库的用户名和密码,不能为PDB用户名和密码,因为Oracle日志统一在存储在CDB库中,同时Oracle logminer只能运行在CDB库中。 DDL删除表时需执行“drop table test_table_name purage命令”。 Oracle数据库默认删除表是一个高危操作,执行"drop table test_table_name"命令时, Oracle会将该命令转换为“rename table test_table_name as xxxxx”, 即将该表重新命名为Oracle临时表空间中的一张待处理表,原表实际并未删除,migration默认直接忽略该语法;Oracle删除表语句"drop table test_table_name purage"会彻底删除表,migration会自动识别删除表并下发给下游。 全量和增量同步不支持隐藏列(UNUESD, INVISIBIE)。 不支持无主键表。 不支持DCL操作。 不支持同步或迁移连续的RENAME TABLE操作,否则可能会导致任务失败。 不支持同步或迁移全局临时表(任务正常运行)。 不支持同步或迁移含有默认值函数的表,否则会导致数据不一致。 不支持同步或迁移默认值中含有表达式的表。 不支持同步或迁移外部表。 不支持同步或迁移计算列、加密列。 不支持同步或迁移虚拟私有数据库(Virtual Private Database, VPD)。 不支持同步或迁移dbms_scheduler和dbms_job创建的job。 不支持同步或迁移Schema名称的变更操作。 不支持同步或迁移嵌套表,否则会导致任务报错。 不支持同步或迁移物化视图(Materialized View)。 不支持同步或迁移包含关键字或者特殊字符的属性名的DDL操作。 不支持ROWID变更操作(例如split partition、table move、table shrink、move partition key),否则可能会导致数据不一致或任务失败。 不支持Secure Sockets Layer(SSL)加密传输模式。 不支持Oracle Label Security模式。
  • 数据库账号权限要求 在使用Migration进行同步时,源端和目的端所使用的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考下表进行赋权。 表2 数据库账号权限 类型名称 权限要求 源数据库连接账号 Oracle 库需要开启归档日志,同时需表查询权限和日志解析权限,开通对应权限详情请参考Oracle数据源如何开通归档日志、查询权限和日志解析权限?。 目标数据库连接账号 MRS用户需要拥有Hadoop和Hive组件的读写权限,建议参照图1所示角色及用户组配置MRS用户。 图1 MRS Hudi最小化权限 具体MRS集群角色权限管理请参考《MRS集群用户权限模型》。
  • 支持的同步对象范围 在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考下表。 表3 同步对象范围 类型名称 使用须知 同步对象范围 支持同步的DML:包括INSERT、UPDATE、DELETE。 支持同步的DDL:新增列。 仅支持同步主键表。 不支持视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束、唯一索引、外键索引、Check约束的同步。 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。
  • 支持的同步对象范围 在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考下表。 表3 同步对象范围 类型名称 使用须知 同步对象范围 支持同步的DML:包括INSERT、UPDATE、DELETE。 支持同步的DDL:新增列。 仅支持同步有主键表。 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。
  • 注意事项 除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见下表。 表4 注意事项 类型名称 使用和操作限制 数据库限制 源端数据库中的库名、表名、字段名不能包含:.-以及非ASCII字符,建议尽量使用常规字符避免任务失败。 使用限制 通用: 实时同步过程中,不支持IP、端口、账号、密码修改。 Oracle归档日志建议保留3天以上。 禁止对Oracle源库做resetlogs操作,否则会导致数据无法同步且任务无法恢复。 不支持修改源数据库Oracle用户名(SCHEMA名),包括11.2.0.2之前版本通过修改USER$字典表方式及11.2.0.2之后通过ALTER USER username RENAME TO new_username修改SCHEMA名称的场景。 Oracle为源端时,暂不支持迁移CLOB、NCLOB和BLOB类型。 Oracle为源端时,暂不支持Oracle RAC集群。 Oracle为源端时,支持连接单实例的oracle备库,不支持RAC集群备库,备库读取时只支持读取archive log,不支持读取standby log。连接备库时建议oracle 设置定时归档,减少数据同步时延。 网络带宽建议大于100M/s。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 支持DML:包括INSERT、UPDATE、DELETE。 支持的DDL:新增列。 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志,增量数据同步时无法获取变更信息,会存在数据不一致的风险。 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer,logminer限制了表名和列名在30个字符以内,详情请参见LogMiner分析日志相关介绍。 增量启动时,选择时间位点启动,请确保oracle数据库时区和数据库所在主机时区一致,才能保证增量位点的准确性。 增量同步不支持Oracle上的分布式事务(XA事务)和PARALLEL DML。 增量阶段不支持Oracle字符集扩展的字符,标准字符集无法解析Oracle自定义扩展字符。 增量同步不支持同步或迁移触发器,需要关闭目标Oracle的触发器。 增量同步不支持同步或迁移存在外键约束的数据。 增量同步不支持同步或迁移使用Oracle Data Pump向源库导入的数据。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。 其他限制 Migration自动建表时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为DWS目标库为字节长)。 Oracle为源端时全量+增量或增量作业,如果需要同步PDB库中的表,Oracle连接中需要填写CDB库的用户名和密码,不能为PDB用户名和密码,因为Oracle日志统一在存储在CDB库中,同时Oracle logminer只能运行在CDB库中。 DDL删除表时需执行“drop table test_table_name purage命令”。 Oracle数据库默认删除表是一个高危操作,执行"drop table test_table_name"命令时, Oracle会将该命令转换为“rename table test_table_name as xxxxx”, 即将该表重新命名为Oracle临时表空间中的一张待处理表,原表实际并未删除,migration默认直接忽略该语法;Oracle删除表语句"drop table test_table_name purage"会彻底删除表,migration会自动识别删除表并下发给下游。 全量和增量同步不支持隐藏列(UNUESD, INVISIBIE)。 当使用PDB数据库同步时,由于Oracle LogMiner组件的限制,增量同步时必须打开全部PDB。 不支持无主键表。 不支持DCL操作。 不支持同步或迁移连续的RENAME TABLE操作,否则可能会导致任务失败。 不支持同步或迁移全局临时表(任务正常运行)。 不支持同步或迁移含有默认值函数的表,否则会导致数据不一致。 不支持同步或迁移默认值中含有表达式的表。 不支持同步或迁移外部表。 不支持同步或迁移计算列、加密列。 不支持同步或迁移虚拟私有数据库(Virtual Private Database, VPD)。 不支持同步或迁移dbms_scheduler和dbms_job创建的job。 不支持同步或迁移Schema名称的变更操作。 不支持同步或迁移嵌套表,否则会导致任务报错。 不支持同步或迁移物化视图(Materialized View)。 不支持同步或迁移包含关键字或者特殊字符的属性名的DDL操作。 不支持ROWID变更操作(例如split partition、table move、table shrink、move partition key),否则可能会导致数据不一致或任务失败。 不支持Secure Sockets Layer(SSL)加密传输模式。 不支持Oracle Label Security模式。
  • 数据库账号权限要求 在使用Migration进行同步时,源端和目的端所使用的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考下表进行赋权。 表2 数据库账号权限 类型名称 权限要求 源数据库连接账号 Oracle 库需要开启归档日志,同时需表查询权限和日志解析权限,开通对应权限详情请参考Oracle数据源如何开通归档日志、查询权限和日志解析权限?。 目标数据库连接账号 MRS用户需要拥有Kafka对应Topic的读写权限,即必须属于kafka/kafkaadmin/kafkasuperuser用户组。 说明: Kafka普通用户需要被Kafka管理员用户授予特定Topic的读写权限,才能访问对应Topic。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全