2019年7月20日土曜日

MySQL 8.0 はダウングレードできない


8.0.16でCHECK制約がサポートされました。
CHECK制約については、「yoku0825さんのブログ」や「MySQL Server teamのブログ」で詳しく解説されてます。

さて、「8.0.16でCHECK制約を設定したテーブルをCHECK制約に対応していない8.0.15で操作したらどうなるだろ?」という疑問が湧いたので試してみました。

CHECK制約を作るじゃろ?

mysql> CREATE TABLE check_constraint (pk SERIAL PRIMARY KEY, c1 int, CHECK(c1>0));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO check_constraint VALUES(1, -10);
ERROR 3819 (HY000): Check constraint 'check_constraint_chk_1' is violated.

mysql> INSERT INTO check_constraint VALUES(1, 1);
Query OK, 1 row affected (0.01 sec)



パッケージをダウングレードするじゃろ?

$ sudo yum -y downgrade mysql-community-common-8.0.15-1.el7.x86_64 \
mysql-community-libs-compat-8.0.15-1.el7.x86_64 mysql-community-libs-8.0.15-1.el7.x86_64 \
mysql-community-server-8.0.15-1.el7.x86_64 mysql-community-client-8.0.15-1.el7.x86_64


起動する。

mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
2019-04-27T04:58:31.231293Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.15) starting as process 16650
2019-04-27T04:58:31.415389Z 1 [ERROR] [MY-013171] [InnoDB] Cannot boot server version 80015 on data directory built by version 80016. Downgrade is not supported
2019-04-27T04:58:36.522516Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
2019-04-27T04:58:36.522742Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2019-04-27T04:58:36.522975Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-27T04:58:36.523868Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.15)  MySQL Community Server - GPL.





( ゚Д゚)アライヤダ!!。起動できませんでした・・・。
8.0.16の新機能(CHECK制約)を使わなかったとしても同様でした。

ダウングレードがサポートされなくなったことは、マニュアルにもしっかりと書いてありました。
https://dev.mysql.com/doc/refman/8.0/en/downgrading.html

Downgrade from MySQL 8.0 to MySQL 5.7, or from a MySQL 8.0 release to a previous MySQL 8.0 release, is not supported.

5.7や5.6では、ダウングレードは出来ていました。

MySQLの開発ポリシーは8.0大きく変わりました。
これまでの「メジャーバージョンアップ時のみ、まとめて機能追加を行う」から「随時、機能追加を行なっていく」というポリシーに変更になりました。
ダウングレードの仕様変更は機能追加を優先した結果でしょうね?

自分の10年近い、MySQL DBA人生で、マイナーバージョンのダウングレードが必要になったケースは1回かな?
ダウングレードできなくても実際はあまり問題にならないんじゃないかと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。