数据传输服务 账号迁移

这篇说说腾讯云DTS账号迁移功能,支持MySQL与TDSQL-C MySQL间迁移用户信息,包括迁移检查(完整/降权/不迁移)、冲突策略(跳过/仅同步权限/完全覆盖)及操作步骤。 账号迁移检查:完整迁移满足要求,降权迁移仅迁移数据库与全局权限,不满足要求则不迁移。 冲突策略:跳过不迁移、仅同步权限、完全覆盖(以源端为准覆盖目标端)。 操作步骤:开启迁移并选择账号,配置冲突策略,校验迁移结果。

相关产品
数据传输服务 产品页,含版本规格、价格与购买入口。

一、操作场景

本场景指导用户如何将源库的用户信息迁移到目标库中。

二、适用场景

目前支持账号迁移的链路:

·MySQL > MySQL

·MySQL > TDSQL-C MySQL

·TDSQL-C MySQL > TDSQL-C MySQL

三、注意事项

1. DTS 进行账号迁移时,会对源库的账号信息进行检查,对满足要求的账号进行迁移,不满足的不迁移或者降权迁移,账号检查结果分类如下。

·完整迁移:账号信息满足检查要求,可以正常迁移。

·降权迁移:如果部分权限满足检查要求,则仅对满足的权限进行迁移,不满足的不迁移。

·DTS 仅支持对数据库级别和全局级别的权限迁移,不支持其它级别如表级、存储过程级别、列级。例如,源库中一个账号同时具有数据库级别和表级别的权限,则仅迁移此账号中的数据库级别的权限到目标库。

·执行迁移任务的账号在目标库中没有对应权限(仅对数据库级别和全局级别),不支持迁移。例如,执行迁移任务的账号在目标库没有删除权限,则源库中账号的删除权限不支持迁移。

·不进行迁移:账号信息不满足要求,不支持迁移,详情参见 约束限制。

2. 如果源库和目标库存在相同的账号信息(user/host 相同),DTS 支持通过账号冲突策略灵活处理冲突账号,用户可在配置迁移任务时选择不同的账号冲突策略。

·账号冲突策略:

·跳过该账号(默认):不迁移该冲突账号的任何信息,目标端密码、权限、属性均不变。

·仅同步权限:仅迁移在目标端已存在账号的 GRANT 权限信息,保留目标端原密码和账号属性不变。

·完全覆盖:以源端信息为准,完全覆盖目标端已存在账号,包括密码、权限和属性。

·源库存在的待迁移账号,与执行迁移任务的账号信息一致,则源库账号的以下属性会覆盖到目标库,可能会对迁移任务性能造成影响:MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR、MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS、PASSWORD EXPIRE 状态、ACCOUNT LOCK 状态。

·账号资源限制属性(MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR、MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS)的覆盖规则:仅当源端账号对应属性值非0时才覆盖目标端,源端账号对应属性值为0(表示无限制)时不覆盖目标端原值。

·源库存在的待迁移账号,与执行迁移任务账号的 user/host 相同,但密码不相同时,则校验任务会报错,需要将密码修改为一致后再执行迁移任务。

3. 账号迁移不受库表映射的影响。

4. 账号迁移仅在全量阶段进行一次迁移,先迁移账号,再迁移全量的库表结构和数据;后续增量阶段源库新增的账号不会再迁移。

5. AWS 为源的迁移链路中,用户如果选择迁移账号,需要手动在目标端安装 auth_socket 插件。

四、约束限制

1. 阿里云实例的系统账号不支持迁移,包括"replicator"、"aurora"、"aurora_proxy"、"root"、"aliyun_root"。

2. 阿里云实例进行账号迁移时,DTS 先从 mysql.user 表中获取用户数据,如果没有 mysql.user 表则从 mysql.user_view 中获取,如果 mysql.user_view 中没有密码列信息,则无法进行账号迁移。

3. MySQL 8.0 版本特有限制。

·源库为 MySQL 8.0 时,不支持动态权限的账号迁移。

·目标库为 MySQL 8.0 时,如果目标库存在该账号的存储过程,因为 DTS 当前不支持迁移存储过程,则 CREATE USER 语句会报错。这种情况需要先删除目标端的对应账号,然后重新执行迁移任务。

·目标库为 MySQL 8.0 时,待迁移账号在源库有 SYSTEM_USER 权限,但执行迁移任务的账号没有 SYSTEM_USER 权限,则该类账号不支持迁移。

4. 目标库为 MySQL 5.5、5.6 时,如果执行迁移任务的账号无 with grant option 权限,则不支持账号迁移。

5. 源库中创建的角色会按照用户的逻辑被迁移,但如果用户拥有角色的权限时,该用户不进行迁移。

6. 不支持迁移系统账号,如 mysql。

7. 不支持迁移 Proxy User(代理用户)。

8. 如果源库账号中存在特殊字符(如16进制0x00符号),可能会导致账号迁移任务报错。

五、步骤一:开启账号迁移并配置迁移账号

1. 在 数据迁移任务 的设置迁移选项及选择迁移对象页面,勾选是否迁移账号。

2. 开启账号迁移后,在待迁移账号详情区域,执行以下操作:

注意:说明:

注意:账号迁移仅在全量阶段进行一次迁移,先迁移账号,再迁移全量的库表结构和数据;后续增量阶段源库新增的账号不会再迁移。建议在迁移配置和正式迁移阶段,不做任何账号变更操作。

·选择迁移账号:通过勾选框选择需要迁移的账号,支持全选。未勾选的账号不会被迁移。

·修改目标端账号名称:账号名称格式为user@host,其中user@部分为只读,host部分支持编辑修改。

·刷新账号列表:单击待迁移账号详情右侧的刷新图标重新加载列表。

六、步骤二:配置账号冲突策略

在账号冲突策略选项中,选择当目标端存在同名账号时的处理策略。支持的策略如下:

·跳过该账号(默认):若目标端已存在同名账号,则不迁移源端同名账号的任何信息,目标端密码、权限、属性均不变。

·仅同步权限:若目标端已存在同名账号,则仅迁移在目标端已存在账号的 GRANT 权限信息,保留目标端原密码和账号属性不变。实际可迁移的权限范围受这篇约束限制中的规则限制。

·完全覆盖:若目标端已存在同名账号,则以源端信息为准,完全覆盖目标端已存在账号,包括密码、权限和属性。实际可迁移的权限范围受这篇约束限制中的规则限制。

注意:说明:

七、步骤三:校验账号迁移结果

配置完成后进入校验步骤,校验任务会检查源库的账号信息,并展示账号迁移校验结果统计。

单击查看详情,查看详细的账号迁移结果。

·完整迁移:账号信息满足检查要求,可以正常迁移。

·降权迁移:如果部分权限满足检查要求,则仅对满足的进行迁移,不满足的不迁移。

·不进行迁移:账号信息不满足检查要求,不支持迁移,具体原因如下:

·阿里云数据库的系统用户,或者无法获取到用户账号密码信息的场景。

·MySQL 8.0 的动态权限账号;源库 MySQL 8.0 中待迁移账号有 SYSTEM_USER 权限,但执行迁移任务的账号没有 SYSTEM_USER 权限。

·目标库为 MySQL 5.5、5.6 时,执行迁移任务的账号没有 grant 权限。

·系统账号,如 mysql、sqlserver 等。

·Proxy User(代理用户)。

·DTS 无法解析等系统问题。

赞 (0)
上一篇 4天前
下一篇 4天前