PolarDB for MySQL uses a three-part version numbering system — Major.Minor.Revision — that delivers performance improvements, security patches, and new features while maintaining full compatibility with a specific community MySQL version. Upgrading to a higher revision or major version does not require application changes.
Version number format
PolarDB version numbers follow the Major.Minor.Revision format. For example, 8.0.1.1.0 breaks down as:
| Level | Example | Meaning |
|---|---|---|
| Major | 8.0 |
Broad feature generation. Different major versions have significant feature differences. |
| Minor | 8.0.1 |
Feature release within a major version. Selected when creating a cluster. |
| Revision | 8.0.1.1.0 |
Patch release within a minor version. Contains performance optimizations, security patches, and bug fixes. |
MySQL compatibility
Supported major versions
| PolarDB engine version | Compatible MySQL version |
|---|---|
| 8.0.2 | MySQL 8.0.18 and earlier |
| 8.0.1 | MySQL 8.0.13 and earlier |
| 5.7 | MySQL 5.7.28 and earlier |
| 5.6 | MySQL 5.6.16 and earlier |
Standards and protocols
| Standard | Support |
|---|---|
| SQL | ANSI/ISO SQL. Set the sql_mode parameter to ANSI to enable. See Configure cluster and node parameters. |
| ODBC | Open Database Connectivity (ODBC) versions 0 to 3.51. |
| JSON | Native JSON data type per RFC 7159 and ECMA-262. Supported in versions 5.7 and 8.0. |
| XML | W3C and XPath standard XML functions. |
How PolarDB handles new syntax
PolarDB includes features not available in standard MySQL, such as GLOBAL indexes. To prevent these from breaking downstream replication tools like mysqldump or binlog synchronization, PolarDB automatically wraps new or modified SQL syntax in versioned comments.
The comment format is:
/*!99990 800020200 Special new PolarDB Syntax SQL supported >= version 2.2.0 */
Examples
Example 1: SHOW CREATE TABLE
When you create a table with a GLOBAL index, SHOW CREATE TABLE wraps the keyword in a versioned comment:
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;
Result:
| 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 */ |
Example 2: mysqldump
mysqldump preserves versioned comments in its output. When the dump is imported into standard MySQL, MySQL silently ignores the PolarDB-specific syntax.
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 */
/*!*/;
......
Example 3: Binary log synchronization
This example synchronizes binary logs from PolarDB for MySQL 8.0.2.2.0 to MySQL 8.0.27.
-
Use Data Transmission Service (DTS) to synchronize binary logs from PolarDB for MySQL 8.0.2.2.0 to MySQL 8.0.27. For details, see From a PolarDB for MySQL cluster to an ApsaraDB RDS for MySQL instance.
-
View the binary log synchronization result on both systems. Sample result on PolarDB for MySQL 8.0.2.2.0:
Sample result on MySQL 8.0.27:
PolarDB-specific features do not appear in the MySQL result.
After synchronization, PolarDB-specific features (such as GLOBAL indexes) are no longer available on the MySQL side.
Manually adding versioned comments for other DDL statements
SHOW CREATE TABLE and mysqldump add versioned comments automatically for CREATE TABLE statements. For other DDL statements, add the comment manually:
/*!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 */
Check your engine version
From the console:
-
Log on to the PolarDB console.
-
On the Basic Information page of your cluster, check the Kernel Version value.
From SQL:
Connect to your cluster and run:
show variables like '%polardb_version%';
For version 5.6, use show variables like '%rds_release_date%'; instead.
Upgrade engine versions
Each version level has a different upgrade path:
| Version level | Upgrade path |
|---|---|
| Revision | Upgrade in place. See Upgrade revision versions. |
| Minor | Cannot upgrade in place. Create a new cluster and migrate data using DTS. For example: 8.0.1.x → *(new cluster + DTS)* → 8.0.2.x |
| Major | See Upgrade the engine version. For example: 5.7 → 8.0 |
Release notes
For a full list of new features, enhancements, and bug fixes for each version: