数据迁移至openGauss

2023年 11月 20日 80.8k 0

  • (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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论