实战教程第四章4.1:OceanBase 的 MySQL 兼容性简介

2024年 5月 7日 42.7k 0

MySQL 兼容性主要看表的数据类型、业务 SQL 的兼容性。 MySQL 的函数、触发器、存储过程 在 OceanBase MySQL 里支持的并不好,也不推荐用。所以本章数据迁移就只包含数据库表对象及其数据的迁移。

支持的数据类型

OceanBase 数据库支持的数据类型有:

  • 数值类型
  • 日期时间类型
  • 字符类型
  • 大对象类型

与 MySQL 数据库对比,OceanBase 数据库暂不支持空间数据类型和 JSON 数据类型,其他类别的数据类型除了大对象外,支持情况是等于或大于 MySQL 数据库的。

支持的SQL 语法

常用的 SQL 这里主要列举查询和修改 SQL 。

  • SELECT

支持通过如下方式查看执行计划:

EXPLAIN <SQL Statement> \G

EXPLAIN extended_noaddr <SQL Statement> \G

EXPLAIN extended <SQL Statement> \G
  • INSERT
  • 支持单行和多行插入,同时还支持指定分区插入
  • 支持 INSERT INTO … SELECT … 语句
  • UPDATE
  • 支持单列和多列更新
  • 支持使用子查询
  • 支持集合更新
  • DELETE
  • 支持单表和多表删除
  • TRUNCATE
  • 支持完全清空指定表

支持的变量

MySQL 实例里的参数叫 variable 。可以在启动时通过命令行设置,也可以在启动的配置文件中设置,或者在 SQL 命令行下设置。SQL 里设置又分为全局级别设置和会话级别设置。

MySQL 有些变量在 OceanBase MySQL 租户里同样适用,但是要留心源端 MySQL 和目标端 OceanBase 这些变量值的差异。

实战教程第四章4.1:OceanBase 的 MySQL 兼容性简介-1

实战教程第四章4.1:OceanBase 的 MySQL 兼容性简介-2

这些变量中要留意字符集相关设置、sql_mode 设置以及 lower_case_table_names 设置。这些设置最好是在数据迁移之前就正确设置。后期修改会带来风险。

支持的字符集

OceanBase MySQL 租户支持字符集 binary 和 utf8mb4 。 默认是后者。租户的字符集在租户创建的时候指定,设置的是租户全局级别的字符集。 字符集 utf8mb4 是 utf8 的超集,多一些表情字符的编码。建议迁移到 OceanBase 都使用这个字符集。 在 utf8mb4 字符集下,每个英文字符长度 1 字节,每个汉字长度 3 字节,每个表情字符长度 4 字节。如果迁移数据换了字符集,字符串列的长度需要适当放长。

MySQL [test]> create table t1(c1 varchar(50));
Query OK, 0 rows affected (0.04 sec)

MySQL [test]> insert into t1 values('a'),('中');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

MySQL [test]> select length(c1) from t1;
+------------+
| length(c1) |
+------------+
|          1 |
|          3 |
+------------+
2 rows in set (0.01 sec)

当从 MySQL 中导出数据时,要确保数据库里的字符都能正确输出到文件中。通过 vim 命令下的 :set fileencoding 命令可以查看文件的编码。一般建议都是 utf-8。这样通过文件迁移 MySQL 数据时就不会出现乱码现象。

附录:

  • 4.1 OceanBase 的 MySQL 兼容性简介
  • 4.2 如何使用 mysqldump 迁移 MySQL 表 OceanBase
  • 4.3 如何使用 dbcat 迁移 MySQL 表结构到 OceanBase
  • 4.4 如何把 MySQL 表数据导出到 CSV 文件
  • 4.5 如何使用 OceanBase 的 LOAD 命令加载 csv 数据文件 OceanBase
  • 4.6 如何使用 DataX 加载 CSV 数据文件到 OceanBase
  • 4.7 如何使用 DATAX 迁移 MySQL数据到 OceanBase
  • 4.8 如何使用 OBDUMPER / OBLOADER 工具导出/导入 OceanBase 数据
  • 4.9 如何使用 DATAX 迁移 OceanBase 数据到 MySQL/ORACLE
  • 4.10 如何使用 CANAL 将 MySQL 数据实时同步到 OceanBase

结束语

加入教程直播群方式一:钉钉群号3255 4020

加入教程直播群方式二:扫码下方二维码加入

实战教程第四章4.1:OceanBase 的 MySQL 兼容性简介-3

相关文章

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

发布评论