數據庫內核是指數據庫引擎。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升級。