本文介绍了将DRDS模式数据库转换为AUTO模式的方法。

背景信息

PolarDB-X中,AUTO模式数据库和DRDS模式数据库可以共存于一个实例中。如果您的业务目前正在使用DRDS模式数据库,但需要使用AUTO模式数据库的一些特性,您可以将当前的DRDS模式数据库转换为AUTO模式。转换数据库模式的语法,请参见将DRDS模式数据库转换为AUTO模式数据库

步骤一:确定待转换的表

您需要确定待转换数据表的范围,建议您只对有转换必要性的表进行转换。

AUTO模式数据库的新特性为自动分区、热点分裂、兼容标准的MySQL分区表语法、分区调度、TTL表等。您需要结合当前的业务场景,分析哪些表需要用到AUTO模式的哪些新特性,从而划定待转换的表的范围(PolarDB-X支持整个数据库的转换或者部分表的转换)。

在确定待转换表的范围时,您可以通过以下文档了解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)。

重要 您需要在业务停机的状态下进行此项操作,因为转换过程中源DRDS库将变为只读状态,源DRDS库的DDL、DML都将被禁止。
  • 如果步骤三中没有需要调整的表,您可以执行以下命令完成转换:
    create database new_auto_db as old_drds_db;
  • 如果步骤三中存在一些需要调整的表,例如表tb4tb5。转换时您可以先使用create database like语句将所有的表结构创建完成(tb4tb5需要单独手动创建),然后统一迁移数据。
    # 对除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:不支持。