5.6/5.7/8.0内核版本

数据库内核是指数据库引擎。PolarDB MySQL版包含5.6、5.7和8.0三个大的数据库内核版本。

PolarDB MySQL版数据库内核在PolarDB MySQL版架构中的位置如下图所示。1

内核版本组成及关系说明

一个完整的PolarDB MySQL版数据库内核版本号由大版本(DB version)号、小版本(Minor version)号和修订版本(Revision version)号三者组成,三者间的关系如下所示(以PolarDB MySQL版 8.0版本为例):版本号说明

大版本号是PolarDB MySQL版数据库内核版本最重要的标识号,一个大版本下通常包含一个或多个小版本,如大版本5.6仅包含一个小版本5.6.16,而大版本8.0包含8.0.1和8.0.2两个小版本。不同小版本支持的功能差异较大,建议您在购买集群前先根据业务需要确定适合的小版本号。通常情况下,一个小版本下还包含多个修订版本。修订版本会对现有功能进行优化或改进,或者新增一些功能。同时,小版本和修订版本均会包含安全、性能等方面的优化和改进。

说明

PolarDB MySQL版数据库内核版本按照大版本维度整体向下兼容,高版本包含低版本的全部功能,即当您从低版本升级到高版本后,应用程序不需要做任何修改,完全兼容。关于如何升级版本,请参见版本升级

内核版本的功能更新记录

每个内核版本都有版本发布日志,其中列出了适用于各自版本的新功能、增强功能和问题修复。具体请参见:

内核版本兼容性说明

PolarDB MySQL版内核兼容性说明如下:

  • 兼容ANSI/ISO SQL标准,PolarDB MySQL版支持修改SQL兼容模式为ANSI,您可以将集群参数sql_mode修改为ANSI来实现该需求。关于如何修改集群参数,请参见设置集群参数和节点参数

  • 支持0至3.51版本的ODBC。

  • 支持W3C和XPath标准的XML功能。

  • PolarDB MySQL版5.7和8.0版本支持RFC 7159和ECMAScript标准(ECMA-262)的原生JSON数据类型。

PolarDB MySQL版与社区MySQL版本的兼容关系如下表所示:

内核版本

完全兼容的MySQL小版本

8.0.2

8.0.18及更低的版本

8.0.1

8.0.13及更低的版本

5.7

5.7.28及更低的版本

5.6

5.6.16及更低的版本

PolarDB MySQL版新功能的SQL语法

create table

如果是create table语法,通过show create table语法、mysqldump工具和Binlog日志同步可以自动添加create table语法,实现自动兼容create table。具体说明如下:

  • 通过show create table语法自动添加create table语法。示例如下:

    CREATE TABLE `t1` (c1 int, KEY(c1) GLOBAL) ENGINE=InnoDB PARTITION BY HASH (`c1`) PARTITIONS 4;
    Query OK, 0 rows affected (0.06 sec)
    
    SHOW CREATE TABLE t1;
    +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                                                                                                                         |
    +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (
      `c1` int(11) DEFAULT NULL,
      KEY `c1` (`c1`) /*!99990 800020207 GLOBAL */
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    /*!50100 PARTITION BY HASH (`c1`)
    PARTITIONS 4 */ |
  • 通过mysqldump工具自动添加create table语法。示例如下:

    CREATE TABLE `t1` (c1 int, KEY(c1) GLOBAL) ENGINE=InnoDB PARTITION BY HASH (`c1`) PARTITIONS 4;
    DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci PARTITION BY HASH (`c1`);
    --result
    mysqldump --compact test t1
    
    include/mysqlbinlog.inc
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
    DELIMITER /*!*/;
    ROLLBACK/*!*/;
    # [empty]
    # original_commit_timestamp= MICROSECONDS-FROM-EPOCH (YYYY-MM-DD HOURS:MINUTES:SECONDS TZ)
    # immediate_commit_timestamp= MICROSECONDS-FROM-EPOCH (YYYY-MM-DD HOURS:MINUTES:SECONDS TZ)
    /*!80001 SET @@session.original_commit_timestamp= MICROSECONDS-FROM-EPOCH*//*!*/;
    /*!80014 SET @@session.original_server_version= ORIGINAL_SERVER_VERSION*//*!*/;
    /*!80014 SET @@session.immediate_server_version= IMMEDIATE_SERVER_VERSION*//*!*/;
    SET @@SESSION.GTID_NEXT= '#'/*!*/;
    use `test`/*!*/;
    SET TIMESTAMP=#/*!*/;
    SET @@session.pseudo_thread_id=#/*!*/;
    SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
    SET @@session.sql_mode=1168113696/*!*/;
    SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
    /*!\C utf8mb4 *//*!*/;
    SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
    SET @@session.lc_time_names=0/*!*/;
    SET @@session.collation_database=DEFAULT/*!*/;
    /*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
    /*!80013 SET @@session.sql_require_primary_key=0*//*!*/;
    CREATE TABLE `t1` (
      `c1` int(11) DEFAULT NULL,
      KEY `c1` (`c1`) /*!99990 800020207 GLOBAL */
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    /*!50100 PARTITION BY HASH (`c1`)
    PARTITIONS 4 */
    /*!*/;
    ......
  • 通过Binlog日志同步自动添加create table语法。

    本文以创建PolarDB MySQL版8.0.2.2.0版本到MySQL 8.0.27版本的Binlog日志同步为例进行说明:

    1. 通过DTS同步PolarDB MySQL版的Binlog日志到MySQL。具体请参见PolarDB MySQL版同步至RDS MySQL

    2. 分别在PolarDB MySQL版 8.0.2.2.0版本和MySQL上查看Binlog同步结果。

      PolarDB MySQL版同步结果如下:

      MySQL同步结果如下:MySQL从上图可以看到,MySQL这边的显示结果中不包含PolarDB MySQL版的新功能。

      说明

      PolarDB MySQL版数据同步到MySQL后,MySQL将无法使用PolarDB MySQL版的新功能。

除create table外的其他DDL操作

如果是除create table外的其他DDL操作,需要手动添加PolarDB MySQL版语法兼容性comments。具体格式如下:

/*!99990 800020200 Special new PolarDB Syntax SQL supported >= version 2.2.0 */

示例如下:

CREATE TABLE `t1` (
`c1` int(11) DEFAULT NULL,
KEY `c1` (`c1`) /*!99990 800020207 GLOBAL */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY HASH (`c1`)
PARTITIONS 4 */

查询版本号

您可以通过如下方式查看集群的内核版本信息:

  • 登录PolarDB控制台,在目标集群的基本信息页直接查看内核版本信息。1

  • 您也可以通过show variables like "%polardb_version%";show variables like '%rds_release_date%';命令查询具体的版本号。

    说明
    • PolarDB MySQL版5.6版本集群仅支持通过show variables like '%rds_release_date%';命令查询具体的版本号。

    • 关于PolarDB MySQL版数据库引擎版本号的详细说明,请参见内核版本组成及关系说明

版本升级

  • DB Version和Minor Version升级

    • DB Version升级

      大版本升级功能支持升级DB Version(如将PolarDB MySQL版5.6版本升级到PolarDB MySQL版8.0版本)。

    • Minor Version升级

      PolarDB MySQL版暂不支持升级Minor Version。但您可以通过DTS将数据从源版本迁移或同步到目标版本的集群来完成升级。关于如何迁移或同步数据,请参见数据迁移方案概览

  • Revision Version升级

    关于如何升级Revision Version版本,请参见Revision Version升级