こんなやつのこと。
2017-04-18T23:54:08.224673+09:00 0 [Note] /usr/mysql/5.7.18/bin/mysqld: ready for connections.
Version: '5.7.18-log' socket: '/usr/mysql/5.7.18/data/mysql.sock' port: 64057 Source distribution
2017-04-18T23:54:08.224691+09:00 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
2017-04-18T23:54:08.224696+09:00 0 [Note] Beginning of list of non-natively partitioned tables
2017-04-18T23:54:08.316219+09:00 0 [Note] End of list of non-natively partitioned tables
MySQL 8.0.0 で完全になくなることが決まった(というか8.0.0の時点でもうない)
PARTITIONストレージエンジン
を「使ってないよね? チェックするぞ?」という機能が MySQL 5.7.17 に入った。
MySQLのパーティショニングはストレージエンジンとして実装されてい た (
./configure --help
や cmake -i
を使ったことがあれば、 -DWITH_PARTITION_STORAGE_ENGINE=ON
とかそういうのに憶えがあるかも知れない)
MySQL 5.7のInnoDBに関しては
InnoDBネイティブパーティショニング
といってPARTITIONストレージエンジンを使わずにInnoDBの内部でパーティションを表現するようになった。
「今後、パーティションを使っててもFOREIGN KEY制約がつけられるようになるかも知れない」というのは、このInnoDBネイティブパーティショニングによるもの。
フツーに
mysql_upgrade
をかましていれば5.7にアップグレードした時点で変換されるはずなのだが、 mysql_upgrade -s
とか avoid_temporal_upgradeを使ってゴニョゴニョするとか をしている…あるいはいっこ飛ばして5.6から8.0へダイレクトジャンプするとかだと、 PARTITIONストレージエンジン
によってパーティショニングされていたInnoDBのテーブルがそのまま残ってしまう。Prior to MySQL 5.7.6, partitioned InnoDB tables used the generic ha_partition partitioning handler employed by MyISAM and other storage engines not supplying their own partitioning handlers; in MySQL 5.7.6 and later, such tables are created using the InnoDB storage engine's own (or “native”) partitioning handler. Beginning with MySQL 5.7.9, you can upgrade an InnoDB table that was created in MySQL 5.7.6 or earlier (that is, created using ha_partition) to the InnoDB native partition handler using ALTER TABLE ... UPGRADE PARTITIONING. (Bug #76734, Bug #20727344) This version of ALTER TABLE does not accept any other options and can be used only on a single table at a time. You can also use mysql_upgrade in MySQL 5.7.9 or later to upgrade older partitioned InnoDB tables to the native partitioning handler.
PARTITIONストレージエンジン
そのものがなくなってしまうMySQL 8.0とそれ以降ではそのテーブルはそのままでは生きていけない……というわけで、過渡期にあたるMySQL 5.7にこのログが追加されたのだ(と思う)
default_password_lifetimeのとき に
We agree with the original bug reporter that the default of 360 is surprising for users upgrading from previous releases of MySQL.
と言っていたので、おそらく多少 ショックの少なそうな方法 を模索した結果なんだと思う。
ちなみに
PARTITIONストレージエンジン
なテーブルがあってもリストされるだけ(だと思う)なので、 ALTER TABLE .. ENGINE = INNODB
はセルフサービスでやる必要がある。
さて、
InnoDBネイティブパーティショニング
なので、もちろんInnoDB以外のストレージエンジンはサポートされていない(というかInnoDBの実装なのだから他のストレージエンジンに手を出せるわけがない)ので、MyISAMでパーティショニングしているヤーツがもし万一あったら今のうちにInnoDBにしておくのがよろしいかと思います。
0 件のコメント :
コメントを投稿