兼容性支持情况
对象类型兼容性
- 基本支持MySQL表和业务SQL的兼容
- 对于MySQL 的函数、触发器、存储过程 的兼容性不友好
数据类型兼容性
- OceanBase 数据库暂不支持空间数据类型和 JSON 数据类型
- 其它数据类型基本都支持
- 数值类型
- 日期实践类型
- 字符类型
- 大对象类型
字符集兼容性
OceanBase MySQL 租户支持字符集 binary
和 utf8mb4
。 默认是utf8mb4
从 MySQL 中导出数据时,确保数据库里的字符正确输出。推荐使用: utf-8
- 通过vim 中查看文件编码::set fileencoding
数据迁移方案
这里主要对数据库表对象及其数据的迁移。
-
将MySQL数据通过逻辑备份工具导出到可读格式文件(SQL,CSV)后在OceanBase中执行即可
- mysqldump 实现
- mydumper
-
通过binlog日志同步
逻辑导出MySQL表对象数据
mysqldump 工具导出对象数据
mysqldump 是 MySQL 提供的用于导出 MySQL 数据库对象和数据的工具。功能丰富且简单易用。
用法
mysqldump --help
具体实现
导出指定数据库的表结构(不含数据)
mysqldump -h 127.1 -uroot -P3306 -d TPCH --compact > tpch_ddl.sql
注意:
-
需要去掉MySQL中特定的语法,如:变量
SQL_NOTES
,DEFINER
语句等vim :%s/MAX_ROWS=/; -- MAX_ROWS=/g
-
确认两端的表名称大小写是否敏感
-
导入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