华为云用户手册

  • 支持审计操作的关键列表 云审计 服务是安全解决方案中专业的日志审计服务,记录了 数据复制服务 的相关操作事件,方便您日后的查询、审计和回溯。 表1 云审计服务支持的数据复制服务操作列表 操作名称 资源类型 事件名称 创建任务 job createJob 编辑任务 job modifyJob 删除任务 job deleteJob 启动任务 job startJob 续传任务 job retryJob 父主题: 对接云审计服务
  • DRS对比任务取消后,数据库有对比任务的查询进程未结束 以源库Mysql数据库为例,进行行数对比,取消对比任务,在源库有对比任务的查询进程未及时结束,清理残留进程,按照如下步骤操作: 使用管理员权限用户登录Mysql数据库,执行show processlist; 按照Host和Command获取Id,其中Host是drs任务节点IP,Command是select count(1)开头的查询语句. 步骤2获取到的id是112773,执行kill 112773; 执行show processlist;再次确认残留进程是否删掉. 父主题: 数据对比
  • 任务状态说明 校验任务提供了多种任务状态,以便区分不同的阶段,方便用户进行任务管理。任务的状态和说明,请参见表1。 表1 任务状态和说明 状态 说明 配置 任务已创建,但还没有启动任务,可以继续配置任务。 启动中 正在启动校验任务。 运行中 校验任务运行中。 任务启动失败 校验任务启动失败。 结束任务中 正在释放校验任务所使用的实例和资源。 已结束 释放校验任务所占实例成功。 父主题: 校验任务管理
  • 操作步骤 在“校验任务管理 ”页面,选择需要修改校验对象的任务,单击任务名称。 页面跳转至“基本信息”,切换到“对象选择”页签。 选择需要增加或者修改的表,单击操作列的“编辑”。 图1 对象选择 在“对象选择”页面,进行对象选择,可参考4。 在“校验规则”页,可选择需要的表进进行规则校验。 如果不需要校验规则,单击“下一步”。 如果需要进行校验规则,可参考5,设置相关规则。 在“预检查”页面,进行任务预校验,校验全部通过后,单击“下一步”。 在“任务确认”页面,确认校验任务信息无误后,单击“提交并启动”。
  • 创建对比任务 在“校验任务管理”界面,选择指定的校验任务,单击任务名称。 页面跳转至“基本信息”,切换到“校验任务”页签,进入“对比”信息页面。 选择对比的内容。 创建对象级对比:选择“对象级对比”页签,单击“开始对比”后稍等一段时间再单击,观察源数据库和目标数据库的各个对比项结果是否一致。若需要查看结果详情,可单击指定对比项操作列的“详情”按钮。 图1 对象对比 创建数据级对比:选择“数据级对比”页签,单击“创建对比任务”,选择“对比类型”和“对象选择”,单击“是”提交对比任务。 图2 创建数据对比任务 行数对比:用于对比源和目标端的表的行数是否相等。 内容对比:用于对比源和目标端的表的内容是否相同。 静态对比:适用于无数据变化的非业务时间。 对象选择:可根据具体的业务场景选择需要进行对比的对象。 创建数据过滤对比:选择“数据级对比”页签,单击“创建对比任务”,选择“对比类型”、“对比方式”勾选“进行数据过滤”选项。 图3 创建数据过滤对比任务 选择具体的对象,单击“下一步”,选择需要校验的表,输入过滤条件,单击“校验规则”。 图4 选择对象 校验完成后,点击“生成过滤规则”,然后单击“是”完成对比任务的创建。 图5 过滤规则 对比任务提交成功后,在“数据级对比”页签,单击刷新列表,可以查看到所选对比类型的对比结果。 图6 同步数据对比 若需要查看行数对比或者内容对比详情,可单击指定对比类型操作列的“查看对比报表”,页面将跳转至新的窗口,可观察对比结果的详细情况。 图7 数据级对比详情 单击“导出报告”,可导出对比报告。 导出的报告,可以单击“下载报告”,将报告下载至本地。 已取消的对比任务也支持查看对比报表。 导出的报告保留24小时,请尽快下载至本地。
  • 对比使用场景 对比实时校验项可以清晰反馈出源数据库和目标数据库的数据是否存在差异。为了尽可能减少业务的影响和业务中断时间,校验场景提供了以下几种对比方式: 对象级对比:支持对数据库、表、索引等进行对比。 数据级对比-行对比:对比选择的表的行数是否一致,只查询表的行数,对比速度较快,建议优先使用。 数据级比对-内容比对-静态比对:比对选择的表的内容是否一致,对比速度取决于表的数据量。 内容对比和行数对比不能同时运行。 内容对比和对象级对比不能同时运行。
  • 数据库权限 表2 数据库权限 数据库 校验所需权限 MySQL/RDS for MySQL SELECT TaurusDB SELECT DDM SELECT TiDB SELECT MariaDB SELECT PostgresSQL/RDS for PostgreSQL 数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限。 Oracle 需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限。 GaussDB 集中式版 需要使用root或其他具有Sysadmin角色的数据库用户登录POSTGRES基库,赋予用户以下权限: 库级权限:DATABASE的CONNECT权限。 SCHEMA级权限:SCHEMA的USAGE权限。 表级权限:SCHEMA下所有表的SELECT权限。 GaussDB分布式版 需要使用root或其他具有Sysadmin角色的数据库用户登录POSTGRES基库,赋予用户以下权限: 库级权限:DATABASE的CONNECT权限。 SCHEMA级权限:SCHEMA的USAGE权限。 表级权限:SCHEMA下所有表的SELECT权限。 MongoDB/DDS/AWS DocumentDB 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 Microsoft SQL Server 需要具备sysadmin权限,或者待同步数据库的db_datareader或db_owner权限。 DB2 for LUW 需要用户具有CONNECT、DATAAC CES S权限。 如果源数据库表结构存在DB2SECURITYLABEL字段类型,需要确保该用户具有该表全部数据的读权限。 CSS /ES 需要用户具有READ权限。 Cassandra 需要具备以下最小权限: 权限系统表system_auth.roles和system_auth.role_permissions的SELECT权限、所需同步表的SELECT权限
  • 支持的数据库类型 目前,DRS校验任务支持的源数据库和目标数据库类型,如下表所示。 表1 支持的数据库 源数据库类型 目标数据库类型 本地自建MySQL数据库 E CS 自建MySQL数据库 其他云上MySQL数据库 RDS for MySQL RDS for MySQL TaurusDB RDS for PostgreSQL GaussDB分布式版 GaussDB集中式版 RDS for MariaDB RDS for MySQL 本地自建MySQL数据库 ECS自建MySQL数据库 其他云上MySQL数据库 CSS/ES 本地自建Oracle数据库 ECS自建Oracle数据库 本地自建MariaDB数据库 ECS自建MariaDB数据库 其他云上MariaDB数据库 本地自建MySQL数据库 ECS自建MySQL数据库 CSS/ES 本地自建PostgreSQL数据库 ECS自建PostgreSQL数据库 其他云上PostgreSQL数据库 RDS for PostgreSQL RDS for PostgreSQL GaussDB集中式版 GaussDB分布式版 RDS for PostgreSQL 本地自建PostgreSQL数据库 ECS自建PostgreSQL数据库 DDM RDS for MySQL 本地自建MySQL数据库 ECS自建MySQL数据库 其他云上MySQL数据库 DDM 本地自建Oracle数据库 ECS自建Oracle数据库 本地自建Oracle数据库 ECS自建Oracle数据库 RDS for MySQL TaurusDB RDS for PostgreSQL GaussDB集中式版 GaussDB分布式版 DDM GaussDB分布式版 本地自建MySQL数据库 ECS自建MySQL数据库 其他云上MySQL数据库 RDS for MySQL 本地自建Oracle数据库 ECS自建Oracle数据库 GaussDB分布式版 GaussDB集中式版 GaussDB集中式版 本地自建MySQL数据库 ECS自建MySQL数据库 其他云上MySQL数据库 RDS for MySQL 本地自建Oracle数据库 ECS自建Oracle数据库 GaussDB分布式版 GaussDB集中式版 TaurusDB TaurusDB 本地自建MySQL数据库 ECS自建MySQL数据库 其他云上MySQL数据库 RDS for MySQL CSS/ES 本地自建Oracle数据库 ECS自建Oracle数据库 DDS 自建MongoDB 其他云上MongoDB DB2 for LUW GaussDB分布式版 GaussDB集中式版 TiDB TaurusDB - GaussDB集中式版 GaussDB分布式版 Microsoft SQL Server 本地自建Mongo数据库 ECS自建Mongo数据库 其他云上Mongo数据库 DDS DDS 本地自建MariaDB数据库 ECS自建MariaDB数据库 其他云上MariaDB数据库 RDS for MariaDB 本地自建MariaDB数据库 ECS自建MariaDB数据库 其他云上MariaDB数据库 RDS for MySQL TaurusDB RDS for MariaDB 本地自建MariaDB数据库 ECS自建MariaDB数据库 其他云上MariaDB数据库 Cassandra GeminiDB Cassandra 其他云上DynamoDB(Web服务) GeminiDB Dynamo 说明: 目前仅支持白名单用户使用。 Redis GeminiDB Redis GeminiDB Redis Redis
  • 操作说明 在“实时灾备”页面,单击“创建灾备任务”。 在“灾备实例”页面,填选任务名称、描述、灾备实例等信息,其中DRS任务类型选择“双AZ”,完成后单击“下一步”。 图1 主备实例 返回“实时灾备管理”页面可以可以看到,DRS会为每一个子任务创建一个备任务。 图2 主备任务 配置并启动灾备正向任务后,DRS会启动主AZ任务进行同步,此时备AZ任务处于暂停状态。 图3 主备倒换前 当正向任务到灾备中时,启动反向任务,反向任务的备任务处于暂停状态。 当正向任务主AZ任务发生异常,DRS会自动启动备AZ任务继续进行同步。 图4 主备倒换后 当反向任务主AZ任务发生异常,DRS会自动启动备AZ任务继续进行同步。 图5 主备任务
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 同步对象选择维度:仅支持全部同步。 支持的同步对象: 支持String,Hash,List,Set,Sorted Set类型同步。 不支持Lua脚本和事务的同步。 不支持Stream,Exhash ,Bloomfilter类型同步。 不支持自定义类型。 不支持同步目标库不支持的命令。 不支持同步没有hash_tag的批量操作命令。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库要求: 源库必须是本云GeminiDB Redis实例。 一个GeminiDB Redis实例只能同时作为一个DRS任务的源端数据库。 源数据库GeminiDB Redis内核版本(gemini version)为4.2.0及以上。 notify-keyspace-events 配置项开启通知过期事件互斥,如需使用同步功能,需关闭 通知过期事件的功能. 创建全量+增量任务,需要支持PSYNC命令。 源数据库GeminiDB Redis需要开启复制功能。 set config set enable-replication 1。 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。 目标数据库要求: 同步前目标库建议为空。 目标数据库实例必须有足够的存储空间。 暂不支持Redis 6.0版本填写用户名。 如果目标库是通过容器、云服务器、或NAT等方式创建的集群,请保证集群的config设置可以使DRS发现全部的主备节点。 其他使用须知: 全量+增量任务使用解析RDB的方式读取数据。 如果源库GeminiDB Redis复制功能超时时间repl-timeout过小(当前默认是3600s),可以适当进行扩大,防止任务失败时间过长,导致任务无法续传。 同步过程中,如果源库GeminiDB Redis增配导致任务失败,需要重置任务。且为保障数据一致性,在重置任务前,建议先清空已迁移至目标的数据。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置) 同步过程中,不支持源库GeminiDB Redis减配,如果源库需要减配,请重新创建同步任务。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置) 对于List对象,由于在调用PSYNC进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。 源库GeminiDB Redis为主备版时,不支持在源库执行包含多个key的命令(例如mset等),否则可能因为key不在同一个slot或者涉及多个slot,导致报错:CROSSSLOT Keys in request don't hash to the same slot。 全量同步阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在同步中的目标数据库进行修改操作。 增量同步过程须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在同步中的目标数据库进行修改操作。
  • 使用建议 如果您使用的是全量同步模式,确保源和目标数据库无业务写入,保证同步前后数据一致。如果您使用的是全量+增量同步模式,支持在源数据库有业务数据写入的情况下进行迁移。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库迁移之前进行一次演练,可以帮助您提前发现问题并解决问题。 同步阶段,确保目标数据库无业务写入,保证同步前后数据一致。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约20MB/s的查询压力,以及占用2~4个CPU。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作限制 任务启动前须知 源数据库要求: 源库必须是本云GeminiDB Redis实例。 一个GeminiDB Redis实例只能同时作为一个DRS任务的源端数据库。 源数据库GeminiDB Redis内核版本(gemini version)为4.2.0及以上;对于单增量任务,源库内核版本(gemini version)需要为6.3.0及以上。 源库存在数据的数据库序号,需要小于目标库的最大序号,比如源库10号库存在数据,则目标库最大序号需要大于或等于10。 创建全量+增量任务,需要支持PSYNC命令。 源数据库GeminiDB Redis需要开启复制功能。 set config set enable-replication 1。 notify-keyspace-events 配置项开启通知过期事件互斥,如需使用迁移功能,需关闭 通知过期事件的功能. 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。 目标数据库要求: 同步前目标库建议为空。 目标数据库实例必须有足够的存储空间。 如果目标库是Redis 5.0主备版,目标库测试连接请填写主节点、从节点、哨兵节点的所有IP和对应端口,且主从节点和哨兵节点的密码必须设置成一致。 如果目标库是Redis 4.0主备版,且主从节点设置了requirepass参数(有密码),DRS此时把主备Redis当成单机版Redis,暂不支持目标库发生主备倒换场景,目标库测试连接请只填写主节点IP和端口。 如果目标库是Redis 4.0主备版,且主从节点没有设置requirepass参数(无密码),可以支持目标库发生主备倒换场景,目标库测试连接请填写主节点、从节点、哨兵节点的所有IP和对应端口。 其他使用须知: 全量+增量任务使用解析RDB的方式读取数据。 如果源库GeminiDB Redis复制功能超时时间repl-timeout过小(当前默认是3600s),可以适当进行扩大,防止任务失败时间过长,导致任务无法续传。 同步过程中,如果源库GeminiDB Redis增配导致任务失败,需要重置任务。且为保障数据一致性,在重置任务前,建议先清空已迁移至目标的数据。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置) 同步过程中,不支持源库GeminiDB Redis减配,如果源库需要减配,请重新创建同步任务。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置) 对于List对象,由于在调用PSYNC进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。 源库GeminiDB Redis为主备版时,不支持在源库执行包含多个key的命令(例如mset等),否则可能因为key不在同一个slot或者涉及多个slot,导致报错:CROSSSLOT Keys in request don't hash to the same slot。 全量同步阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在迁移中的目标数据库进行修改操作。 增量同步过程须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在迁移中的目标数据库进行修改操作。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 GeminiDB Redis(经典部署模式:Proxy集群版、主备版) 本地自建Codis集群(开源Codis 3.0及以上版本) ECS自建Codis集群(开源Codis 3.0及以上版本) 本地自建Redis单机版(2.8.x、3.0.x、3.2.x、4.0.x、5.0.x版本) ECS自建Redis单机版(2.8.x、3.0.x、3.2.x、4.0.x、5.0.x版本) 本地自建Redis主备版(4.0.x、5.0.x版本) ECS自建Redis主备版(4.0.x、5.0.x版本) GeminiDB Redis(经典部署模式:Proxy集群版、主备版) 目前仅支持白名单用户使用。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 同步对象选择维度:仅支持全部同步。 支持的同步对象: 支持String,Hash,List,Set,Sorted Set类型同步。 不支持Lua脚本和事务的同步。 不支持Stream,Exhash ,Bloomfilter类型同步。 不支持自定义类型。 不支持同步目标库不支持的命令。
  • 使用建议 如果您使用的是全量同步模式,确保源和目标数据库无业务写入,保证同步前后数据一致。如果您使用的是全量+增量同步模式,支持在源数据库有业务数据写入的情况下进行迁移。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库迁移之前进行一次演练,可以帮助您提前发现问题并解决问题。 同步阶段,确保目标数据库无业务写入,保证同步前后数据一致。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约20MB/s的查询压力,以及占用2~4个CPU。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作限制 任务启动前须知 源数据库对象要求: 创建全量+增量任务,需要支持PSYNC命令。 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。 目标数据库对象要求: 目标库必须是本云GeminiDB Redis实例。 同步前目标库GeminiDB Redis实例建议为空。 目标数据库实例版本要高于或等于源数据库版本。 其他使用须知: 全量+增量任务使用解析RDB的方式读取数据。 迁移Lua脚本时,源库需要同时有其它数据,否则无法解析出RDB中的Lua脚本,导致Lua脚本同步失败。 DRS不会对目标库进行FLUSH等高危操作,所以对于List列表类型数据,可能出现重复的数据。 源库测试连接时,必须填写Redis集群所有分片的IP地址。同时为了避免影响源端Redis实例的业务访问,强烈建议从源实例的副本节点(从节点)进行数据同步,即推荐填写Redis集群的Slave节点IP地址。 为保障增量同步有效进行,建议同步前,评估源库Redis参数,将源库的配置文件redis.conf中repl-backlog-size参数的值适当调大。 同步过程中,如果源库Redis集群发生扩缩容(例如增加或者减少分片)、规格变配(例如扩大内存),则需要重新配置同步任务。且为保证数据一致性,在重新配置任务前,建议先清空已迁移至目标GeminiDB Redis的数据。 如果源库中的某些Key设置了过期(expire)策略,由于可能存在Key已过期但未被及时删除的情况,所以在目标库中查看Key数量(例如通过info命令查看)时会比源库的Key数量少。为保障数据的一致性,建议设置延长Key的过期时间。 全量迁移阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,如果源库Redis集群发生主备倒换,任务会失败,需要清空目标库重置任务。 同步过程中,不允许对正在迁移中的目标数据库进行修改操作。 增量迁移阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,如果源库Redis集群发生主备倒换,任务会失败,需要清空目标库重置任务。 同步过程中,不允许对正在同步中的目标数据库进行修改操作。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 同步对象选择维度:全部同步。 支持的同步对象: 支持String,Hash,List,Set,Sorted Set类型迁移。 支持Lua脚本迁移。 不支持事务的迁移。 不支持Stream,BitMap,HyperLogLog,GEO类型迁移。 不支持自定义类型。 不支持迁移目标库GeminiDB Redis不支持的命令。
  • 使用建议 如果您使用的是全量同步模式,确保源和目标数据库无业务写入,保证同步前后数据一致。如果您使用的是全量+增量同步模式,支持在源数据库有业务数据写入的情况下进行同步。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 同步阶段,确保目标数据库无业务写入,保证同步前后数据一致。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约20MB/s的查询压力,以及占用2~4个CPU。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
  • 使用建议 如果您使用的是全量同步模式,确保源和目标数据库无业务写入,保证同步前后数据一致。如果您使用的是全量+增量同步模式,支持在源数据库有业务数据写入的情况下进行同步。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 同步阶段,确保目标数据库无业务写入,保证同步前后数据一致。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约20MB/s的查询压力,以及占用2~4个CPU。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作限制 任务启动前须知 源数据库对象要求: 创建全量+增量任务,需要支持PSYNC命令。 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。 目标数据库对象要求: 目标库必须是本云GeminiDB Redis实例。 迁移前目标库GeminiDB Redis实例必须为空。 目标数据库实例版本要高于或等于源数据库版本。 其他使用须知: 单全量任务使用SCAN方式读取数据。 全量+增量任务使用解析RDB的方式读取数据。 源库不支持PSYNC命令的情况下,请使用单全量模式同步。 源库支持PSYNC命令,请使用全量+增量模式同步。 单全量任务不支持同步过期时间。 单全量任务不支持Lua脚本迁移。 同步Lua脚本时,源库需要同时有其它数据,否则无法解析出RDB中的Lua脚本,导致Lua脚本迁移失败。 源库为自建单机版Redis时,增量阶段支持append,blpop,brpop,decr,decrby,del,expire,expireat,flushall,flushdb,getset,hdel,hincrby,hincrbyfloat,hmset,hset,hsetnx,incr,incrby,incrbyfloat,linsert,lpop,lpush,lpushx,lrem,lset,ltrim,move,mset,msetnx,multi,persist,pexpire,pexpireat,psetex,publish,rename,rpop,rpush,rpushx,sadd,select,set,setbit,setex,setnx,setrange,smove,spop,srem,zadd,zincrby,zrem,zremrangebylex,zremrangebyrank,zremrangebyscore。 源库为单机版Redis时,由于GeminiDB Redis只允许单个命令操作单个slot,若在源库执行包含多个key的命令操作时,key不在同一个slot或涉及多个slot,会出现报错:CROSSSLOT Keys in request don't hash to the same slot。 DRS不会对目标库进行FLUSH等高危操作,所以对于List列表类型数据,可能出现重复的数据。 为保障增量迁移有效进行,建议同步前,评估源库Redis参数,将源库的配置文件redis.conf中repl-backlog-size参数的值适当调大。 同步过程中,如果自建Redis发生扩缩容(例如增加或者减少分片)、规格变配(例如扩大内存),则需要重新配置同步任务。且为保证数据一致性,在重新配置任务前,建议先清空已迁移至目标GeminiDB Redis的数据。 如果源库中的某些Key设置了过期(expire)策略,由于可能存在Key已过期但未被及时删除的情况,所以在目标库中查看Key数量(例如通过info命令查看)时会比源库的Key数量少。为保障数据的一致性,建议设置延长Key的过期时间。 全量迁移阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在迁移中的目标数据库进行修改操作。 增量迁移阶段须知 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 同步过程中,不允许对正在迁移中的目标数据库进行修改操作。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 使用须知 同步对象范围 同步对象选择维度:支持选择库级。 支持的同步对象: 支持String,Hash,List,Set,Sorted Set类型同步。 支持Lua脚本迁移(单全量任务不支持)。 不支持事务的同步。 不支持Stream,BitMap,HyperLogLog,GEO类型同步。 不支持自定义类型。 不支持同步目标库GeminiDB Redis不支持的命令。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建官方开源单机或主备Redis数据库(2.8.x、3.0.x、3.2.x、4.0.x、5.0.x版本) ECS自建官方开源单机或主备Redis数据库(2.8.x、3.0.x、3.2.x、4.0.x、5.0.x版本) GeminiDB Redis(经典部署模式:Proxy集群版、主备版) 说明: 仅支持目标库版本等于或高于源库版本。 目前仅支持白名单用户使用。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表3 支持的同步对象 类型名称 使用须知 同步对象范围 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的同步。 不支持同步系统库(如local、admin、config等)和系统集合,如果业务数据在系统库下,则需要先将业务数据移动到用户数据库下,可以使用renameCollection命令进行移出。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 请勿在源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致同步前后数据不一致。
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量+增量同步 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 增量同步时,需打开源数据库的changeStream 要为特定数据库上的所有集合启用更改流,请使用 mongo shell 向您的 Amazon DocumentDB 集群进行身份验证,然后执行以下命令(注意把红色字体的db_name替换成真实的数据库名): db.adminCommand({modifyChangeStreams: 1,database: "db_name",collection: "", enable: true}); collection为空表示为该database下所有collection启用change stream,如果要为特定collection启用,可在collection字段指定对应的名字。更多用法请参考链接。 修改change stream的保留时间 默认保留时间是3小时,需要根据数据量评估迁移时间,然后修改保留时间不小于迁移需要的时间。如果不清楚迁移需要的时间,建议保留时间设置为7天,迁移完成后再改为合适的时间。修改保留时间可通过控制台或cli实现,请参考链接。 使用限制 通用: 为了保持数据一致性,在整个同步过程中,不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 在任务启动、任务全量同步阶段,不建议对源数据库做删除类型的DDL操作,例如删除数据库、集合、索引、文档、视图等,这样可能会引起任务同步失败。 在整个同步过程中,不支持源数据库主备切换导致数据回滚的情况。 不支持全量同步和增量同步阶段insert、update源库大于16MB的文档。 增量同步阶段: 源数据库为副本集实例时,增量同步阶段支持如下操作: 支持文档(document)新增、删除、更新。 支持集合(collection)删除。 当前仅支持dropDatabase、dropCollection、renameCollection DDL命令。 任务增量阶段,为保证同步的性能,会集合级的进行并发回放。特殊的情况只支持单线程写入,不支持并发回放: 集合的索引中有unique key时。 集合属性的capped为true时。 这种情况可能会导致任务时延增高。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 副本集:AWS DocumentDB数据库的副本集实例状态必须正常,要存在主节点。 压缩参数block_compressor的取值,根据源库对应集合的stats().wiredTiger.creationString.block_compressor来决定,如果目标库已经存在对应的空集合,则不同步压缩参数;特殊的,对于不支持的压缩参数,按照目标库实例的net.compression.compressors参数决定。当目标库为DDS 4.2版本时,由于目标库不支持压缩参数的设置,DRS不同步压缩参数。 如果源数据库的AWS DocumentDB服务不是单独部署的,而是和其他的服务部署在同一台机器,则必须要给源数据库的wiredTiger引擎加上cacheSizeGB的参数配置,建议值设为最小空闲内存的一半。 选择集合同步时,增量同步过程中不建议对集合进行重命名操作。 建议填写副本集所有的主节点和备节点信息,以防主备切换影响同步任务。如果填写的是主备多个节点的信息,注意所有的节点信息必须属于同一个副本集实例。 为了提高同步的速度,在开始同步之前,建议在源数据库删掉不需要的索引,只保留必须的索引。在同步过程中不建议对源库创建索引,如果必须要创建索引,请使用后台的方式创建索引。 为了防止回环,不支持在相同的源和目标库同时启动入云和出云任务。 说明: 同步任务支持源和目标为同一个数据库,为了避免回环,必须使用对象名映射功能进行重命名。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 AWS云上DocumentDB数据库(4.0副本集、5.0副本集、5.0集群) 说明: 创建AWS集群默认为5.0版本 副本集支持全+增、单全、单增任务 集群只支持单全任务,不支持增量任务 AWS上创建”基于实例的集群”对应副本集 AWS上创建”弹性集群”对应集群 DDS实例(3.4、4.0、4.2、4.4版本) 说明: 仅支持目标库版本等于或高于源库版本。 目前仅支持白名单用户使用。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作限制 任务启动前须知 考虑到整体同步速度以及源端DynamoDB Stream数据的有效时间,需要每次选择合适数量和大小的表进行并发同步,建议表数量不超过50个。 表结构迁移包含分区键、排序键、全局二级索引、本地二级索引。 如果进行全+增数据同步,请提前启动源库待同步表的streams流,并保证写入流的信息是项目的新旧映像。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 为保证同步任务正常和数据的一致性,如有以上诉求,建议在业务低峰期时重新创建DRS任务。 全量读取采用强一致性读取。 增量同步过程须知 请勿修改目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 为保证同步任务正常和数据的一致性,如有以上诉求,建议在业务低峰期时重新创建DRS任务。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表2 支持的同步对象 类型名称 同步范围 同步范围须知 支持场景:支持全量、全量+增量同步。 支持的字段:String、Number、Binary、Boolean、Null、Map、List、String Set、Number Set、Binary Set。 支持表级同步: 全量阶段仅支持表数据、表结构的同步。 不支持同步TTL。 不支持同步Counter表。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。
共100000条
提示

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