数据库内核是指数据库引擎。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及更低的版本 |
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日志同步为例进行说明:
通过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(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控制台,在目标集群的基本信息页直接查看内核版本信息。
您也可以通过
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升级
Revision Version升级
关于如何升级Revision Version版本,请参见Revision Version升级。