本文介绍了将DRDS模式数据库转换为AUTO模式的方法。
背景信息
PolarDB-X中,AUTO模式数据库和DRDS模式数据库可以共存于一个实例中。如果您的业务目前正在使用DRDS模式数据库,但需要使用AUTO模式数据库的一些特性,您可以将当前的DRDS模式数据库转换为AUTO模式。转换数据库模式的语法,请参见将DRDS模式数据库转换为AUTO模式数据库。
步骤一:确定待转换的表
您需要确定待转换数据表的范围,建议您只对有转换必要性的表进行转换。
AUTO模式数据库的新特性为自动分区、热点分裂、兼容标准的MySQL分区表语法、分区调度、TTL表等。您需要结合当前的业务场景,分析哪些表需要用到AUTO模式的哪些新特性,从而划定待转换的表的范围(PolarDB-X支持整个数据库的转换或者部分表的转换)。
在确定待转换表的范围时,您可以通过以下文档了解AUTO模式数据库的相关信息:
- AUTO模式数据库与DRDS模式数据库的区别,请参见AUTO模式数据库与DRDS模式数据库;
- AUTO模式数据库的新特性,请参见AUTO模式核心特性及典型场景。
步骤二:不加锁转换,获得测试库
建议您初步做一次不加锁的转换,以得到一个测试库。在转换语法中设置lock=false
,转换过程中将不会对源DRDS库加锁,不会对您的业务造成影响。您可以对全数据库进行转换,也可以只转换数据库内的部分表。
lock=false
,否则转换过程会加读锁,将导致源DRDS库变成只读状态。语法
# 对全数据库进行转换
create database new_auto_db as old_drds_db lock=false;
# 仅转换库内的部分表
create database new_auto_db as old_drds_db lock=false include=tb1, tb2, tb3;
create database as
语法会进行表结构的转换和数据的迁移,通过此步骤,您也可以了解到转换过程的耗时(耗时与数据量有关),这可以为正式转换提供时间参考。
步骤三:功能与性能测试,调整部分表的分区策略
PolarDB-X自动转换得到的AUTO模式数据库可以基本满足您的业务需求,但基于性能考虑,建议您检查转换后的表的分区策略,对个别表做出更符合业务需求的调整。您可以人工检查或执行性能压测,对需要调整的表重新设计满足您业务需求的分区策略。
PolarDB-X提供的变更表类型及分区策略(AUTO模式)语法,支持将表的分区策略调整为自定义的分区策略,调整后可重新压测以检验其是否符合您的性能预期。
步骤四:停机,正式转换
正式转换时在转换语法中需要设置lock=true
,或者不设置lock参数(lock参数的默认值为true)。
- 如果步骤三中没有需要调整的表,您可以执行以下命令完成转换:
create database new_auto_db as old_drds_db;
- 如果步骤三中存在一些需要调整的表,例如表
tb4
、tb5
。转换时您可以先使用create database like
语句将所有的表结构创建完成(tb4
、tb5
需要单独手动创建),然后统一迁移数据。# 对除tb4和tb5以外的表进行表结构的转换 create database new_auto_db like old_drds_db exclude=tb4,tb5; # 待转换结束后,在目标AUTO库中,按照您在步骤三中调整过的分区策略手动创建表tb4, tb5 use new_auto_db; create table tb4 (...) partition by ... create table tb5 (...) partition by ... # 迁移所有的表数据,从源DRDS库迁移至目标AUTO库(注意,此步骤会使源DRDS库变为只读状态) CREATE DATABASE new_auto_db as old_drds_db create_tables=false;
FAQ
- Q:转换过程必须停机吗?是否有不用停机就实现转换的办法?
A:目前
create database as
语句仅支持停机转换(即迁移过程会对源DRDS库加读锁)。如您需要在线转换,可尝试先使用create database like
语句迁移表结构,再使用DTS工具进行数据迁移。 - Q:支持对转换过程进行管理吗,如暂停、取消、查看进度等?
A:支持。可以通过DDL管理语法进行运维。
- Q:转换是原地的吗?转换结束后源DRDS库还在吗?
A:不是原地的,转换过程中会参照源DRDS库建立一个新的AUTO库,转换结束后源DRDS库仍可正常使用。
- Q:仅查看某个表从DRDS模式到AUTO模式的转换结果,但不创建该表、迁移该表的数据,是否支持?
A:支持。在转换语法中设置
dry_run=true
,将只用于展示DRDS模式下的表结构如何转换为AUTO模式的表结构。不会创建任何表结构,也不会复制表数据。 - Q:是否支持将AUTO模式数据库转换为DRDS模式?
A:不支持。