数据迁移工具chameleon的使用限制

上一篇给大家介绍了使用pgloader进行数据迁移的方法。这次介绍另一种也很常用的数据迁移工具chameleon。

目录

简介

使用限制

1.一般性限制

2. 对象迁移限制

3. 在线迁移限制


简介

chameleon是一个用Python 3编写的MySQL到openGauss的实时复制工具。工具使用mysql-replication库从MySQL中提取row images,这些row images将以jsonb格式被存储到openGauss中。在openGauss中会执行一个pl/pgsql函数,解码jsonb并将更改重演到openGauss。同时,工具通过一次初始化配置,使用只读模式,将MySQL的全量数据拉取到openGauss,使得该工具提供了初始全量数据的复制以及后续增量数据的实时在线复制功能。

使用限制

1.一般性限制

  • 根据mysql-replication的要求,Python 3仅支持3.5~3.7。
  • MySQL列的AUTO_INCREMENT属性,在openGauss侧将通过序列(serial)实现。
  • detach复制副本进程将重置openGauss中的序列(serial),以使数据库独立工作。外键约束也会在detach过程中被创建和验证。
  • 视图、自定义函数、存储过程、触发器支持离线迁移,不支持在线迁移。
  • 自定义type不支持离线和在线迁移。
  • 对于分区表,openGauss无法支持的分区表类型暂不会被迁移。分区表迁移规则见分区表迁移规则
  • 配置文件中,schema mappings中指定的openGauss侧的目的schema名称不能是sch_chameleon。sch_chameleon是工具将自行创建用于辅助复制的schema名称。
  • 列默认值问题。由于列的默认值可以是表达式,部分MySQL的表达式若openGauss不支持的话,离线迁移过程中会报错,导致迁移失败。可通过关闭迁移默认值的方式临时规避该问题。
  • MySQL的unsigned数据类型迁移时,会自动去掉unsigned属性,如MySQL的unsigned int迁移到openGauss时将变成 int,若MySQL中存储的数据超过了int的取值范围,迁移过程中会出错。
  • 工具支持的MySQL版本为 5.5+,openGauss的版本为 2.1.0+。
  • 对于float、double等浮点数,迁移过程中可能由于精度误差,造成MySQL和openGauss中的值不完全一样。
  • 若想迁移到openGauss的表名和视图名的大小写与MySQL一致,MySQL的系统变量lower_case_table_names的值应设置为0。存在大小写的触发器名、自定义函数名、存储过程名迁移前后一致。
  • 对于索引或约束中的表达式,如索引前缀表达式id(5)的写法目前暂会迁移为col_name。
  • 迁移后的索引或者约束如index_name会改写为tbl_name_index_name的带有表名前缀的格式。
  • 由于openGauss内核中哈希分区表不支持切割分区,不支持合成分区,不支持添加和删除分区。列表分区表不支持切割分区,不支持合成分区,故该工具在HASH/LIST分区暂不支持COALESCE和REORGANIZE,在HASH分区不支持ADD/DROP PARTITION。
  • 由于目前openGauss内核的限制,二级分区的分区表可以正常执行 ALTER PARTITION中的ADD/DROP/TRUNCATE功能,COALESCE/REORGANIZE/EXCHANGE暂不支持。
  • 对于HASH分区及KEY分区表在线迁移,由于MySQL和openGauss中hash分区内核实现不同,迁移后openGauss数据存放分区与MySQL中数据存放的分区存在差异。
  • 对于二级分区表,openGauss不支持一级和二级分区采用相同的键值。

2. 对象迁移限制

  • chameleon支持复制数据库对象是基于openGauss-tools-sql-translator仓库进行数据库对象的翻译,可前往该仓库了解数据库对象的翻译情况。
  • 目前,要迁移的数据库对象体内若存在commit或rollback无法解析翻译,将迁移失败。
  • 目前MySQL存储过程中的NO SQL、READS SQL DATA、MODIFIES SQL字段和自定义函数中的CONTAINS SQL、NO SQL、READS SQL DATA、MODIFIES SQL DATA、SECURITY字段无法解析,无法将这些openGauss不支持的参数屏蔽且warning提示信息。而是直接报错,迁移失败。

3. 在线迁移限制

