数据迁移至openGauss

  • (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: '' 1. type_override allows the user to override the default type conversion 1. into a different one. type_override: "tinyint(1)": override_to: boolean override_tables: - "*" 1. 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