账号迁移

最近更新时间:2024-09-02 14:30:31

我的收藏

操作场景

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

适用场景

当前支持账号迁移的链路为 MySQL > MySQL、MySQL > TDSQL-C 的数据迁移。

注意事项

1. DTS 进行账号迁移时,会对源库的账号信息进行检查,对满足要求的账号进行迁移,不满足的不迁移或者降权迁移,账号检查结果分类如下。
完整迁移:账号信息满足检查要求,可以正常迁移。
降权迁移:如果部分权限满足检查要求,则仅对满足的进行迁移,不满足的不迁移。
DTS 仅支持对数据库级别和全局级别的权限迁移,不支持其它级别如表级、存储过程级别、列级。例如,源库中一个账号同时具有数据库级别和表级别的权限,则仅迁移此账号中的数据库级别的权限到目标库。
执行迁移任务的账号在目标库中没有对应权限(仅对数据库级别和全局级别),不支持迁移。例如,执行迁移任务的账号在目标库没有删除权限,则源库中账号的删除权限不支持迁移。
不进行迁移:账号信息不满足要求,不支持迁移,详情参见 约束限制
2. 如果源库和目标库存在相同的账号信息,则 DTS 以源库信息为准进行融合,并覆盖目标库中的账号信息。
源库和目标库存在相同 user、host 账号,但密码不同,账号迁移后,目标库账号的密码会被源端密码覆盖,用于执行迁移任务的账号除外。
源库存在的待迁移账号,与执行迁移任务的账号信息一致,则源库账号的以下属性会覆盖到目标库,可能会对迁移任务性能造成影响:MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR、MAX_CONNECTIONS_PER_HOUR、MAX_USER_CONNECTIONS、PASSWORD EXPIRE 状态、ACCOUNT LOCK 状态。
源库存在的待迁移账号,与执行迁移任务账号的 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. 校验任务中会检查源库的账号信息,并对符合要求的账号进行迁移。

3. 单击查看详情,查看详细的账号迁移结果。
完整迁移:账号信息满足检查要求,可以正常迁移。
降权迁移:如果部分权限满足检查要求,则仅对满足的进行迁移,不满足的不迁移。
不进行迁移:账号信息不满足检查要求,不支持迁移,具体原因如下:
阿里云数据库的系统用户,或者无法获取到用户账号密码信息的场景。
MySQL 8.0 的动态权限账号;源库 MySQL 8.0 中待迁移账号有 SYSTEM_USER 权限,但执行迁移任务的账号没有 SYSTEM_USER 权限。
目标库为 MySQL 5.5、5.6 时,执行迁移任务的账号没有 grant 权限。
系统账号,如 mysql、sqlserver 等。
Proxy User(代理用户)。
DTS 无法解析等系统问题。