在线DDL仅支持部分语句,主要包括 CREATE/DROP/RENAME/TRUNCATE TABLE, ALTER TABLE DROP/ADD/CHANGE/MODIFY, DROP PRIMARY KEY, CREATE/DROP INDEX, ALTER TABLE ADD FOREIGN KEY/UNIQUE INDEX/INDEX, ALTER TABLE DROP FOREIGN KEY/INDEX/CONSTRAINT, ALTER TABLE ADD/DROP/TRUNCATE/COALESCE/EXCHANGE/REORGANIZE PARTITION。

添加/删除字段

ALTER TABLE {table_name} ADD/DROP

 修改字段数据类型、名称

ALTER TABLE {table_name} CHANGE/MODIFY

 删除主键约束

ALTER TABLE {table_name} DROP PRIMARY KEY

删除表

DROP TABLE

重命名表

RENAME TABLE

截断表

TRUNCATE TABLE

创建表

CREATE TABLE

在线创建索引

1.CREATE [UNIQUE] INDEX index_name [index_type] ON tbl_name (key_part,...) [index_option]

2.ALTER TABLE ADD {INDEX | KEY} [index_name] [index_type] (key_part,...) [index_option]

index_type: USING {BTREE | HASH} key_part: {col_name [(length)] | (expr)} [ASC | DESC] index_option: {index_type | COMMENT 'string'}

在线删除索引

1.DROP INDEX index_name ON tbl_name

2.ALTER TABLE tbl_name DROP {INDEX | KEY} index_name

在线创建外键

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name,...) reference_definition

在线删除外键

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

在线创建唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [index_name] [index_type] (key_part,...) [index_option] ...

 在线删除唯一约束

ALTER TABLE tbl_name DROP {CHECK | CONSTRAINT} symbol

在线创建分区表

CREATE TABLE tbl_name [(create_definition,...)] [table_options] [partition_options]

在线 alter 分区表 ADD PARTITION

ALTER TABLE tbl_name ADD PARTITION (partition_definition)

在线 alter 分区表 DROP PARTITION

ALTER TABLE tbl_name DROP PARTITION partition_names

 在线 alter 分区表 TRUNCATE PARTITION

ALTER TABLE tbl_name TRUNCATE PARTITION {partition_names | ALL}

在线 alter 分区表 COALESCE PARTITION

ALTER TABLE tbl_name COALESCE PARTITION number

在线 alter 分区表 EXCHANGE PARTITION

ALTER TABLE tbl_name EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION]

在线 alter 分区表 REORGANIZE PARTITION

ALTER TABLE tbl_name REORGANIZE PARTITION partition_names INTO (partition_definitions)

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Opengauss Chameleon是一种兼容MySQL协议的数据库引擎,它是基于Opengauss数据库开发的。Opengauss是华为公司自主研发的一个开源数据库,与传统的关系型数据库相比,Opengauss具有更高的性能和更好的扩展性。 Opengauss Chameleon使用可以帮助用户在原有的MySQL应用上,无需修改代码即可迁移至Opengauss数据库中。该引擎在逻辑上实现了MySQL协议,可以直接处理来自MySQL客户端的请求,无需通过中间件进行转换。这样一来,用户可以在部署MySQL应用时,将数据库引擎替换为Opengauss Chameleon,实现无缝的迁移。 Opengauss Chameleon内部使用了Opengauss的存储引擎,支持了很多常见的MySQL特性,如事务、锁机制、索引等。通过Opengauss Chameleon,用户可以在不改变现有应用的情况下,享受到Opengauss数据库的高性能和高可靠性。 Opengauss Chameleon的安装和配置相对简单,用户只需要下载相应的软件包,并按照官方文档进行安装和配置即可。安装完成后,用户可以在MySQL客户端中连接到Opengauss Chameleon,然后像连接MySQL数据库一样进行操作。 总结来说,Opengauss Chameleon使用可以让用户在不改动现有应用的情况下,将MySQL应用迁移到Opengauss数据库上。它提供了MySQL协议的兼容性和Opengauss本身的高性能,方便用户享受到Opengauss数据库的优势。使用Opengauss Chameleon,用户可以更好地利用现有的应用和数据库资源,提升系统性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值