Update for last week (2019-07-22 ~ 2019-07-28)
Release note
8.0.17, 5.7.27, 5.6.45がリリースされました!!! 新しいMaintenance Release()によって大量のエントリがあるので、重要な、もしくは面白い機能をリストアップします。
今回から更新のあったMySQL High Availability ブログもOrganizationブログに追加しました! また、Categoryを作成してタグ付けすることにしました。
(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)
Changes in MySQL 8.0.17 (2019-07-22, General Availability)
- Character Set Support
- utf8mb4 character-setにutf8mb4_0900_binが追加
- 比較結果はutf8mb4_binとutf8mb4_0900_binで同じだが、0900_binのほうがより高速
- pad属性(The pad attribute)にスペースを使うかパディングをしないかの違いがある。詳しくは→ https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
- utf8mb4 character-setにutf8mb4_0900_binが追加
- Componene Notes
mysql_current_thread_reader
コンポーネントが利用可能- 実行中のthreadの情報を取得可能できそう(詳細は未調査)
- Configuration Notes
- ホスト名にASCII文字で255文字まで利用可能
- Debugging Notes
- Deprecation and Removal Notes (今回のリリースでRemovalはない)
- FLOAT(M,D), DOUBLE(M,D)のシンタックスがdeprecated
- 文字列データ型におけるBINARY属性をdeprecated,
_bin
collationがあるのでこれを利用すること AND
,OR
,NOT
演算子のシノニムである&&
,||
,!
がdeprecatedZEROFILL
属性がdeprecated, プログラムから明示的にLPAD()
等を使うようにFLOAT
,DOUBLE
,DECIMAL
とそのシノニムの型においてUNSIGNED
属性はdeprecatedFLOAT
,DOUBLE
とそのシノニムにおいてAUTO_INCREMENT
のサポートはdeprecatedSQL_CALC_FOUND_ROS
とFOUND_ROWS() functionはdeprecated
- Packageing Notes
- Performance Scehma Notes
- Performance_schemaのinstrumentationにおける、
rwlock
という名前だったpriority read/write locksはprlock
に変更され、wait/synch/prlockから始まるように変更。またunlock操作の情報もていきょうされるようになる
- Performance_schemaのinstrumentationにおける、
- Plugin Notes
- Functionality Added or Changed
- [JSON] multi_valued indexes on JSON arrays
- [JSON] JSON_SCHEMA_VALID()とJSON_SCHEMA_VALIDATION_REPORT()関数が追加
- mysqldumpで
--set-gtid-purged=COMMENTED
が指定可能 SHOW CREATE USER
によって出力されるIDENTIFIED WITH
句によって表示されるhash文字列がターミナルの改行等を壊さないようにprint_identified_with_as_hex
システム変数が追加- DOUBLE, FLOAT, REALへの明示的なキャストがCAST(), CONVERT()によって可能
- Redo Log Archiving https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-redo-log-archiving
- Clone Plugin
- リモートのMySQLサーバからInnoDBのデータをコピーすることが可能になる、Group Replicationにおいてはメンバーとして追加することが可能
- https://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html
- https://dev.mysql.com/doc/refman/8.0/en/group-replication-cloning.html
- Group Replicationのcompatibility policiesが同一メジャーバージョンではなく、patchバージョンに変更
- [optimizer]
NOT IN (subquery), NOT EXISTS (subquery), IN (subquery) IS NOT TRUE, or EXISTS (subquery) IS NOT TRUE
これらをantijoinに置き換える - 大きいデータセットに対するparallel read threadのパフォーマンス向上
- Bugs Fixed
- many...
Changes in MySQL 5.7.27 (2019-07-22, General Availability)
おそらく来週
Changes in MySQL 5.6.45 (2019-07-22, General Availability)
P-Rお待ちしていますm(_ _ )m MySQL-weekly repository
Bugs
serverity >= S5(Performance)
でupdatedでdesc sort、結果の今週分を見る
- Accelerated AES with ARMv8 Crypto Extensions in yaSSL
- status:
Won't fix
- ARMv8固有の暗号化拡張(cryptography extensions)を利用することでAESを高速化できるという提案
Environment
やPlatform \ Case
の部分は伏せ字になっているのか文字化けしているのか、こういうものなのか私の知識ではわからない- 経緯を追ってみるとなにやら面白いけど最終的に
YaSSL support will be removed in an upcoming release.
となって終わっている
- status:
Organization blogs
- MySQL server blog: https://mysqlserverteam.com/
- The MySQL 8.0.17 Maintenance Release is Generally Available
- MySQL Server Blogによる8.0.17 Maintenance Releaseの告知
- Provisioning by Cloning: Clone Pluginについての紹介,
Clone local replica
,Clone remote replica
,Clone Remote provisioning
,Clone Replication Coordinates
,Suport cloning encrypted database
が簡単に紹介されている - Multi-valued indexes: 1ドキュメント内のJSON arrayの中身の複数の値にindexが貼れるようになった
- JSON Schema: JSON_SCHEMA_VALID(), JSON_SCHEMA_VALIDATION_REPORT()の追加
- Optimizer improvements: NOT EXISTS, NOT INがanti-semi-joinに書き換えられるようになった
- Volcano iterator: Volcano modelに基づいて、コードがシンプルになっている. これはhash joinや EXPLAIN, EXPLAIN ANALYZEを改良するための前準備だそう
- Character Sets: Character setsとなっているがCollationの話、utf8mb4_binと同等だがソートが速いutf8mb4_0900_binが追加
- Replication: binlog-cacheから溢れてテンポラリファイルに書き出したbinlogも暗号化されるようになった
- Group Replication: Clone pluginを取り込んだリカバリ機能
- Router: MySQL Routerのモニタリング基盤の追加とモニタリング用のRESTインターフェースの追加
- MTR testsuite: MyISAMが必要だったテストケースを分離
- Other/Deprecation: いろいろ
- MySQL Shell 8.0.17 – What’s New?
- MySQL Shell 8.0.17の新機能紹介
- 特にドキュメントへのリンクがあるわけではないのでかじょうがきの 変更リストを見たい場合は見ると良さそう
- MySQL InnoDB Cluster – What’s new in Shell AdminAPI 8.0.17 release
- MySQL ShellのAdminAPIの新機能紹介
- AdminAPIを使ったAutomatic Node Provisioningがコマンド付きで詳細に解説されている
- Clone: Create MySQL instance replica
- Clone pluginを使ったクローンの作成の解説
- これに従ってやれば一旦クローンを作成してみることができる
- MySQL Shell Plugins – Introduction
- タイトル通りMySQL Shell pluginの導入
- Shell pluginを使ってJavaScriptでカスタムな情報を加えるサンプルが紹介されている
- The MySQL 8.0.17 Maintenance Release is Generally Available
- MySQL High Availability blog: https://mysqlhighavailability.com/
MySQL 8.0.17 Replication Enhancements
- Enhanced Group Replication distributed recovery with automated instance cloning.
- Copy pluginによるによるCloneの作成とGroup Replicationでのmember追加についての紹介
- Enhanced cross-version inter-operability for Group Replication.
- Group Replicationにおいて、バージョン間の際をうまく扱うための改善があったらしい、詳細は不明
- Encryption of conditional and temporary, on-disk, binary log capture cache.
- bufferから溢れてdiskに落ちたbinlogも暗号化されるようになった
- Protocol compression support for mysqlbinlog.
- mysqlbinlogでリモートサーバからbinlogをfetchするときに暗号化することができる
- Enhanced Group Replication distributed recovery with automated instance cloning.
Automatic provisioning in Group Replication
- Group replication, Clone pluginを使う際に新しく入った
group_replication_clone_threshold
、Purged Data, Credentialについての紹介
- Group replication, Clone pluginを使う際に新しく入った
- A Breakthrough in Usability – Automatic Node Provisioning
- 2つ前のblogで公開されたdemo動画 (MySQL InnoDB Cluster – Automatic Node Provisioning)のより詳細な解説
- ここでDistributed recoveryとClone Pluginの違いや挙動の説明が読める
- この記事を読んでClone pluginがlogical backupではなくphysical backupをとっていることがわかった
- group replicationにおいて、MySQL Shellを使って
<Cluster>.addInstance()
を実行してからの挙動のフローチャートもあり、このあたりの操作の整理がされている
- mysqlbinlog: support for protocol compression
- mysqlbinlogでリモートサーバからbinlogを取得する際に
--compress or -C
で圧縮することが可能
- mysqlbinlogでリモートサーバからbinlogを取得する際に
- Binary Log Encryption: Encryption of Temporary Capture Files
- binlogを吐く際にbufferから溢れたbinlogをTemporary fileに吐くときにこれまではそれを暗号化することができるようになった
- Improved handling of different member versions in Group Replication
- Group Replication内では基本的に8.0.17からパッチバージョンが同じもののみしかサポートされない、しかしローリングアップデートの際などは複数のバージョンが混在する場合がある。その際のPrimary member selectionやcompatibility, Upgrade作業に関する情報
- 筆者がGroup Replicationに詳しくないので、詳細はリンクへ。
- Percona blog (MySQL): https://www.percona.com/blog/
- Connect to MySQL after hitting ERROR 1040: Too many connections
- MySQLからError 1040(Too many connections)が返された場合にどうするかという解説
- Percona Server for MySQLでは
extra_port
, MySQL 8.0.14以降ではadmin_port
等の障害対応用のportを開けられるので、事前にそれを開けておきましょうという話 - gdbで刺してmax_connectionをいじるというハックも紹介されている (https://www.percona.com/blog/2010/03/23/too-many-connections-no-problem/ )
- Percona Monitoring and Management (PMM) 2 Beta 4 Is Now Available
- Percona Monitoring and Management(PMM)の2 Beta 4がリリースされた。
- 各種機能が充実したのと特にProxySQLのmonitoringが可能になった
- Debian 10 “Buster” Packages Available for Percona Products
- Percona packaging repositoriesにDebian 10(Buster)用のパッケージがリリースされた
- Percona Server, Percona XtraBackup 2.4, Percona Toolkit等がパッケージから利用可能
- Connect to MySQL after hitting ERROR 1040: Too many connections
- MySQL道普請: https://gihyo.jp/dev/serial/01/mysql-road-construction-news
- Nothing
- gihyo.jp MySQL-tag
- Nothing
- Yakst MySQL-tag: https://yakst.com/ja/tags/mysql
- Nothing
Personal blogs
- MySQL InnoDB Cluster from scratch – even more easy since 8.0.17
- MySQL Router 8.0.17 and the REST API
- Overview on MySQL Shell 8.0.17 Extensions & Plugins and how to write yours !
- lefred-san
- MySQL Shell Extensionをpythonで作るサンプル
- ここではコマンドを叩くとランダムな文字列を返すサンプルを使って紹介している
- 公式ブログの方ではJavaScriptのサンプルがあったので、jsが良い人はそちらを参照のこと
- Create an Asynchronous MySQL Replica in 5 minutes
- lefred-san
- GTID前提でClone Pluginを使ってreplicaを5分で作成するサンプル紹介
- これとyoku0825さんの記事を合わせて見ればドキュメントを読み解かなくても簡単に試すことができる
- MySQL 8.0.17 and Drupal 8.7
MySQL InnoDB Cluster, automatic provisioning, firewall and SELinux
MySQL 8.0.17でついにCloneプラグインが入った
- yoku0825-san
- Clone Pluginを使った早速のやってみた記事
- まずは試してみたい方におすすめ
- MySQLが刺さった時にざっと見るためのメモ
- yoku0825-san
- これぞACEの記事といった熟練MySQLerの記事
- こういうメモがサラッと出てくるあたりがプロ
- 必読なので要約無し
- 小ネタ/MySQL 8.0.17 で utf8mb4_0900_bin を試す
- hmatsu47-san
- utf8mb4_0900_binとutf8mb4_binの簡単な比較
- 1クエリではどちらが速いかを断言することはできなかった様子
- ALTER TABLEにかかる実行時間を見積もりたい
- tom__bo
- ALTER TABLEにかかる時間を実行前に見積もるための実験
- いくつかのtypeのALTER TABLE実行を100MB, 1GB, 10GBのテーブルサイズに対して実行、またそれぞれでon/off memory時の違いも実験
このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)