Share
Embed
Transcript
54 slides
-
TL;DR バージョンアップのモチベーションになるような花形機能は…ない 漢(オトコ)のコンピュータ道: MySQL 8.4 LTS登場!! ‐ MySQL 8.4 as
a stable 8.0という考え方を紹介します 8.4そのものの話よりは8.0やそれ以前を振り返る話になります ‐ 3/53 -
\こんにちわ/ yoku0825@とある企業のDBA オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitterだったもの:
@yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会副代表 ‐ MySQL Casual ‐ Oracle ACE Pro ‐ 4/53 -
MySQL 8.0 mysql80 13> SELECT @@version, CURDATE(); +-----------+------------+ | @@version
| CURDATE() | +-----------+------------+ | 8.0.11 | 2018-04-19 | +-----------+------------+ 1 row in set (0.00 sec) 6/53 -
MySQL 8.0 継続的リリース() 2016/09 8.0.0, 2018/04 GA GAクオリティ() メンテナンスリリースで機能が増える ‐
バグFIXを受け入れるために新機能の受け入れも必要 ‐ 新機能どころかSQLレベルの非互換があるバージョンもあった(予約語だったりワーニングだっ たり) ‐ 7/53 -
あれから6年 mysql80 13> SELECT @@version, CURDATE(); +-----------+------------+ | @@version |
CURDATE() | +-----------+------------+ | 8.0.37 | 2024-04-30 | +-----------+------------+ 1 row in set (0.00 sec) 8/53 -
あれから6年 mysql84 16> SELECT @@version, CURDATE(); +-----------+------------+ | @@version |
CURDATE() | +-----------+------------+ | 8.4.0 | 2024-04-30 | +-----------+------------+ 1 row in set (0.00 sec) 9/53 -
MySQL 8.4 Long Term Support() Innovation Releaseを前提としたリリースモデル 2023/07 MySQL 8.1
Innovation ‐ 2023/10 MySQL 8.2 Innovation ‐ 2024/01 MySQL 8.3 Innovation ‐ 今度こそ機能追加や非互換のない安定版を望む 10/53 -
ところでこれ話題に出てました? Bug #114838 8.4.0 requires unique constraint for FK 日々の覚書:
Error: 6125 MySQL 8.4.0の非互換で親テーブルでUNIQUE KEYがつい てないとForeign Keyが作れなくなった? 12/53 -
Bug #114838 8.4.0 requires unique constraint for FK ### 親テーブル。
numはインデックスつきだけどPRIMARYでもUNIQUEでもない mysql84 11> CREATE TABLE d2.t1 (num int, KEY(num)); Query OK, 0 rows affected (0.02 sec) ### 子テーブル。子テーブル側はセカンダリキーでもユニークキーでも関係なしに親がユニークキーじゃないからError 6125 mysql84 11> CREATE TABLE d2.t2 (num int, UNIQUE KEY(num), FOREIGN KEY (num) REFERENCES d2.t1(num)) Engine InnoDB; ERROR 6125 (HY000): Failed to add the foreign key constraint. Missing unique key for constraint 't2_ibfk_1' in the referenced table 't1' mysql84 20> SELECT @@RESTRICT_FK_ON_NON_STANDARD_KEY; +-----------------------------------+ | @@RESTRICT_FK_ON_NON_STANDARD_KEY | +-----------------------------------+ | 1 | +-----------------------------------+ 1 row in set (0.00 sec) 13/53 -
Features Added or Changed in MySQL 8.4(1/7) MySQL native password
authentication changes. InnoDB system variable default value changes. Clone plugin SASL-based LDAP authentication on Windows. MySQL Replication: SOURCE_RETRY_COUNT change. https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 17/53 -
Features Added or Changed in MySQL 8.4(2/7) MySQL Replication: tagged
GTIDs. Replication: SQL_AFTER_GTIDS and MTA Replication terminology backwards compatibility. The MySQL version number used in version-specific comments supports a major version consisting of one or two digits https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 18/53 -
Features Added or Changed in MySQL 8.4(3/7) group_replication_set_as_primary() and DDL
statements. DDL and DCL statement tracking for group_replication_set_as_primary() Group Replication variable defaults. Added a number of status variables specific to the Group Replication plugin FLUSH_PRIVILEGES privilege. https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 19/53 -
Features Added or Changed in MySQL 8.4(4/7) OPTIMIZE_LOCAL_TABLE privilege. MySQL
Enterprise Data Masking and De-Identification. Flushing of data masking dictionaries. Automatic histogram updates. Added the tls-certificates-enforced-validation system variable https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 20/53 -
Features Added or Changed in MySQL 8.4(5/7) Added server system
variables to control the amount of time MySQL accounts that connect to a MySQL server using LDAP pluggable authentication Logging of the shutdown process was enhanced Additions to server startup and shutdown messages. Added the SHOW PARSE_TREE statement https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 21/53 -
Features Added or Changed in MySQL 8.4(6/7) Thread pool plugin
connection information. Information Schema PROCESSLIST table usage. Hash table optimization for set operations WITH_LD CMake option. MySQL Enterprise Firewall enhancements https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 22/53 -
Features Added or Changed in MySQL 8.4(7/7) Pluggable authentication. Added
support for authentication to MySQL Server using devices such as smart cards Keyring migration. Migration from a keyring component to a keyring plugin is supported. MySQL Enterprise Audit. New Keywords. https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html 23/53 -
うーん… Version New feature 8.0 データディクショナリの一新, 自動mysql_upgrade, caching_sha2_password, ROLE, RESOURCE
GROUP, SKIP LOCKED & NOWAIT, INSTANT ADD & DROP COLUMN, innodb_dedicated_server, TempTableストレージエンジン, InnoDBパラレルリード, InnoDBパラレルDDL, FIFO -> CATS, ALTER INSTANCE DISABLE INNODB REDO_LOG, CREATE TABLE AS SELECTのGTID対応, innodb_doublewrite=DETECT_ONLY, UCA 9.0.0対応のコレー ション, JSON_TABLE, 式デフォルト, 式インデックス, Invisible Index, 降順INDEX, UPDATE & DELETEのsemijoin対 応, CTE, Window関数, ICU正規表現, p_s.error_log, JSON_SCHEMA_VALID, Multi-valued Index, Clone Plugin, EXPLAIN ANALYZE, optimize_switch=derived_condition_pushdown, binlog_expire_logs_seconds, GIPK, INTERSECT & EXCEPT, Histgram, Flush lockなしのANALYZE TABLE, ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, binlog 圧縮 27/53 -
うーん…? Version New feature 5.6 i_s.innodb_buffer_page, p_s大幅強化, マルチスレッドレプリ カ, innodb_buffer_pool_load_at_startup,
オンラインALTER TABLE, FLUSH TABLE FOR EXPORT, InnoDB memcached(R.I.P.), GTID, クラッシュセーフレプリカ 5.7 innodb_buffer_pool_sizeのオンライン変更, マルチソースレ プリケーション, gtid_modeオンライン変更, UNDO Log Truncation, optimizer_switchのderived_table, default_password_lifetime(lol), 同一タイミングの複数トリ ガー, sysスキーマ, JSON型もろもろ, mysqlpump(R.I.P.), auto_generate_certs, offline_mode, super_read_only, MySQL Shell debut, Group Replication(rapid), X protocol(rapid), テーブル暗号化, generated column, Logical clock 日々の覚書: MySQL バージョンごとの機能覚書 Complete list of new features in MySQL 5.7 28/53 -
うん Version New feature 4.0 InnoDB, クエリキャッシュ(R.I.P.) 4.1 サブクエリ, UTF-8サポート,
文字コードもろもろ, TIMESTAMP 型の表現変更, mysql_native_password(R.I.P.) 5.0 information_schema, ストアドプロシージャ, トリガー, ビュー 5.1 パーティショニング, binlog_format=ROW, イベントスケ ジューラ, log_output=TABLE, Plugin InnoDB 5.5 準同期レプリケーション, 4バイトUTF-8, インサートバッファ が汎用チェンジバッファに, performance_schemaの原形 日々の覚書: MySQL バージョンごとの機能覚書 29/53 -
8.0がおかしかっただけかもしれない $ w3m -T text/html https://dev.mysql.com/doc/refman/8.4/en/mysql-nutshell.html | wc 1486 7622
62416 $ w3m -T text/html https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html | wc 3903 25624 192679 $ w3m -T text/html https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html | wc 1330 8023 60878 31/53 -
MySQL 8.0 継続的リリース() 2016/09 8.0.0, 2018/04 GA GAクオリティ() メンテナンスリリースで機能が増える ‐
バグFIXを受け入れるために新機能の受け入れも必要 ‐ 新機能どころかSQLレベルの非互換があるバージョンもあった(予約語だったりワーニングだっ たり) ‐ 39/53 -
8.0の(使えなかったかもしれない)新機能 version feature 8.0.14 InnoDBパラレルリード 8.0.17 JSON_SCHEMA_VALID 8.0.17 Multi-valued Index
8.0.17 Clone Plugin 8.0.18 EXPLAIN ANALYZE 40/53 -
8.0の(使えなかったかもしれない)新機能 version feature 8.0.20 binlog圧縮 8.0.21 ALTER INSTANCE DISABLE INNODB
REDO_LOG 8.0.21 CREATE TABLE AS SELECTのGTID対応 8.0.21 UPDATE & DELETEのsemijoin対応 8.0.22 p_s.error_log 8.0.22 optimize_switch=derived_condition_pushdown 41/53 -
8.0の(使えなかったかもしれない)新機能 version feature 8.0.23 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 8.0.27 InnoDBパラレルDDL 8.0.29 INSTANT DROP
COLUMN 8.0.30 innodb_doublewrite=DETECT_ONLY 8.0.30 GIPK 8.0.31 INTERSECT & EXCEPT 8.0.31 Flush lockなしのANALYZE TABLE 42/53 -
bugs.mysql.comの最近 相変わらず(?) 主流は8.0へのレポート 8.1は注目度が高かったからかちらほらあった。8.4はそれより少ない ‐ まあ8.0も5.7もだいたい遅れてくる ‐ 自分のブログのページビューで感じる肌感としては1年後くらいからみんな日本語の情報が欲し くなるみたい ‐
8.4のみで発火する何かはなさそう Access Deniedになるのはだいたい8.0と8.4の両方に影響があるやつ ‐ 47/53 -
SLAVE構文の死 SHOW SLAVE STATUS や CHANGE MASTER TO が全滅 GitHub
orchestrator, innotop, etc.. 予告されていたことなので割り切るしかないけれども、ここで「まだアクティブに 開発が続いているもの」と「もうアクティブではないけれどなんとなく使えていた もの」の差が出てくるかも 49/53 -
ただの愚痴… mysql80> SELECT @@version; +-----------+ | @@version | +-----------+ |
8.0.19 | +-----------+ 1 row in set (0.01 sec) mysql80> SHOW REPLICA STATUS; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corr esponds to your MySQL server version for the right syntax to use near 'REPLICA STATUS' at line 1 51/53