MySQL リリースノートでわいわい言う勉強会 8.0.28 を開催しました。 今年は、今までの常識に囚われずに色々試していこうということで、平日18時からの開催という変則的なトライアルでしたが、たくさんの人に参加していただき、ありがとうございました。主に喋っていたのは6人くらいだったでしょうか。たくさんの事を教えていただき、とても勉強になりました。mysql.connpass.com 今回は、何はなくともコレを世間に広く知らしめるべし、と感じたので、最初に貼っておきます。@yyamasaki1 さんがプレゼン資料の中で紹介してくれていた1ページです。要約すると、「MySQL配布ファイルの署名…
MySQL 8.0.28 から performance_schema
に
CPU_TIME
を記録できるようになりました。
これまでも実行時間は performance_schema
から確認できていました。ただ、実行時間が長いだけでは、そのクエリが必ずしもCPUに負荷をかけているクエリとは言いきれませんでした。
今回の機能追加で、CPUに負荷をかけているクエリがバシっと performance_schema
から確認できるようになったのは嬉しいですね(欲を言うと、CPU_TIME
を
スロークエリログにも出してほしいなぁ)。
デフォルトではOFFになっています。以下の設定を my.cnf …
[さらに読む]「竈門禰󠄀豆子」を MySQL に保存できるとかできないとかいう話題を見て、そう言えば MySQL の Grapheme Cluster 対応ってどうなってるんだっけ…と思ってググってみたら、MySQL 8.0.28 のリリースノートにこんな文を見つけた。
International Components for Unicode version 67 introduced a new
implementation for \X
(match a grapheme cluster),
which requires locale data not currently included with MySQL.
This means that, when using the version of ICU bundled with
MySQL, a query using \X
raises the error
ER_REGEXP_MISSING_RESOURCE
; when using ICU supplied
by the system, we report
ER_WARN_REGEXP_USING_DEFAULT
as a Note. (Bug
#33290090)
これは MySQL 8.0.28 で Grapheme Cluster の正規表現の \X
…
Illegal mix of collations
Illegal mix of collations
エラーは
異なる照合順序で結合や比較を行った場合に発生するエラーです。
mysql> SELECT CONCAT(_utf8mb4 'A' COLLATE utf8mb4_bin, _utf8mb4 'B' COLLATE utf8mb4_unicode_ci); ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_bin,EXPLICIT) and (utf8mb4_unicode_ci,EXPLICIT) for operation 'concat' mysql> SELECT _utf8mb4 'A' COLLATE utf8mb4_bin = _utf8mb4 'B' COLLATE utf8mb4_unicode_ci; ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_bin,EXPLICIT) and (utf8mb4_unicode_ci,EXPLICIT) for operation '='
エラーが発生しない場合もある
照合順序が異なっていても、エラーにならないケースもあります。 latin1_swedish_ci
と
utf8mb4_unicode_ci
と異なる照合順序で比較していますが、エラーなく実行することが出来てます。
mysql> …[さらに読む]
TL;DR
-
そもそも5.1から5.7へのレプリケーションはサポートされていないのは知っている
-
レプリカが
character_set_server = utf8mb4
で起動した後、SET GLOBAL character_set_server = utf8
はしていたけど、mysqldを再起動しないとI/Oスレッドはutf8mb4でコネクションをネゴシエートしようとして、5.1側に「そんなcharsetは知らん」と言われていたようだ。レプリカのmysqldを再起動して解決。
MySQL 5.1からMySQL 5.7にお引越ししようと、5.7のインスタンスを作って5.1をソースにした
CHANGE MASTER TO
してから START SLAVE
した。
2022-01-20T17:47:46.873075+09:00 19926 [Note] 'CHANGE MASTER TO FOR CHANNEL '' executed'. Previous state master_host='', master_port= 3306, …
[さらに読む]
TL;DR
-
慌てず騒がず、エディタでダンプを開いて次の行を消してください
-
WARNING: --master-data is deprecated and will be removed in a future version. Use --source-data instead.
- または
WARNING: --dump-slave is deprecated and will be removed in a future version. Use --dump-replica instead.
-
-
Affects Meすると早く修正されると思います
Command-line options for mysqldump that contain the terms “master”, “slave”, or “mts”.
…
[さらに読む]