-
(1)介绍
官方介绍 chameleon 是一个用 Python3 编写的将 MySQL 迁移至 openGauss 的实时复制工具,支持初始全量数据的复制以及后续增量数据的实时在线复制功能。chameleon 通过一次初始化配置,使用只读模式,将 MySQL 的数据全量拉取到 openGauss。支持在同一快照下,表间数据并行迁移。全量迁移支持的功能:支持表及表数据、视图、触发器、自定义函数、存储过程的全量迁移
个人理解 也就是说,将数据库中的数据通过工具全量复制到 openGauss 里面,这是最简单易懂的解释。
和上图其实原理很类似,就是对大量数据进行批量复制,从 MySQL 复制到 openGauss,只不过中间开始利用工具进行操作。
-
(2)优势
官方解释: 基于 sysbench 测试模型,在 Kunpeng-920 2p 服务器上,MySQL 数据库 10 张表单表数据量在 300 万以上时,chameleon 使用 10 并发迁移数据至 openGauss,整体全量迁移性能可达 300M/S 以上。
个人理解 也就是说,在大量数据的迁移的时候,通常会出现两种问题难以解决,第一数据量过于庞大,第二迁移速度太慢,openGauss 很好的解决了这两点问题。
-
(3)chameleon 工具
pip3 install ./chameleon-1.0.0-py3-none-any.whl
(安装 chameleon 命令) -
(4)安装
git clone git@gitee.com:opengauss/openGauss-tools-chameleon.git #(下载源码)
python3 -m venv venv #(创建环境)
source venv/bin/activate #(激活环境)
cd openGauss-tools-chameleon #(进入指定目录)
python3 setup.py install #(安装)
-
(5)迁移
chameleon set_configuration_files (创建目录)
cd ~/.pg_chameleon/configuration (进入目录)
cp config-example.yml default.yml (配置default.yml)
** 修改 default.yml 配置文件 **
global settings
pid_dir: '~/.pg_chameleon/pid/'log_dir: '~/.pg_chameleon/logs/'
log_dest: file
log_level: info
log_days_keep: 10
rollbar_key: ''
rollbar_env: ''
# type_override allows the user to override the default type conversion
# into a different one.
type_override:
"tinyint(1)":
override_to: boolean
override_tables:
- "*"
# postgres destination connection
pg_conn:
host: "1.1.1.1"
port: "5432"
user: "opengauss_test"
password: "********_***"
database: "opengauss_database"
charset: "utf8"
sources:
mysql:
readers: 4
writers: 4
db_conn:
host: "1.1.1.1"
port: "3306"
user: "mysql_test"
password: "***********"
charset: 'utf8'
connect_timeout: 10
schema_mappings:
mysql_database:sch_mysql_database
limit_tables:
skip_tables:
grant_select_to:
- usr_migration
lock_timeout: "120s"
my_server_id: 1
replica_batch_size: 10000
replay_max_rows: 10000
batch_retention: '1 day'
copy_max_memory: "300M"
copy_mode: 'file'
out_dir: /tmp
sleep_loop: 1
on_error_replay: continue
on_error_read: continue
auto_maintenance: "disabled"
gtid_enable: false
type: mysql
keep_existing_schema: No
migrate_default_value: Yes
初始化
chameleon create_replica_schema --config default
chameleon add_source --config default --source mysql
迁移数据
chameleon init_replica --config default --source mysql
chameleon start_view_replica --config default --source mysql --debug
chameleon start_trigger_replica --config default --source mysql --debug
chameleon start_func_replica --config default --source mysql --debug
chameleon start_proc_replica --config default --source mysql --debug
结束迁移
chameleon stop_replica --config default --source mysql
chameleon detach_replica --config default --source mysql
chameleon drop_replica_schema --config default