华为云用户手册

  • 约束限制 所有链路均支持修改连接密码。 目前仅MySQL和GaussDB(for MySQL)为源且连接方式为输入IP地址的单主灾备任务,在灾备阶段支持修改IP、端口、用户名信息。当业务库进行某些操作导致IP地址、端口、用户名变化时,可通过此功能更新为正确的信息。 修改IP功能适用于业务数据库IP地址变化场景,修改前后的IP必须属于同一个数据实例,否则可能导致任务失败或者数据不一致。 连接信息修改后,将实时生效,不会清空灾备数据库的数据。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 灾备 数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION。 GaussDB(for MySQL)实例的root账户默认已具备上述权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 方式一 在“实时灾备管理”页面的灾备任务列表中,选择要修改的任务,单击“编辑”。 在“源库及目标库”页面,填写业务库和灾备库信息,单击“下一步”。 在“预检查”页面,进行灾备任务预校验,校验通过后才可进行下一步。 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”重新进行灾备任务的预检查。 预检查不通过项处理建议请参见《数据复制服务用户指南》中的“预检查不通过项修复方法”。 预检查完成后,且预检查通过率为100%时,单击“下一步”,进入“参数对比”页面。 所有检查项结果均通过时,若存在请确认项,需要阅读并确认详情后才可以继续执行下一步操作。 在“参数对比”页面,进行参数对比。 参数对比功能从“常规参数”和“性能参数”两个维度,展示了业务数据库和灾备数据库参数值的一致性情况。您可以根据业务需要,决定是否选用该功能。该操作不影响数据灾备,主要目的是为了确保数据灾备成功后业务应用的使用不受影响。 若您选择不进行参数对比,可跳过该步骤,单击页面右下角“下一步”按钮,继续执行后续操作。 若您选择进行参数对比,请参照如下的步骤操作。 对于常规参数,一般情况下,如果业务数据库和灾备数据库存在不一致的情况,建议单击“一键修改”,将灾备数据库参数修改为和业务数据库对应参数相同的值。 图1 修改常规参数 对于性能参数,您可以根据业务场景,自定义业务数据库和灾备数据库的参数值,二者结果可以一致也可以不一致。 将对比结果一致的性能参数修改为不一致:在“目标库值调整为”一列手动输入调整的倍数或结果后,单击左上角的“一键修改”,即可完成修改。 将对比结果不一致的性能参数改为一致,请参考如下流程进行修改: 对业务库和灾备库的参数值。 选择需要修改的参数后,单击“一键对齐”,系统将帮您自动填充灾备数据库的参数值,使其和业务数据库对应的参数值保持一致。 图2 一键对齐参数 您也可以通过手动输入调整的倍数或结果,对齐参数值。 修改参数值。 业务数据库和灾备数据库的不一致参数值对齐后,单击“一键修改”,系统将按照您当前设置的灾备数据库参数值进行修改。修改完成后,灾备数据库的参数值和对比结果会自动更新。 图3 一键修改参数 部分参数修改后无法在灾备数据库立即生效,需要重启才能生效,此时的对比结果显示为“待重启,不一致”。建议您在灾备任务启动之前重启灾备标数据库,或者数据灾备结束后选择一个计划时间重启。如果您选择数据灾备结束后重启灾备数据库,请合理设置重启计划时间,避免参数生效太晚影响业务的正常使用。 在进行参数对比功能时,您可以参见《数据复制服务用户指南》中“参数对比列表”进行参数设置。 参数对比操作完成后,单击“下一步”,进入“任务确认”页面。 在“任务确认”页面,设置灾备任务的启动时间、任务异常通知设置、SMN主题、时延阈值、RTO 时延阈值、RPO 时延阈值、任务异常自动结束时间,并确认灾备任务信息无误后,单击“启动任务”,提交灾备任务。 图4 任务启动设置 表1 任务和描述 参数 描述 启动时间 灾备任务的启动时间可以根据业务需求,设置为“立即启动”或“稍后启动”。 说明: 预计灾备任务启动后,会对业务数据库和灾备数据库的性能产生影响,建议选择业务低峰期,合理设置灾备任务的启动时间。 任务异常通知设置 该项为可选参数,开启之后,选择对应的SMN主题。当灾备任务状态或时延指标异常时,系统将发送通知。 SMN主题 “任务异常通知设置”项开启后可见,需提前在SMN上申请主题并添加订阅。 SMN主题申请和订阅可参考《消息通知服务用户指南》。 时延阈值 在数据灾备阶段,业务数据库和灾备数据库之间的有时会存在一个时间差,称为时延,单位为秒。 时延阈值设置是指时延超过一定的值后(时延阈值范围为0到3600s),DRS可以发送告警通知。告警通知将在时延稳定超过设定的阈值6min后发送,避免出现由于时延波动反复发送告警通知的情况。 说明: 设置时延阈值之前,需要设置任务异常通知。 当时延阈值设置为0时,不会发送通知给收件人。 RTO 时延阈值 RTO时延阈值设置是DRS实例与灾备数据库间同步的时延超过一定的值后(RTO时延阈值范围为0到3600s),DRS可以发送告警通知给指定收件人。告警通知将在时延稳定超过设定的阈值6min后发送,避免出现由于时延波动反复发送告警通知的情况。 说明: 设置RTO时延阈值之前,需要设置任务异常通知。 当时延阈值设置为0时,不会发送通知给收件人。 RPO 时延阈值 RPO时延阈值设置是业务数据库与DRS实例间同步的时延超过一定的值后(RTO时延阈值范围为0到3600s),DRS可以发送告警通知。告警通知将在时延稳定超过设定的阈值6min后发送,避免出现由于时延波动反复发送告警通知的情况。 说明: 设置RPO时延阈值之前,需要设置任务异常通知。 当时延阈值设置为0时,不会发送通知给收件人。 初次进入增量灾备阶段,会有较多数据等待同步,产生的较大时延属于正常情况,不在该功能监控范围之内。 任务异常自动结束时间(天) 设置任务异常自动结束天数,输入值必须在14到100之间,默认值14。 说明: 仅按需计费任务支持设置任务异常自动结束时间,包年/包月任务不支持。 异常状态下的任务仍然会计费,而长时间异常的任务无法续传和恢复。设置任务异常自动结束天数后,异常且超时的任务将会自动结束,以免产生不必要的费用。 灾备任务提交后,您可在“实时灾备管理”页面,查看并管理自己的任务。 您可查看任务提交后的状态,状态请参见任务状态说明。 在任务列表的右上角,单击刷新列表,可查看到最新的任务状态。 对于未启动、状态为配置中的任务,DRS默认保留3天,超过3天DRS会自动删除后台资源,当前任务状态不变。当用户再次配置时,DRS会重新申请资源。 对于灾备中的任务,您可通过数据对比功能查看灾备前后数据是否一致。
  • 使用流程 数据灾备的使用流程如下: 图1 数据灾备流程 步骤一:创建灾备任务。根据需要,选择业务数据库和灾备数据库,创建灾备任务。 步骤二:查询灾备进度。灾备过程中,可以通过查看灾备进度了解数据灾备完成情况。 步骤三:查看灾备日志。灾备日志包含告警、错误和提示等类型的信息,可根据此类信息分析系统存在的问题。 步骤四:对比灾备项。数据灾备提供对比功能,可根据需要查看对象级对比、数据级对比等,来确保业务数据库和灾备数据库的数据一致性。 本章节将以MySQL到RDS for MySQL的灾备场景为示例,介绍在公网网络场景下,通过数据复制服务管理控制台配置数据灾备任务的流程,其他存储引擎的配置流程类似。 在数据复制服务中,数据库灾备是通过任务的形式完成的,通过创建任务,可以完成任务信息配置、任务创建。灾备任务创建成功后,您也可以通过数据复制服务管理控制台,对任务进行管理。
  • 使用场景 为了解决地区故障导致的业务不可用,数据复制服务推出灾备场景,为用户业务连续性提供数据库的同步保障。当主实例所在区域发生突发生自然灾害等状况无法连接时,可将异地灾备实例切换为主实例,在应用端修改数据库链接地址后,即可快速恢复应用的业务访问。数据复制服务提供的实时灾备功能,可实现主实例和跨区域的灾备实例之间的实时同步。 一次完整的数据灾备,是以任务作为导向,依次进行灾备进度观察、灾备日志分析、灾备数据一致性对比等多项操作。通过多项指标和数据的对比分析,可以帮助您实现不同业务系统间的数据同步。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 DDM账户至少需要具备一个权限,比如SELECT权限。 灾备数据库连接账号 DDM账户至少需要具备一个权限,比如SELECT权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用建议 灾备初始化阶段,请不要在业务数据库执行DDL操作,否则可能导致任务异常。 灾备初始化阶段,确保灾备数据库无业务写入,保证灾备前后数据一致。 数据库灾备与环境多样性和人为操作均有密切关系,为了确保灾备的平顺,建议您在进行正式的数据库灾备之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,选择业务低峰期开始运行灾备任务,避免灾备任务对业务造成性能影响。 在网络无瓶颈的情况下,灾备初始化阶段会对业务数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 灾备无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。 正在灾备的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 灾备初始化阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 数据库账号权限要求 在使用DRS进行灾备时,连接业务数据库和灾备数据库的账号需要满足以下权限要求,才能启动实时灾备任务。不同类型的灾备任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 所需权限 业务数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当业务数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 灾备数据库连接账号 需要具备如下权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、TRIGGER、REFERENCES、SHOW VIEW、EVENT、INDEX、LOCK TABLES、CREATE VIEW、 CREATE ROUTINE、 ALTER ROUTINE、 CREATE USER、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT、WITH GRANT OPTION,RDS for MySQL实例的root账户默认已具备上述权限。当灾备数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接业务和灾备数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。
  • 网络配置流程 创建VPC对等连接。 同账号建立VPC对等连接的方法,可参考《创建相同账户下的对等连接》。 不同账号建立VPC对等连接的方法,可参考《创建不同账户下的对等连接》。 对等连接建立后,需要在本端VPC、对端VPC分别添加对方子网的路由才能通信,详细操作可参考添加VPC对等连接路由。 在添加对等路由时,建议添加网段路由信息。如果添加点对点路由,DRS任务重建后实例IP会发生改变,此时需要重新添加路由,否则会导致网络不通。 创建DRS实例,并获取DRS实例私有IP地址。 DRS迁移实例创建成功后,界面会显示DRS迁移实例的私有IP地址。 图3 DRS实例私有IP 配置源库所在安全组和源库所在子网的网络ACL。 安全组:增加云数据库安全组入方向规则,放通DRS私网IP作为源地址可以访问云数据库监听端口。 网络ACL:VPC默认没有网络ACL,如果您设置过网络ACL,需要增加入方向规则,允许放通DRS私网IP作为源地址、随机端口作为源端口范围,RDS源数据库的IP作为目的地址、监听端口作为目的端口范围。 配置DRS迁移实例所在安全组和DRS所在子网的网络ACL。 VPC默认没有网络ACL,默认安全组的规则在出方向数据全部放行,DRS迁移实例和目标RDS数据库在相同安全组默认互通,所以在默认场景下无需配置。 如果您设置过网络ACL或安全组,请登录VPC管理控制台进行检查和配置。 安全组:确保DRS私网IP出方向到源数据库的IP、监听端口放通。 网络ACL:确保DRS私网IP、随机端口出方向和源数据库的IP、监听端口放通。 测试连接。 登录DRS控制台,单击已经创建的DRS任务操作列的“编辑”,重新进入“源库及目标库”界面,输入源数据库IP、端口、用户名、密码进行测试连接。
  • 网络配置流程 创建VPC对等连接。 同账号建立VPC对等连接的方法,可参考《创建相同账户下的对等连接》。 不同账号建立VPC对等连接的方法,可参考《创建不同账户下的对等连接》。 对等连接建立后,需要在本端VPC、对端VPC分别添加对方子网的路由才能通信,详细操作可参考添加VPC对等连接路由。 在添加对等路由时,建议添加网段路由信息。如果添加点对点路由,DRS任务重建后实例IP会发生改变,此时需要重新添加路由,否则会导致网络不通。 创建DRS实例,并获取DRS实例私有IP地址。 DRS迁移实例创建成功后,界面会显示DRS迁移实例的私有IP地址。 图3 DRS实例私有IP 配置源库所在安全组和源库所在子网的网络ACL。 安全组:增加云数据库安全组入方向规则,放通DRS私网IP作为源地址可以访问云数据库监听端口。 网络ACL:VPC默认没有网络ACL,如果您设置过网络ACL,需要增加入方向规则,允许放通DRS私网IP作为源地址、随机端口作为源端口范围,RDS源数据库的IP作为目的地址、监听端口作为目的端口范围。 华为云ECS自建数据库添加白名单。 华为云ECS自建数据库需要添加迁移账号使用DRS私有 IP访问数据库的权限。各种数据库添加白名单的方法不同,请参考各数据库官方文档进行操作。 配置DRS迁移实例所在安全组和DRS所在子网的网络ACL。 VPC默认没有网络ACL,默认安全组的规则在出方向数据全部放行,DRS迁移实例和目标RDS数据库在相同安全组默认互通,所以在默认场景下无需配置。 如果您设置过网络ACL或安全组,请登录VPC管理控制台进行检查和配置。 安全组:确保DRS私网IP出方向到源数据库的IP、监听端口放通。 网络ACL:确保DRS私网IP、随机端口出方向和源数据库的IP、监听端口放通。 测试连接。 登录DRS控制台,单击已经创建的DRS任务操作列的“编辑”,重新进入“源库及目标库”界面,输入源数据库IP、端口、用户名、密码进行测试连接。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考DRS预检查项一览表。除了预检查项目之外,您还需要注意的事情如表4所示 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源数据库不能是GeminiDB Mongo实例。 源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。 多个源数据库迁移到同一个目标数据库时,所选的待迁移数据库的库名不能重复。 副本集:MongoDB数据库的副本集实例状态必须正常,要存在主节点。 使用限制 通用: 整个迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 整个迁移过程中,不允许对正在迁移中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 整个迁移过程中,不支持源数据库主备切换导致数据回滚的情况。 整个迁移过程中,不支持insert、update源库大于16MB的文档。 整个迁移过程中,源数据库不允许手动执行sh.moveChunk()操作,否则将导致迁移数据不一致。 全量迁移阶段: 任务启动和全量数据迁移阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量迁移阶段: 选择集合迁移时,增量迁移过程中不建议对集合进行重命名操作。 数据对比: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 行对比时,集群实例如果存在孤儿文档或者正在进行chunk迁移,会导致返回的行数不准确,对比结果不一致。详细情况可参考MongoDB官方文档。 其他限制 源数据库为非集群实例时,增量迁移阶段支持如下操作: 支持数据库(database)新建、删除。 支持文档(document)新增、删除、更新。 支持集合(collection)新建、删除。 支持索引(index)新建、删除。 支持视图(view)新建,删除。 支持convertToCapped、collMod、renameCollection命令。 源库是集群实例时,集群到集群的全量+增量迁移,全量阶段和增量阶段,不允许对迁移对象做删除操作,否则会导致任务失败。 对于在源数据库已经存在TTL索引的集合,或者在增量迁移期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证迁移完成之后数据的一致性。 由于目标库不支持压缩参数的设置,DRS不迁移压缩参数,迁移任务不报错。 如果源数据库的MongoDB服务不是单独部署的,而是和其他的服务部署在同一台机器,则必须要给源数据库的wiredTiger引擎加上cacheSizeGB的参数配置,建议值设为最小空闲内存的一半。 如果源数据库是副本集,则建议填写所有的主节点和备节点信息,以防主备切换影响迁移任务。如果填写的是主备多个节点的信息,注意所有的节点信息必须属于同一个副本集实例。
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表2 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持范围分片的情况下maxKey当主键。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表3 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 用户赋权参考语句:如连接源数据库的用户需要有admin库的readAnyDatabase权限和config库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表2 支持的迁移对象 类型名称 使用须知 迁移对象范围 迁移对象选择维度:仅支持全部迁移。 支持的迁移对象: 支持String,Hash,List,Set,Sorted Set类型迁移。 不支持Lua脚本和事务的迁移。 不支持Stream,BitMap,HyperLogLog,GEO类型迁移。 不支持自定义类型。 不支持迁移目标库不支持的命令。 不支持迁移没有hash_tag的批量操作命令。
  • 使用建议 如果您使用的是全量迁移模式,确保源和目标数据库无业务写入,保证迁移前后数据一致。如果您使用的是全量+增量迁移模式,支持在源数据库有业务数据写入的情况下进行迁移。 数据库迁移与环境多样性和人为操作均有密切关系,为了确保迁移的平顺,建议您在进行正式的数据库迁移之前进行一次演练,可以帮助您提前发现问题并解决问题。 迁移阶段,确保目标数据库无业务写入,保证迁移前后数据一致。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性迁移成功率,避免迁移对业务造成性能影响。 在网络无瓶颈的情况下,全量迁移会对源数据库增加约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及以上。 源数据库GeminiDB Redis需要开启复制功能。 set config set enable-replication 1。 创建全量+增量任务,需要支持PSYNC命令。 目标数据库要求: 迁移前目标库建议为空。 目标数据库实例必须有足够的存储空间。 暂不支持Redis 6.0版本填写用户名。 如果目标库是通过容器、云服务器、或NAT等方式创建的集群,请保证集群的config设置可以使DRS发现全部的主备节点。 其他使用须知: 全量+增量任务使用解析RDB的方式读取数据。 如果源库GeminiDB Redis复制功能超时时间repl-timeout过小(当前默认是3600s),可以适当进行扩大,防止任务失败时间过长,导致任务无法续传。 迁移过程中,如果源库GeminiDB Redis增配导致任务失败,需要重置任务。且为保障数据一致性,在重置任务前,建议先清空已迁移至目标的数据。 迁移过程中,不支持源库GeminiDB Redis减配,如果源库需要减配,请重新创建迁移任务。 对于List对象,由于在调用PSYNC进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。 源库GeminiDB Redis为主备版时,不支持在源库执行包含多个key的命令(例如mset等),否则可能因为key不在同一个slot或者涉及多个slot,导致报错:CROSSSLOT Keys in request don't hash to the same slot。 全量迁移阶段须知 迁移过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 迁移过程中,不允许对正在迁移中的目标数据库进行修改操作。 增量迁移阶段须知 迁移过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。 迁移过程中,不允许对正在迁移中的目标数据库进行修改操作。
  • 使用流程 一次完整的实时迁移,是通过创建实时迁移任务,以迁移任务作为数据库迁移的导向,依次进行迁移进度观察、迁移日志分析、迁移数据一致性对比等多项操作。通过多项指标和数据的对比分析,可以帮助您确定合适的业务割接时机,实现最小化业务中断的数据库迁移。 一次完整的实时迁移包含如下过程: 图1 迁移流程 步骤一:创建迁移任务。根据需要,选择源和目标数据库,创建迁移任务。 步骤二:查询迁移进度。迁移过程中,可以通过查看迁移进度了解数据迁移完成情况。 步骤三:查看迁移日志。迁移日志包含告警、错误和提示等类型的信息,可根据此类信息分析系统存在的问题。 步骤四:对比迁移项。数据迁移提供对比功能,可根据需要查看对象级对比、数据级对比等,来确保源和目标数据库的数据一致性。 本章节将以MySQL到RDS for MySQL的迁移为示例,介绍在VPC网络场景下,通过数据复制服务管理控制台配置数据迁移任务的流程,其他存储引擎的配置流程类似。 VPC网络适合云上同Region数据库之间的迁移。 在数据复制服务中,数据库迁移是通过任务的形式完成的,通过创建任务向导,可以完成任务信息配置、任务创建。迁移任务创建成功后,您也可以通过数据复制服务管理控制台,对任务进行管理。
  • 支持的迁移对象范围 在使用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对源数据库和目标数据库有什么影响。
  • 使用须知 DRS全量+增量迁移过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保迁移各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作限制 任务启动前须知 源数据库对象要求: 创建全量+增量任务,需要支持PSYNC命令。 目标数据库对象要求: 目标库必须是本云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全量+增量迁移过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保迁移各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知。 表3 使用须知 类型名称 使用和操作限制 任务启动前须知 源数据库对象要求: 创建全量+增量任务,需要支持PSYNC命令。 目标数据库对象要求: 目标库必须是本云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对源数据库和目标数据库有什么影响。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考DRS预检查项一览表。除了预检查项目之外,您还需要注意的事情如表4所示 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源数据库不能是GeminiDB Mongo实例。 源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。 多个源数据库迁移到同一个目标数据库时,所选的待迁移数据库的库名不能重复。 副本集:MongoDB数据库的副本集实例状态必须正常,要存在主节点。 单节点类型实例的增量迁移目前仅支持源库为文档数据库单节点实例。 使用限制 通用: 整个迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 整个迁移过程中,不允许对正在迁移中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 整个迁移过程中,不支持源数据库主备切换导致数据回滚的情况。 整个迁移过程中,不支持insert、update源库大于16MB的文档。 整个迁移过程中,源数据库不允许手动执行sh.moveChunk()操作,否则将导致迁移数据不一致。 全量迁移阶段: 任务启动和全量数据迁移阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量迁移阶段: 选择集合迁移时,增量迁移过程中不建议对集合进行重命名操作。 为保证迁移的性能,任务增量阶段,会集合级的进行并发回放。特殊地,以下情况只支持单线程写入,不支持并发回放: 集合的索引中有unique key时; 集合属性的capped为true时; 这种情况可能会导致任务时延增高。 数据对比: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 行对比时,集群实例如果存在孤儿文档或者正在进行chunk迁移,会导致返回的行数不准确,对比结果不一致。详细情况可参考MongoDB官方文档。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 源数据库为非集群实例时,增量迁移阶段支持如下操作: 支持数据库(database)新建、删除。 支持文档(document)新增、删除、更新。 支持集合(collection)新建、删除。 支持索引(index)新建、删除。 支持视图(view)新建,删除。 支持convertToCapped、collMod、renameCollection命令。 源库是集群实例时,集群到集群、集群到副本集的全量+增量迁移,全量阶段和增量阶段,不允许对迁移对象做删除操作,否则会导致任务失败。 源库实例类型选择集群的Change Streams(MongoDB 4.0+)模式时,DRS内部迁移使用MongoDB特性Change Streams。使用该模式应注意以下几个方面: Change Streams订阅数据过程会消耗源数据库一定量的CPU,内存资源,请提前做好源数据库资源评估。 受MongoDB Change Streams自身性能影响,如果源库的负载比较大,Change Streams会出现处理速度无法跟上Oplog产生速度,进而导致DRS同步出现时延。 Change Streams目前仅支持drop database,drop collection,rename的DDL,其他DDL均不支持。 不支持DBPointer和DBRef数据类型。 增量阶段单表最多支持10000条/秒左右的迁移速度。 Change Streams模式目前仅支持白名单用户使用。 源库实例类型选择集群的Oplog模式时,DRS会根据“源端分片个数”创建多个子任务。如果选择任务限速,设置的限流值会同步给每个子任务。 对于在源数据库已经存在TTL索引的集合,或者在增量迁移期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证迁移完成之后数据的一致性。 压缩参数block_compressor的取值,根据源库对应集合的stats().wiredTiger.creationString.block_compressor来决定,如果目标库已经存在对应的空集合,则不迁移压缩参数;特殊的,对于不支持的压缩参数,按照目标库实例的net.compression.compressors参数决定。当目标库为DDS 4.2版本时,由于目标库不支持压缩参数的设置,DRS不迁移压缩参数。 对于用户和角色的迁移,DRS冲突策略为忽略,即迁移的用户和角色与目标数据库冲突时,将跳过冲突数据,继续进行后续迁移。 如果源数据库的MongoDB服务不是单独部署的,而是和其他的服务部署在同一台机器,则必须要给源数据库的wiredTiger引擎加上cacheSizeGB的参数配置,建议值设为最小空闲内存的一半。 如果源数据库是副本集,则建议填写所有的主节点和备节点信息,以防主备切换影响迁移任务。如果填写的是主备多个节点的信息,注意所有的节点信息必须属于同一个副本集实例。 如果源数据库是集群,则建议填写多个mongos信息,以防单个mongos节点故障影响迁移任务。如果填写的是多个mongos信息,注意所有的mongos信息必须属于同一个集群。如果是集群的增量迁移任务,建议shard信息填写所有的主节点和备节点,以防主备切换影响迁移任务,并且注意所填写的主备信息必须属于同一个shard。确保填写的所有shard节点信息必须隶属于同一个集群。 创建迁移任务时目标数据库可以设置“只读”或“读写”(根据DDS的内核版本决定的,如果DDS的内核版本不支持设置,DRS不支持该选项),任务创建成功后不能修改。 只读:目标数据库实例将转化为只读、不可写入的状态,迁移任务结束后恢复可读写状态,此选项可有效的确保数据迁移的完整性和成功率,推荐此选项。 读写:目标数据库可以读写,但需要避免操作或接入应用后会更改迁移中的数据(注意:无业务的程序常常也有微量的数据操作),进而形成数据冲突、任务故障、且无法修复续传,充分了解要点后可选择此选项。 用户在使用时需注意,迁移任务和灾备任务的只读设置是互不干涉的,为避免互相影响,迁移任务的目标库被设置为只读后,不能再作为灾备任务的业务数据库或者灾备数据库。灾备任务的业务数据库或者灾备数据库,也不能作为迁移任务的只读目标库。 非全部迁移场景下,为防止drop database操作删除目标库已有的集合,drop database不会同步到目标库。 源库是MongoDB 3.6以下版本(不含3.6)时,执行drop database会导致源库删除集合但目标库没有删除。 源库是MongoDB 3.6及以上版本(含3.6)时,drop database 操作在oplog中会体现为drop database 和drop collection操作,所以目标库也会删除相应集合,不会出现问题。 为了提高迁移的速度,在开始迁移之前,建议在源数据库删掉不需要的索引,只保留必须的索引。在迁移过程中不建议对源库创建索引,如果必须要创建索引,请使用后台的方式创建索引。 为了防止回环,不支持在相同的源和目标库同时启动入云和出云任务。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4版本) ECS自建Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4版本) 其他云上Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4版本) DDS实例(3.2、3.4、4.0、4.2、4.4版本) DDS实例(3.4、4.0、4.2、4.4版本) 说明: 仅支持目标库版本等于或高于源库版本。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 用户赋权参考语句:如连接源数据库的用户需要有admin库的readAnyDatabase权限和config库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表3 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 只支持迁移用户数据和源数据库的账号信息,不支持迁移系统库(如local、admin、config等)和系统集合,如果业务数据在系统库下,则需要先将业务数据移动到用户数据库下,可以使用renameCollection命令进行移出。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持范围分片的情况下maxKey当主键。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。 源库为4.4版本集群时,不支持复合哈希索引,不支持复合哈希分片键。 源库为4.4版本副本集时,不支持复合哈希索引。
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表2 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 不支持迁移系统库(如local、admin、config等)的迁移,用户名和角色需要在目标库手动创建。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。
共100000条