DRS界面信息重叠是什么原因
DRS界面出现信息重叠通常是页面缩放率过小导致的,建议将页面缩放率调整为100%即可显示正常。
目标库读写设置是实例级还是库级
配置迁移任务时,目标数据库实例可以选择设置为“只读”或者“读写”状态。
- 只读:目标数据库整个实例将转化为只读、不可写入的状态,迁移任务结束后恢复可读写状态,此选项可有效的确保数据迁移的完整性和成功率,推荐此选项。
- 读写:目标数据库可以读写,但需要避免操作或接入应用后会更改迁移中的数据(注意:无业务的程序常常也有微量的数据操作),进而形成数据冲突、任务故障、且无法修复续传,充分了解要点后可选择此选项。
只读保护优点是避免用户对正在迁移的数据库或表进行DDL或DML误操作,造成数据不一致,可提高迁移完整性和数据一致性。
- 任务启动后,DRS不支持修改目标数据库状态。
- 待所有设置该目标库为“只读”状态的迁移任务结束后,可恢复读写。
MySQL源库设置了global binlog_format = ROW没有立即生效
使用DRS进行MySQL的迁移时,必须确保源库的binlog_format是ROW格式的,否则就会导致任务失败甚至数据丢失。在源库设置了global级别的binlog_format=ROW之后,还需要中断之前所有的业务连接,因为设置之前的连接使用的还是非ROW格式的binlog写入。
安全设置global级binlog_format=ROW的步骤
步骤 1 通过MySQL官方客户端或者其它工具登录源数据库。
步骤 2 在源数据库上执行全局参数设置命令。
set global binlog_format = ROW;
步骤 3 在源数据库上执行如下命令确认上面操作已执行成功。
select @@global.binlog_format;
步骤 4 您可以通过如下两种方式确保修改后的源库binlog_format格式立即生效。
方法一:
- 选择一个非业务的时间段,中断当前数据库上的所有业务连接。
a. 通过如下命令查询当前数据库上的所有业务连接(所有的binlog Dump连接及当前连接除外)。
show processlist;
b. 中断上面查出的所有业务连接。
- 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。
binlog_format=ROW
方法二:
1.为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。
binlog_format=ROW
2.确保上述配置参数binlog_format添加或修改成功后,选择一个非业务时间段,重启源数据库即可。
binlog_row_image参数设置为FULL没有立即生效
使用DRS进行MySQL迁移时,必须确保源库的binlog_row_image参数设置为FULL,否则就会导致任务失败。在源库设置了binlog_row_image=FULL之后,只对新的session生效,为了关闭旧的session,需选择一个非业务时间段,重启源数据库并重置任务即可。
设置binlog_row_image为FULL步骤
- 如果源数据库为云上RDS实例,可通过RDS管理界面的参数配置,将binlog_row_image修改为FULL,完成修改后重启源数据库并重置任务即可。
- 如果源数据库为本地自建库,请参考如下步骤修复。
a. 登录MySQL源数据库所在服务器。
b. 手动修改my.cnf配置文件,将binlog_row_image参数值修改为FULL后保存。
binlog_row_image=full
c. 为了关闭旧的session,需选择一个非业务时间段,重启源数据库并重置任务。
设置的密码不符合目标库的密码复杂度要求时,如何修改密码强度
操作场景
用户在设置迁移用户密码时,设置的密码不符合目标库的密码复杂度要求,需要按照用户密码复杂度的要求进行密码设置。
操作步骤
以下操作适用于目标数据库为RDS实例的情况。
步骤 1 登录关系型数据库服务控制台。
步骤 2 选择指定目标数据库实例。
步骤 3 单击实例名称。
步骤 4 页面跳转至“基本信息”页签,切换至“参数修改”页面。
步骤 5 在页面右上角搜索框,输入关键字“password”,查看搜索结果。
步骤 6 在步骤5的搜索结果中,对于表7-8列举的参数,需要根据密码复杂度要求进行修改,确保各参数在密码复杂度允许的范围内。
表 密码参数
参数 | 允许值 | 说明 |
---|---|---|
validate_password_length | 0~2,147,483,647 | validate_password插件校验的密码的最小字符数。 |
validate_password_mixed_case_count | 0~2,147,483,647 | 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个大小写字符。 |
validate_password_number_count | 0~2,147,483,647 | 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个数字。 |
validate_password_policy | LOW, MEDIUM, STRONG | validate_password插件执行的密码策略。 |
validate_password_special_char_count | 0~2,147,483,647 | 指定当密码策略为MEDIUM(中)或更高时,为通过validate_password校验,密码至少需包含多少个非字母数字字符。 |
步骤 7 密码复杂度修改完成后,保存修改结果。
步骤 8 返回数据复制服务的“迁移模式”页面,继续执行下一步操作即可。
如何设置MongoDB数据库分片集群的分片键
MongoDB数据库中数据的分片是以集合为基本单位的,集合中的数据通过片键被分成多部分。
对集合进行分片时,您需要选择一个片键 , 片键是每条记录都必须包含的,且建立了索引的单个字段或复合字段,MongoDB数据库按照片键将数据划分到不同的数据块中,并将数据块均衡地分布到所有分片中。为了按照片键划分数据块,MongoDB数据库使用基于范围的分片方式或者基于哈希的分片方式。
表 分片键分类
分片键类型 | 描述 | 使用场景 |
---|---|---|
基于范围的分片键 | 基于范围的分片键是根据分片键值把数据分成一个个邻接的范围,如果没有指定特定的分片类型,则基于范围的分片键是默认的分片类型。 特点:基于范围的分片键对于范围类型的查询比较高效,给定一个片键的范围,分发路由可以很简单地确定哪个数据块存储了请求需要的数据,并将请求转发到相应的分片中。 |
建议在分片键基数较大,频率较低,并且分片键值不是单调变化的情况下使用基于范围的分片键。 |
基于哈希的分片键 | 基于哈希的分片键是指MongoDB数据库计算一个字段的哈希值,并用这个哈希值来创建数据块。 特点:保证了集群中数据的均衡。哈希值的随机性使数据随机分布在每个数据块中,因此也随机分布在不同分片中。 |
如果分片键值的基数较大,拥有大量不一样的值,或者分片键值是单调变化的,则建议使用基于哈希的分片键。 |
集合设置分片并插入文档之后,其中的每个文档的分片的键和值都是不可更改的。如果需要修改文档的分片键,必须要先删除文档,再修改分片键,然后重新插入文档。
说明
分片键不支持数组索引,文本索引和地理空间索引。
基于范围的分片键设置
步骤 1 使用如下命令,开启数据库分片开关。
sh.enableSharding (database)
说明
参数database表示要开启分片集合的数据库。
步骤 2 设置分片键。
sh.shardCollection (namespace, key)
说明
- 参数namespace表示需要进行分片的目标集合的完整命名空间.。
- key表示要设置分片键的索引。
- 如果需要进行分片的目标集合是空集合,可以不创建索引直接进行下一步的分片设置,该操作会自动创建索引。
sh.shardCollection()
- 如果需要进行分片的目标集合是非空集合,则需要先创建索引key。然后使用如下命令设置分片键。
sh.shardCollection()
基于哈希的分片键设置
步骤 1 使用如下命令,开启数据库分片开关。
sh.enableSharding (database)
说明
参数database表示要开启分片集合的数据库。
步骤 2 设置基于哈希的分片键。
sh.shardCollection ( "<database>
.<collection>
", { <shard key>
: "hashed" } , false, {numInitialChunks: 预置的chunk个数})
其中numInitialChunks值的估算方法是:db.collection.stats().size / 1010241024*1024 。
如果集合已经包含数据,则需要先使用如下命令对需要创建的基于哈希的分片键先创建哈希索引:
db.collection.createIndex()
然后再使用如下命令创建基于哈希的分片键:
sh.shardCollection()
扩大带宽是否会对DRS正在进行中的任务产生影响
扩大云连接带宽时需要重建带宽链路,则会导致网络断开,此时是否会对DRS任务产生影响取决于网络断开的时间以及源库IP有没有发生变化。例如针对MySQL引擎而言,如果网络断开1天,而在这1天时间内源库binlog被清理了(MySQL都有binlog清理策略,用户侧自己配置的),就无法进行任务续传,需要重置任务。如果网络中断的时间很短,并且带宽链路更换完成后源库的VPN内的IP地址没有变,则是可以继续续传任务,不会对DRS任务产生影响。
为什么MariaDB和 SysDB下的数据不迁移
由于某些MariaDB的版本把SysDB库作为其系统库(类似于MySQL官方版5.7的sys库),所以DRS默认也将SysDB作为所有MariaDB的系统库来处理(等同于MySQL、information_schema、performance_schema等库)。如果SysDB确实是业务库,您可以通过工单申请处理。
多对一的场景约束及操作建议
因业务需要,不同实例、不同表的数据需要进行合并时,数据复制服务提供的数据迁移支持多对一的场景。
操作建议
- 为避免创建任务过程中出现空间不足问题,建议提前计算源数据库的数据量总和,根据该总和一次性规划目标实例的磁盘空间,剩余磁盘空间需大于源库实际数据量大小的总和(例如“源系统1”数据量大小为1GB,“源系统2”数据量大小为3GB,“源系统3”数据量大小为6GB,则目标实例的剩余磁盘空间应该大于10GB)。
- 对于MySQL引擎,目标端参数的设置需要考虑整体资源的提升,建议使用第一个任务的参数对比功能中“常规参数”的“一键修改”(其中max_connections除外),而“性能参数”应该结合目标端实际规格做相应的手工设置。
- 对于多对一同步任务场景,由于该场景是一个一个任务逐步创建的,后面创建任务时可能会造成已创建任务的同步阻塞,为了避免这个情况发生,请注意创建技巧。每个同步任务都会涉及创建索引步骤,而创建索引时数据库可能会导致Schema锁进而阻塞Schema下的其他表的数据同步,从而导致后创建的任务可能在索引创建阶段对已经同步中的任务阻塞一段时间,我们可以选择在创建同步任务最后设置为“稍后启动”,这样设定在业务低峰期后创建任务,从而避免后创建任务的索引创建对已有任务的同步阻塞。
- 如果涉及表级汇集的多对一同步任务,则不支持DDL,否则会导致同步全部失败。
多对一数据迁移
数据迁移是以整体数据库搬迁为目的,可以实现实例级多对一迁移,不支持源端具有同名的数据库,不支持库名映射。
图 多对一数据迁移
操作流程
创建任务时,为方便多对一任务间的相互识别,请在创建顺序上确保第一个任务进入全量迁移后再创建第二个任务。
图操作流程
数据复制服务的操作日志在哪里查看
数据复制服务的操作日志属于操作审计类日志,用户可以登录到云审计服务(Cloud Trace Service,简称CTS)页面,查看当前用户在Console页面单击的页面操作,主要是涉及任务变更的管理类操作。
请单击界面右上角的用户名,在下拉菜单选择“操作日志”进行查看。
已结束的任务还能重新启动吗
DRS已结束任务无法重新启动。
重置任务和重新创建任务有什么区别
重置功能一般在任务暂停和失败场景使用,DRS重置功能不会清空目标库,客户需要根据自己的需求选择是否清空目标库。任务重置后会重新进行全量同步,不需要再次配置任务。
源库或目标库修改密码后如何操作
DRS任务进行过程中,可能会因为源数据库或者目标数据库修改密码信息,导致连接失败,此时需要通过数据复制服务控制台更新为正确的信息,然后续传任务。
操作步骤
步骤 1 在任务列表选中指定任务,单击任务名称。
步骤 2 进入“基本信息”页签,在“连接信息”模块下,单击“修改连接信息”。
步骤 3 在“修改连接信息”弹出框中对源库和目标库的密码进行更新,更新完成后,单击“确认”即可。
说明在上述操作未结束之前,请不要创建或者启动迁移任务,否则会导致数据不一致。