云服务器内容精选

  • 响应参数 状态码: 200 表7 响应Body参数 参数 参数类型 描述 all_counts Integer 总数。 results Array of objects 迁移用户信息。 详情请参见表8 表8 results字段数据结构说明 参数 参数类型 描述 job_id String 任务ID。 is_global_password String 是否使用全局密码。 message String 错误码。 user_list Array of objects 用户列表数据。 详情请参见表9。 roles_list Array of objects 角色列表数据。 详情请参见表10。 is_success Boolean 是否成功。 表9 user_list字段数据结构说明 参数 参数类型 描述 id String 用户账号ID。 account String 账号。 comment String 说明。 is_transfer Boolean 是否迁移。 privileges Array of strings 权限。 password String 密码。 roles Array of strings 拥有的角色。 selected Boolean 是否选择。 no_privileges String 无法同步的用户权限。 parent_account String 父用户。 no_parent_account String 无法同步父子关系的父用户。 表10 roles_list字段数据结构说明 参数 参数类型 描述 role String 角色。 comment String 说明。 is_transfer Boolean 是否迁移。 privileges String 权限。 inherits_roles Array of strings 继承的角色。 selected Boolean 是否选择。
  • 请求示例 指定任务设置需要迁移的用户 https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/batch-update-user { "jobs": [{ "is_migrate_user": true, "is_set_password": false, "job_id": "36c368d7-c03f-46e1-839a-b5c5bddjb105", "list": [{ "account": "admin.testuser2", "comment": "", "id": "admin.testuser2", "is_set_password": true, "is_transfer": true, "password": null, "privileges": null, "roles": ["admin.clusterAdmin"], "selected": true }], "password": "", "user_roles": [{ "comment": "", "inherits_roles": [ "admin.roletest1", "admin.roletest3", "fastunit.roletest1" ], "is_transfer": true, "privileges": "[{u'resource': {u'cluster': True}, u'actions': [u'addShard']}, {u'resource': {u'db': u'fastunit', u'collection': u'coll'}, u'actions': [u'find', u'insert', u'remove', u'update']}, {u'resource': {u'db': u'mgo', u'collection': u'mycollection3'}, u'actions': [u'insert', u'remove', u'update']}, {u'resource': {u'db': u'', u'collection': u''}, u'actions': [u'find']}, {u'resource': {u'db': u'admin', u'collection': u''}, u'actions': [u'find']}]", "role": "admin.roletest4", "selected": true }] }] } 指定任务设置不迁移用户 https://{endpoint}/v3/0549a6a31000d4e82fd1c00c3d6f2d76/jobs/batch-update-user { "jobs" : [ { "is_migrate_user" : false, "is_set_password" : false, "job_id" : "a281f62f-4631-45d6-a2d3-679a9f4jb105" } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Content-Type 是 String 指定类型为application/json。 缺省值:application/json X-Auth-Token 是 String 从 IAM 服务获取的用户Token。 X-Language 否 String 请求语言类型。 缺省值:en-us 取值: en-us zh-cn 表3 请求Body参数 参数 是否必选 参数类型 描述 jobs 是 Array of objects 批量更新迁移用户请求列表。 详情请参见表4。 表4 jobs字段数据结构说明 参数 是否必选 参数类型 描述 job_id 是 String 任务ID。 password 否 String 全局密码。 list 否 Array of objects 用户迁移信息,迁移用户时必填。 详情请参见表5。 user_roles 否 Array of objects 角色迁移信息,迁移用户时必填。 详情请参见表6。 is_set_password 是 Boolean 是否设置密码。 is_migrate_user 是 Boolean 是否迁移用户。 is_sync_object_privilege 否 Boolean 是否同步权限,不填默认为false,PostgreSQL同步使用。 表5 list字段数据结构说明 名称 是否必选 参数类型 说明 id 是 String 用户ID。 account 是 String 用户。 comment 否 String 说明。 is_transfer 是 Boolean 是否支持迁移。 privileges 否 String 权限列表。 password 否 String 密码。 is_set_password 否 Boolean 是否重置密码。 roles 是 Array of strings 角色。 selected 是 Boolean 是否选择。 表6 user_roles字段数据结构说明 名称 是否必选 参数类型 说明 role 是 String 角色。 comment 否 String 说明。 is_transfer 是 Boolean 是否支持迁移。 privileges 是 String 权限。 inherits_roles 否 Array of strings 继承角色列表。 selected 否 Boolean 是否选择,不填默认不迁移。
  • 如何判断数据迁移任务可以停止 您可参考以下方法,确认任务是否可以结束。结束之前您需要确认完成以下几点: 请您确认至少在业务低峰期有过一次完整的数据对比。 完成业务割接。 先中断业务(如果业务负载非常轻,也可以尝试不中断业务)。 在源数据库端执行如下语句(此处以MySQL为例),并观察在1-5分钟内若无任何新会话执行SQL ,则可认为业务已经完全停止。 show processlist; 上述语句查询到的进程列表中,包括DRS迁移实例的连接,您需要确认除DRS迁移实例的连接外无任何新会话执行SQL,即可认为业务已经完全停止。 同步时延为0,并稳定保持一段时间;同时,您可以使用数据级对比功能,进行割接前的最后一次数据级对比,耗时可参考之前的对比记录。 如果时间允许,则选择全部对比。 如果时间不允许,则推荐对比活跃表,关键业务表,第二步对比多次存在差异的表等。 确定系统割接时机,业务系统指向目标数据库,业务对外恢复使用。 结束迁移任务,该操作仅删除了迁移实例,迁移任务仍显示在任务列表中,您可以进行查看或删除。 父主题: 实时迁移
  • 解决方案 方法一: 在目标库执行对应SQL语句,将对应列的字符排序规则修改为utf8mb4_0900_ai_ci。例如,将表test_collation_1 的c1列的字符排序规则修改为utf8mb4_0900_ai_ci: ALTER TABLE test_collation_1 MODIFY COLUMN c1 VARCHAR(16) COLLATE utf8mb4_0900_ai_ci; 修改完成后,在任务列表中,单击任务对应操作列的“续传”,重新提交任务。 方法二: 修改源库表结构,将表中带有collate utf8mb4_general_ci 的列都去掉。 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。 方法三: 在目标库执行对应SQL语句,将目标库字符排序规则修改为utf8mb4_0900_ai_ci SET GLOBAL default_collation_for_utf8mb4='utf8mb4_general_ci'; 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。
  • 解决方案 通过MySQL官方客户端或者其它工具登录源数据库。 在源数据库上执行全局参数设置命令。 set global binlog_format = ROW; 在源数据库上执行如下命令确认上面操作已执行成功。 select @@global.binlog_format; 您可以通过如下两种方式确保修改后的源库binlog_format格式立即生效。 方法一: 选择一个非业务的时间段,中断当前数据库上的所有业务连接。 通过如下命令查询当前数据库上的所有业务连接(所有的binlog Dump连接及当前连接除外)。 show processlist; 中断上面查出的所有业务连接。 在上述操作未结束之前,请不要创建或者启动迁移任务,否则会导致数据不一致。 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。 binlog_format=ROW 方法二: 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(my.ini或my.cnf等)中添加或修改配置参数binlog_format并保存。 binlog_format=ROW 确保上述配置参数binlog_format添加或修改成功后,选择一个非业务时间段,重启源数据库即可。
  • 场景描述 全量迁移或同步期间DRS任务报错,日志提示信息:service DATAMOVE failed, cause by: apply event=[type=table_data, batch_index_in_shard=1, table_schema=%s, table_name=%s, record_num=5] occur error, msg=apply data of table=`%s`.`%s` failed: Unknown column '%s' in 'field list'。
  • 迁移准备 权限准备: 当使用 DRS 将E CS 自建MongoDB数据库的数据迁移到本云DDS实例时,在不同迁移类型情况下,对源数据库和目标数据库的账号权限要求如表2: 表2 迁移账号权限 迁移类型 全量迁移 全量+增量迁移 源数据库 副本集:连接源数据库的用户需要对待迁移库有read权限。 单节点:连接源数据库的用户需要对待迁移库有read权限。 集群:连接源数据库的用户需要对待迁移库有read权限,对config数据库有read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库的用户需要对admin数据库的系统表system.users,system.roles有读权限。 副本集:连接源数据库的用户需要对待迁移库有read权限,对local数据库有read权限。 单节点:连接源数据库的用户需要对待迁移库有read权限,对local数据库有read权限。 集群:连接源数据库mongos节点的用户需要对待迁移库有read权限,对config数据库有read权限, 连接源数据库分片节点的用户需要对admin数据库有readAnyDatabase权限,对local数据库有read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库的用户需要对admin数据库的系统表system.users,system.roles有读权限。 目标数据库 连接目标数据库的用户需要对admin数据库有dbAdminAnyDatabase权限,对目标数据库有readWrite权限。对于目标数据库是集群的实例,迁移账号还要有对config数据的读权限 源数据库权限设置: 需要确保源数据库MongoDB的账号权限具备表2的要求。若权限不足,需要在源数据库端开通高权限的账号。 目标数据库权限设置: 本云DDS实例使用初始账号即可。 网络准备: 源数据库所在的region需要和目标DDS所在的region保持一致。 源数据库可以与目标DDS实例在同一个VPC,也可以不在同一个VPC。 当不在同一个VPC的时候,要求源数据库实例和目标端DDS实例所处的子网处于不同网段,此时需要通过建立对等连接实现网络互通。 具体操作请参见《虚拟私有云用户指南》中“VPC对等连接”章节。 当在同一VPC的时候,网络默认是互通的。 安全规则准备: 同一VPC场景下,默认网络是连通的,不需要单独设置安全组。 不同VPC场景下,通过建立对等连接就可以实现网络互通,不需要单独设置安全组。 其他事项准备: 由于迁移过程不会迁移MongoDB数据库的用户信息以及相关参数,需要自行将上述信息导出后,手动添加到目标DDS中。
  • 资源规划 表1 资源规划 类别 子类 规划 备注 VPC VPC名称 vpc-dds 自定义,易理解可识别。 所属Region 华南-广州 选择和自己业务区最近的Region,减少网络时延。 可用区 可用区一 - 子网网段 10.0.0.0/24 子网选择时建议预留足够的网络资源。 子网名称 subnet-default 自定义,易理解可识别。 ECS ECS名称 ecs-mongodb 自定义,易理解可识别。 规格 s6.xlarge.2 4vCPUs|8GiB 本示例中选择的规格。 实际选择的规格需要结合业务场景选择,请参考弹性云服务器的实例规格。 操作系统 CentOS 7.6 64 - 系统盘 通用型SSD 40GiB - 数据盘 超高IO 100GiB - 弹性IP 现在购买 因为迁移任务会选择“公网网络”,因此此处需要购买弹性IP。 DDS DDS 实例名 dds-test 自定义,易理解可识别。 数据库引擎 DDS - 兼容的数据库版本 4.4 - 可用区类型 单可用区 - 可用区 可用区一 - 性能规格 增强Ⅱ型 - CPU架构 X86 8 vCPUs | 32GB - DRS迁移任务 迁移任务名 DRS-dds 自定义。 源数据库引擎 MongoDB 本示例中源数据库为自建MongoDB,即在华为云弹性云服务器上安装社区版MongoDB。 目标数据库引擎 DDS 本示例中目标数据库为华为云DDS实例。 网络类型 公用网络 本示例中采用公用网络。