工具箱

提供了数据迁移,性能测试等各种工具。 进入工具箱页面,在工具列表内运行,运行结果在下方历史记录处显示。 运行结束后,在响应结果中查看执行详细信息。 图 1

数据导入

从MySQL,MS SQL,Oracle,SQLite,PostgreSQL,IBB ixf,b3文件,dbf文件,csv文件,固定格式的文件 导入到udb。

在工具箱页面中,运行数据导入,根据页面提示输入源端账号信息和目标端账号信息,执行 即可。 图 0

TPC-C标准测试

测试数据库 OLTP 事务并发执行能力

在工具箱页面中,运行TPC-C标准测试,根据页面提示输入目标账号信息,执行 即可。

图 0

刷新页面,等待任务执行完成,点击查看详情可显示执行结果。

图 1 图 2

Mysql同步到udb

从MySQL同步到udb,支持全量和增量迁移。

注意: 同步迁移仅支持有主键的表

在工具箱页面中,运行Mysql同步到udb,根据页面提示输入源端账号信息和目标端账号信息,执行 即可。

图 0

更多操作

准备数据

源端mysql开启binlog

  binlog_format= ROW
  binlog_row_image=FULL
  log-bin = mysql-bin
  server-id = 1
  expire_logs_days = 10

源端mysql创建同步账号

  CREATE USER rep ;
  SET PASSWORD FOR rep=PASSWORD('rep');
  GRANT ALL ON test.* TO 'rep';
  GRANT RELOAD ON *.* to 'rep';
  GRANT REPLICATION CLIENT ON *.* to 'rep';
  GRANT REPLICATION SLAVE ON *.* to 'rep';
  FLUSH PRIVILEGES;

目标端创建用户和数据库

  CREATE USER test WITH PASSWORD 'testpwd';
  CREATE DATABASE test WITH OWNER test;

准备配置文件

准备 /dir/sample.yml 配置文件,内容如下

  ---
  # global settings
  pid_dir: '/tmp/'
  log_dir: '/tmp/'
  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:
        - "*"


  # unvdb  destination connection
  pg_conn:
    host: "目标数据库IP"
    port: "目标数据库端口"
    user: "目标数据库用户"
    password: "目标数据库密码"
    database: "目标数据库名称"
    #目标数据库配置
    charset: "utf8"

  sources:
    mysql:
      db_conn:
        host: "源数据库IP"
        port: "源数据库端口"
        user: "源数据库用户"
        password: "源数据库密码"
        charset: 'utf8'
        connect_timeout: 10
      schema_mappings:
        源数据库名称: 目标数据库模式名比如public
      limit_tables:
      #只包含以下表
        # - test.a
      skip_tables:
      #排除以下表
        # - test.b
      grant_select_to:
        - usr_readonly
      lock_timeout: "120s"
      my_server_id: 100
      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
      skip_events:
        insert:
        #跳过以下表的插入事件
          # - test.d
        delete:
        #跳过以下表的删除事件
          # - test.e
        update:
        #跳过以下表的更新事件
          # - test.f
      keep_existing_schema: No

启动容器

docker run -it --name chameleon -v /dir/sample.yml:/home/unvdb/.pg_chameleon/configuration/sample.yml chameleon /bin/bash

创建迁移任务

chameleon create_replica_schema --config sample --debug

添加源端数据库

chameleon add_source --config sample --source mysql --debug

启动全量迁移,此时将进行全量数据迁移

chameleon init_replica --config sample --source mysql --debug

查看任务状态

chameleon show_status --source mysql --config sample --debug

开启持续同步,开启debug时会在前台运行

chameleon start_replica --config sample --source mysql --debug

停止同步

chameleon stop_replica --config sample --source mysql

删除同步记录

chameleon detach_replica --config sample --source mysql

删除任务

chameleon drop_replica_schema --config sample

其它操作命令

目标故障时恢复同步任务

chameleon enable_replica --source mysql --config sample --debug

当目标故障后,同步状态中断。
当目录恢复后,需要执行 enable_replica 将同步状态更新为 stopped
再次 start_replica 开启同步即可恢复同步任务。

查看任务错误信息

chameleon show_errors --config sample

查看配置文件信息

chameleon show_config --source mysql --config sample

停止所有任务

chameleon stop_all_replicas --config sample