数据库内核是指数据库引擎。PolarDB MySQL版包含5.6、5.7和8.0三个大的数据库内核版本。
PolarDB MySQL版数据库内核在PolarDB MySQL版架构中的位置如下图所示。

内核版本组成及关系说明
一个完整的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及更低的版本 |
8.0.2.2.0及以上版本与MySQL兼容性实现说明
PolarDB MySQL版8.0.2.2.0及以上版本与其他MySQL可能存在语法兼容性问题。为了让两者兼容,您需要在MySQL中进行如下操作:
create table
如果是create table语法,通过show create table语法、mysqldump工具和Binlog日志同步可以自动添加create table语法,实现自动兼容create table。具体说明如下:
- 通过show create table语法自动添加create table语法。示例如下:
CREATE TABLE `t1` (c1 int) ENGINE=InnoDB UNIQUE CHECK IGNORE=1 PARTITION BY HASH (`c1`) PARTITIONS 4; --- result SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) DEFAULT NULL ) /*!99990 800020200 UNIQUE CHECK IGNORE=1 */ 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) UNIQUE CHECK IGNORE=1 ENGINE=InnoDB 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 ) /*!99990 800020200 UNIQUE CHECK IGNORE=1 */ ENGINE=InnoDB /*!50100 PARTITION BY HASH (`c1`) PARTITIONS 4 */ /*!*/; ......
- 通过Binlog日志同步自动添加create table语法。本文以创建PolarDB MySQL版8.0.2.2.0版本到MySQL 8.0.27版本的Binlog日志同步为例进行说明:
- 通过DTS同步PolarDB MySQL版的Binlog日志到MySQL。具体请参见PolarDB MySQL同步至RDS MySQL。
- 分别在PolarDB MySQL版 8.0.2.2.0版本和MySQL上查看Binlog同步结果。PolarDB 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)
/*!99990 900020200 UNIQUE CHECK IGNORE=1 */
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
/*!50100 PARTITION BY HASH (`c1`) */;
SHOW CREATE TABLE t1;
DROP TABLE `t1`;
查询版本号
您可以通过如下方式查看集群的内核版本信息:
- 登录PolarDB控制台,在目标集群的基本信息页直接查看内核版本信息。
- 您也可以通过
show variables like "%polardb_version%";
或show variables like '%rds_release_date%';
命令查询具体的版本号。说明- PolarDB MySQL版5.6版本集群仅支持通过
show variables like '%rds_release_date%';
命令查询具体的版本号。 - 关于PolarDB MySQL版数据库引擎版本号的详细说明,请参见内核版本组成及关系说明。
- PolarDB MySQL版5.6版本集群仅支持通过
版本升级
- DB Version和Minor Version升级
- Revision Version升级
关于如何升级Revision Version版本,请参见Revision Version升级。