OB-从MySQL迁移数据到Oceanbase

兼容性支持情况

对象类型兼容性

  1. 基本支持MySQL表和业务SQL的兼容
  2. 对于MySQL 的函数、触发器、存储过程 的兼容性不友好

数据类型兼容性

  1. OceanBase 数据库暂不支持空间数据类型和 JSON 数据类型
  2. 其它数据类型基本都支持
    • 数值类型
    • 日期实践类型
    • 字符类型
    • 大对象类型

字符集兼容性

OceanBase MySQL 租户支持字符集 binaryutf8mb4 。 默认是utf8mb4

从 MySQL 中导出数据时,确保数据库里的字符正确输出。推荐使用: utf-8

  • 通过vim 中查看文件编码::set fileencoding

数据迁移方案

这里主要对数据库表对象及其数据的迁移。

  1. 将MySQL数据通过逻辑备份工具导出到可读格式文件(SQL,CSV)后在OceanBase中执行即可

    • mysqldump 实现
    • mydumper
  2. 通过binlog日志同步

逻辑导出MySQL表对象数据

mysqldump 工具导出对象数据

mysqldump 是 MySQL 提供的用于导出 MySQL 数据库对象和数据的工具。功能丰富且简单易用。

用法

mysqldump --help

具体实现

导出指定数据库的表结构(不含数据)
mysqldump -h 127.1 -uroot -P3306 -d TPCH --compact > tpch_ddl.sql
注意:
  1. 需要去掉MySQL中特定的语法,如:变量 SQL_NOTESDEFINER 语句等

    vim 
    :%s/MAX_ROWS=/; -- MAX_ROWS=/g 
    
  2. 确认两端的表名称大小写是否敏感

  3. 导入OceanBase MySQL租户中,需要禁用外键检查约束

    set global foreign_key_checks=off;
    show global variables like 'foreign_key_checks';
    
导出指定数据库的表数据(不含对象定义结构)
mysqldump -h 127.1 -uroot -P3306 -t TPCH > tpch_data.sql
posted @ 2021-12-20 15:12  KuBee  阅读(1119)  评论(0编辑  收藏  举报