MySQL
自分用のメモです。 MySQL 5.7 デフォルトは mysql_native_password caching_sha2_password は利用できない ただし、クライアントは caching_sha2_password をサポート MySQL 8.0 デフォルト は caching_sha2_password default_authentication_plugin パラメ…
caching_sha2_password は 少なくとも1回はセキュアな経路を必要とする caching_sha2_password 形式のパスワードを使った、平文の接続 をする場合、その過程で、少なくとも一度は事前に、暗号化されたセキュアな経路を通して認証成功させる必要があります。…
Background MySQL 8.0 で utf8mb4のデフォルトの COLLATION (照合順序) が utf8mb4_general_ci から utf8mb4_0900_ai_ci に変更されました。 COLLATE を指定せず、SET NAMES <CHARSET> を実行すると、そのキャラクタセットのデフォルトの collation が利用されます。 </charset>…
mysql_native_password の廃止が近づいてきた... MySQL 8.4 では mysql_native_password がデフォルトで無効化されてしまいました。 そろそろ、mysql_native_password 方式の利用の撲滅に本気にならないといけないようです。 sakaik.hateblo.jp mysql_native…
TL;DR MySQL は wait_timeout に設定した値ぴったりに、接続が切られる Aurora は wait_timeout の値 + 最大1分 に、接続が切られる エラーメッセージも違う wait_timeout とは wait_timeout はアイドルセッションに対するタイムアウトを指定するパラメータ…
この記事は MySQL Advent Calendar 2023 の23日目の記事です。 MySQL Shell の dumpInstance の chunk ロジックの説明エントリーその2です。 前回の記事では、主キーが数値型以外のケースを説明しました。主キーが数値型以外では、LIMIT句を利用して線形に…
この記事は MySQL Advent Calendar 2023 の21日目の記事です。 dumpInstance dumpInstance は論理バックアップを取得する mysqlsh のコマンドです。 テーブルを分割し、並列でSELECTし、高速にバックアップしてくれます。 このように、1つのテーブルが複数…
8.0 のGA以降、Internal Temporary Table まわりは改良が重ねられきました・・・ ネットの記事では既に古い内容になってしまっているものもあり、改めて最新の挙動を確認して整理してみました*1。 なお、MySQL 8.0 の Internal Temporary Table の動作は @ke…
サマータイムが終わらない? アメリカでサマータイムを恒久化する動きがあるようです。 どれぐらい現実化する可能性があるのかわかりませんが、仮に、決定された場合、どのような作業が必要になるのか調べておきます。 下院を通過してバイデン大統領が署名す…
character_set_server と collation_server これらのパラメータは、データベースを作成する際に、何もキャラクタセットや照合順序を明示的に指定しなかった場合に、採用されるキャラクタセット・照合順序です (ちなみにテーブル作成時に何も指定しなかった…
MySQL 8.0.28 から performance_schema に CPU_TIME を記録できるようになりました。 これまでも実行時間は performance_schema から確認できていました。ただ、実行時間が長いだけでは、そのクエリが必ずしもCPUに負荷をかけているクエリとは言いきれません…
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): …
MySQL Shell のパラレルテーブルインポートの実装が興味深かった MySQL Shell のパラレルテーブルインポート MySQL Shell 8.0.17 で導入された MySQL Shell パラレルテーブルインポートユーティリティ util.importTable() は、大規模なデータファイルの MySQ…
時々、頭の中でMySQLの気持ちになって考えた実行計画と違うものが出力されるときがあるんですよね。 まぁ、実用上、問題になることはなかったので、「MySQL ヨクワカランなー」と思って、スルーしてました。 ところが、最近、MySQL 8.0 をいじってたら、イメ…
3ヶ月ブログをサボっておりました。。。リハビリがてらのエントリー。 The client was disconnected by the server because of inactivity エラー MySQL 8.0.24 からタイムアウト(wait_timeout / interactive_timeout)時のエラーメッセージがに変更になり…
Orchestrator orchestrator は マスターの障害検知およびレプリカのマスター昇格(フェイルオーバー)を自動で行うソフトウェアです。 MySQLのマスター昇格といえば、MHAがデファクトスタンダードでしたが、MHAはメンテナンスモードになって久しい・・・とい…
技術顧問や講演の場で、論理削除について見解を聞かれる場面がよくあります。アプリケーション開発者の方にとって、身近なデータベースの疑問なんでしょうね。 しっかり言語化できてなかったので、ブログに書いておきます。 論理削除をどう考えるかは、諸派…
MySQLで20年ほど遊んでいますが・・・知らないことも、まだまだあります。 GIS(Geographic Information System、地理・空間情報) はそのうちの1つです。ということで、ほとんど触れたことのない、GISを入門してみます。 なお、このエントリーは MySQL 8.0 …
InnoDBのレコード長の限界 InnoDBのデフォルトのページサイズは、16Kです。この場合、最大レコード長は約8000バイトです。マニュアルで「約8000バイト」と曖昧な言い回しになっているのは、データの保存に使える領域以外にメタデータを保存する領域が必要だ…
Index dive とは range スキャンの場合に、オプティマイザーがその範囲に含まれる行数を正確に見積もるための仕組みです。 インデックスダイブは特に値の分布が偏っているデータに対して、効果を発揮します。 eq_range_index_dive_limit パラメータ インデッ…
このエントリーは MySQL Advent Calendar 2020 の 12/20 のエントリーです。 問題を再現させるためにバイナリログが必要 MySQL は OSS です。誰でも無料で自由に使うことができます。 一方、Oracle や Percona といったデータベースを専門とする会社にお願い…
先週、MyNA(日本MySQLユーザ会) 忘年LT大会 2020に参加して、飲みながらLTをネタにワイワイしてきました。 自分からは、ここ最近取り組んでいた、MySQL Shell のバックアップ機能のバグについてLTしました。 実際にどうやってデバッグしたか*1 など、ワイワ…
このエントリーは MySQL Advent Calendar 2020 の 12/7 のエントリーです。 照合順序(COLLATION)とは 照合順序は文字列の比較やソート順のルールのことです。各キャラクタセットごとに照合順序が定義されています。 -- SHOW COLLATIONS で一覧が見れる mys…
MySQL 8.0 でヒストグラム統計が追加されました。従来、MySQLはデータが均等に分布していると仮定し、実行計画を組み立てていました。 ヒストグラムを使えば正確なデータの分布に基づいて、より最適な実行計画が選択されるようになります。 yakst.com ヒスト…
pt-stalk は、vmstat や psといったOSから見える情報や SHOW PROCESSLIST SHOW GLOBAL STATUSといったDBの情報など、MySQLのトラブルシュートに必要な情報をごっそり収集するツールです。 $ sudo ls -l /var/lib/pt-stalk total 1428 -rw-r--r--. 1 root roo…
MySQL では、パスワードのハッシュ値を指定してユーザを作ることが出来ます。 mysql> SELECT authentication_string FROM mysql.user WHERE User = 'usr'; +-------------------------------------------+ | authentication_string | +---------------------…
前回のエントリーでMySQL Shellのバグについて書きました。バグの原因を調査するために、MySQL Shellをビルドしたんですが、ビルドに苦労しました、、、 MySQL Shell をビルドするために乗り越えた障害と対応を方法をメモしておきます。 まず、MySQL Shell …
このバグは MySQL Shell 8.0.23 で修正済みです。 前回のエントリーで MySQL Shell の dumpInstance にはバグがあると書きました。 今回は、そのバグについてです。 どんなバグか バックアップの一貫性が失われるバグです。一貫性が失われるている状態とは、…
MySQL Release note でわいわい言う勉強会 8.0.22 でLTしてきました。 MySQL Shell の dumpInstance の仕組み MySQL Shell のバックアップ機能 dumpInstance がどのようにして、一貫性のあるバックアップを実現しているか説明しました。 8.0.21 までは FLUSH…
ALTER TABLE xxx MODIFY 〜 でキャラクタセットを変換するのと、ALTER TABLE xxx CONVERT TO〜 で変換するのは、どう違うんだっけ? ってなったので、おさらい。 データベースのデフォルトキャラクタセット MySQL はカラム単位でキャラクタセット(文字コー…