データベースエンジンは、データベースのコアコンポーネントです。PolarDB for MySQL は、5.6、5.7、8.0 の 3 つのメジャーバージョンを提供しています。
次の図に、PolarDB for MySQL アーキテクチャにおける PolarDB for MySQL データベースエンジンの位置を示します。
エンジンバージョンの構成
PolarDB for MySQL のエンジンバージョン番号は、メジャーバージョン、マイナーバージョン、リビジョンで構成されています。次の図では、PolarDB for MySQL 8.0 を例にこの構成を示します。
メジャーバージョンは、PolarDB for MySQL エンジンバージョンの主要な識別子です。メジャーバージョンには通常、1 つ以上のマイナーバージョンが含まれます。たとえば、メジャーバージョン 5.6 にはマイナーバージョン 5.6.16 のみが含まれますが、メジャーバージョン 8.0 には 8.0.1 と 8.0.2 の両方が含まれます。マイナーバージョンが異なると、機能に大きな違いがある場合があります。クラスターを購入する前に、ビジネス要件に最適なマイナーバージョンを選択してください。マイナーバージョンには、複数のリビジョンが含まれる場合もあります。リビジョンには、最適化、改善、または新機能が導入されています。マイナーバージョンとリビジョンには、セキュリティとパフォーマンスの強化も含まれています。
PolarDB for MySQL エンジンバージョンには下位互換性があります。新しいメジャーバージョンには、古いバージョンのすべての機能が含まれているため、アップグレード後にアプリケーションを変更する必要はありません。エンジンバージョンのアップグレード方法の詳細については、「エンジンバージョンのアップグレード」をご参照ください。
リリースノート
各エンジンバージョンには、新機能、機能強化、バグ修正が記載されたリリースノートがあります。詳細については、次のトピックをご参照ください。
エンジンバージョンの互換性
PolarDB for MySQL エンジンは、以下と互換性があります。
-
ANSI/ISO SQL 標準。PolarDB for MySQL では、SQL 互換モードを ANSI に変更できます。これを行うには、sql_mode クラスターパラメータを ANSI に設定します。クラスターパラメータの変更方法については、「クラスターおよびノードパラメータの設定」をご参照ください。
-
ODBC バージョン 0 ~ 3.51。
-
W3C および XPath 標準に準拠した XML 機能。
-
PolarDB for MySQL 5.7 および 8.0 は、RFC 7159 および ECMA-262 で定義されているネイティブ JSON データ型をサポートしています。
次の表に、PolarDB for 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 以前 |
新機能の SQL 構文
CREATE TABLE
CREATE TABLE 構文については、SHOW CREATE TABLE などの操作、mysqldump ツールの使用、またはバイナリログの同期時に、特定の構文を自動的に追加することで互換性を確保します。次の例で詳細を説明します。
-
必要な互換性構文は、
SHOW 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 `t1` (c1 int, KEY(c1) GLOBAL) ENGINE=InnoDB PARTITION BY HASH (`c1`) PARTITIONS 4; --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 */ /*!*/; -
必要な互換性構文は、バイナリログ同期中に自動的に追加されます。
この例では、PolarDB for MySQL 8.0.2.2.0 から MySQL 8.0.27 へのバイナリログ同期を示します。
-
Data Transmission Service (DTS) を使用して、PolarDB for MySQL から MySQL へバイナリログを同期します。詳細については、「PolarDB for MySQL から ApsaraDB RDS for MySQL へのデータ同期」をご参照ください。
-
PolarDB for MySQL 8.0.2.2.0 と MySQL でのバイナリログ同期の結果を確認します。
PolarDB for MySQL における結果:
root:test> show create table t6; +-------+--------------------------------------------------------------+ | Table | Create Table | +-------+--------------------------------------------------------------+ | t6 | CREATE TABLE `t6` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci /*!99990 800020200 PARTITION BY HASH (`a`) SUBPARTITION BY LIST (`b`) (PARTITION p0 (SUBPARTITION s0 VALUES IN (1,2,3,4,5) ENGINE = InnoDB, SUBPARTITION s1 VALUES IN (6,7,8,9,10) ENGINE = InnoDB), PARTITION p1 (SUBPARTITION s2 VALUES IN (1,2,3,4,5) ENGINE = InnoDB, SUBPARTITION s3 VALUES IN (6,7,8,9,10) ENGINE = InnoDB)) */ | +-------+--------------------------------------------------------------+ 1 row in set (4.72 sec)MySQL における結果:
root:test> show create table t6; +-------+------------------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------------------+ | t6 | CREATE TABLE `t6` ( `a` int DEFAULT NULL, `b` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +-------+------------------------------------------------------------+ 1 row in set (0.00 sec)出力に示されているように、MySQL の結果には PolarDB for MySQL の新機能は含まれていません。
説明PolarDB for MySQL から MySQL へのデータ同期後、PolarDB for MySQL 固有の新機能は利用できません。
-
その他の DDL 操作
CREATE TABLE 以外の DDL 操作については、PolarDB for MySQL 構文用の互換性コメントを手動で追加する必要があります。以下の形式を使用してください。
/*!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 for MySQL 5.6 クラスターの場合、バージョン番号を取得するには
show variables like '%rds_release_date%';コマンドのみを使用できます。 -
PolarDB for MySQL エンジンバージョン番号の詳細な説明については、「エンジンバージョンの構成」をご参照ください。
-
エンジンバージョンのアップグレード
-
メジャーバージョンおよびマイナーバージョンのアップグレード
-
メジャーバージョンアップグレード
メジャーバージョンアップグレード機能を使用して、たとえば PolarDB for MySQL 5.6 から PolarDB for MySQL 8.0 へアップグレードできます。
-
マイナーバージョンアップグレード
PolarDB for MySQL は現在、マイナーバージョンのアップグレードをサポートしていません。ただし、DTS を使用してソースバージョンからターゲットバージョンのクラスターにデータを移行または同期することで、アップグレードを完了できます。データの移行または同期の方法の詳細については、「データ移行ソリューションの概要」をご参照ください。
-
-
リビジョンのアップグレード
リビジョンのアップグレード方法については、「リビジョンのアップグレード」をご参照ください。