上一篇给大家介绍了使用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,使得该工具提供了初始全量数据的复制以及后续增量数据的实时在线复制功能。
在线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)