5.6/5.7/8.0內(nèi)核版本
數(shù)據(jù)庫內(nèi)核是指數(shù)據(jù)庫引擎。PolarDB MySQL版包含5.6、5.7和8.0三個(gè)大的數(shù)據(jù)庫內(nèi)核版本。
PolarDB MySQL版數(shù)據(jù)庫內(nèi)核在PolarDB MySQL版架構(gòu)中的位置如下圖所示。
內(nèi)核版本組成及關(guān)系說明
一個(gè)完整的PolarDB MySQL版數(shù)據(jù)庫內(nèi)核版本號(hào)由大版本(DB version)號(hào)、小版本(Minor version)號(hào)和修訂版本(Revision version)號(hào)三者組成,三者間的關(guān)系如下所示(以PolarDB MySQL版 8.0版本為例):
大版本號(hào)是PolarDB MySQL版數(shù)據(jù)庫內(nèi)核版本最重要的標(biāo)識(shí)號(hào),一個(gè)大版本下通常包含一個(gè)或多個(gè)小版本,如大版本5.6僅包含一個(gè)小版本5.6.16,而大版本8.0包含8.0.1和8.0.2兩個(gè)小版本。不同小版本支持的功能差異較大,建議您在購買集群前先根據(jù)業(yè)務(wù)需要確定適合的小版本號(hào)。通常情況下,一個(gè)小版本下還包含多個(gè)修訂版本。修訂版本會(huì)對(duì)現(xiàn)有功能進(jìn)行優(yōu)化或改進(jìn),或者新增一些功能。同時(shí),小版本和修訂版本均會(huì)包含安全、性能等方面的優(yōu)化和改進(jìn)。
PolarDB MySQL版數(shù)據(jù)庫內(nèi)核版本按照大版本維度整體向下兼容,高版本包含低版本的全部功能,即當(dāng)您從低版本升級(jí)到高版本后,應(yīng)用程序不需要做任何修改,完全兼容。關(guān)于如何升級(jí)版本,請(qǐng)參見版本升級(jí)。
內(nèi)核版本的功能更新記錄
每個(gè)內(nèi)核版本都有版本發(fā)布日志,其中列出了適用于各自版本的新功能、增強(qiáng)功能和問題修復(fù)。具體請(qǐng)參見:
內(nèi)核版本兼容性說明
PolarDB MySQL版內(nèi)核兼容性說明如下:
兼容ANSI/ISO SQL標(biāo)準(zhǔn),PolarDB MySQL版支持修改SQL兼容模式為ANSI,您可以將集群參數(shù)sql_mode修改為ANSI來實(shí)現(xiàn)該需求。關(guān)于如何修改集群參數(shù),請(qǐng)參見設(shè)置集群參數(shù)和節(jié)點(diǎn)參數(shù)。
支持0至3.51版本的ODBC。
支持W3C和XPath標(biāo)準(zhǔn)的XML功能。
PolarDB MySQL版5.7和8.0版本支持RFC 7159和ECMAScript標(biāo)準(zhǔn)(ECMA-262)的原生JSON數(shù)據(jù)類型。
PolarDB MySQL版與社區(qū)MySQL版本的兼容關(guān)系如下表所示:
內(nèi)核版本 | 完全兼容的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日志同步可以自動(dòng)添加create table語法,實(shí)現(xiàn)自動(dòng)兼容create table。具體說明如下:
通過show create table語法自動(dòng)添加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工具自動(dòng)添加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日志同步自動(dòng)添加create table語法。
本文以創(chuàng)建PolarDB MySQL版8.0.2.2.0版本到MySQL 8.0.27版本的Binlog日志同步為例進(jìn)行說明:
通過DTS同步PolarDB MySQL版的Binlog日志到MySQL。具體請(qǐng)參見PolarDB MySQL版同步至RDS MySQL。
分別在PolarDB MySQL版 8.0.2.2.0版本和MySQL上查看Binlog同步結(jié)果。
PolarDB MySQL版同步結(jié)果如下:
MySQL同步結(jié)果如下:從上圖可以看到,MySQL這邊的顯示結(jié)果中不包含PolarDB MySQL版的新功能。
說明PolarDB MySQL版數(shù)據(jù)同步到MySQL后,MySQL將無法使用PolarDB MySQL版的新功能。
除create table外的其他DDL操作
如果是除create table外的其他DDL操作,需要手動(dòng)添加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 */
查詢版本號(hào)
您可以通過如下方式查看集群的內(nèi)核版本信息:
登錄PolarDB控制臺(tái),在目標(biāo)集群的基本信息頁直接查看內(nèi)核版本信息。
您也可以通過
show variables like "%polardb_version%";
或show variables like '%rds_release_date%';
命令查詢具體的版本號(hào)。說明PolarDB MySQL版5.6版本集群僅支持通過
show variables like '%rds_release_date%';
命令查詢具體的版本號(hào)。關(guān)于PolarDB MySQL版數(shù)據(jù)庫引擎版本號(hào)的詳細(xì)說明,請(qǐng)參見內(nèi)核版本組成及關(guān)系說明。
版本升級(jí)
DB Version和Minor Version升級(jí)
DB Version升級(jí)
大版本升級(jí)功能支持升級(jí)DB Version(如將PolarDB MySQL版5.6版本升級(jí)到PolarDB MySQL版8.0版本)。
Minor Version升級(jí)
PolarDB MySQL版暫不支持升級(jí)Minor Version。但您可以通過DTS將數(shù)據(jù)從源版本遷移或同步到目標(biāo)版本的集群來完成升級(jí)。關(guān)于如何遷移或同步數(shù)據(jù),請(qǐng)參見數(shù)據(jù)遷移方案概覽。
Revision Version升級(jí)
關(guān)于如何升級(jí)Revision Version版本,請(qǐng)參見Revision Version升級(jí)。