更新时间:2025-07-07 GMT+08:00
使用DRS迁移多租户数据
操作场景
开启多租户管理与资源隔离功能后,DRS迁移可以迁移所有租户下的数据。
使用须知
- 若源实例和目标实例多租开关状态不一致,会预检查失败。
- 源实例和目标实例的版本或规格不一致时,迁移成功后,源实例的资源配置不再适用目标实例。建议用户按照目标实例的规格,使用资源配置语法重新调整目标实例租户的资源配置。
- DRS灾备同步场景,不支持使用目标实例IP+端口场景进行迁移。如果选择IP+端口模式,租户元数据将无法迁移到目标实例上。
- 推荐源端和目标端均为2.0.60.241200版本及其以上使用DRS迁移功能,其他版本无法保证多租功能正常提供服务。
- 若源实例和目标实例多租开关打开,由于多租元数据表中存在初始化配置,会在预检查阶段上报提醒,告知用户__taurus_sys__库下存在非空表。用户可根据实际情况清理该库下非空表的内容。如果不清理,则会在DRS灾备同步过程中保留非空表中的数据,可能会造成多租功能无法使用。具体清理步骤请参考常见问题。
迁移方案
常见问题
如何清理__taurus_sys__库下非空表数据?
- 清理普通租户下的用户,数据库以及表空间。示例如下:
- 执行SQL语句,查询普通租户下是否仍有用户存在。
select user,host from mysql.user where instr(user, '@') > 0
存在用户,执行SQL语句,删除对应用户。drop user 'user_name@tenant_name'@'%'
- 执行SQL语句,查询普通租户下是否仍有数据库存在。
select * from SCHEMATA where instr(SCHEMA_NAME, '@') > 0
如果存在普通租户下的数据库,执行SQL语句,删除对应数据库。
drop user 'db_name@tenant_name'@'%'
- 执行SQL语句,查询普通租户下有哪些存量数据库。
select * from information_schema.MT_tenant_DB
执行SQL语句,将存量数据库回收到系统租户下。
alter database 'db_name' tenant = ``
- 执行SQL语句,查询普通租户创建的表空间。
select * from information_schema.innodb_tablespaces where instr(NAME, '@') > 0
执行SQL语句,删除对应的表空间。
drop tablespace tbs_name
- 执行SQL语句,查询普通租户下是否仍有用户存在。
- 删除普通租户(用户级资源配置会自动删除),删除对应的租户级资源配置。示例如下:
drop tenant tenant_name;
drop resource_config config_name;
- 删除系统租户下的用户级资源配置。示例如下:
CALL dbms_resource_manager.clear_all_configs();