MySQL のマルチマスターのソリューションである、PXC と Group Replication の比較記事が続きます・・・
Percona XtraDB Cluster (Galera) では DDL実行中は、すべてのノードで更新が止まると、以前のエントリーで書きました。
うっかりDDLを流してしまって、更新が止まってしまい、 …
[さらに読む]
MySQL で Host '〜' is blocked because of many connection
errors が出るのってどういうときだっけ…とふと思ったので接続周りを調べてみた。
クライアントごとの連続接続失敗によるブロック
マニュアル https://dev.mysql.com/doc/refman/8.0/en/blocked-host.html にはこう書かれてる (DeepL翻訳)
システム変数 max_connect_errors の値は、何回連続して中断される接続要求を許可するかを決定します。max_connect_errors が接続に成功せずにリクエストに失敗した後、mysqld は何か問題がある (誰かが侵入しようとしているなど) と判断し、FLUSH HOSTS 文、Performance Schema host_cache テーブルを切り捨てる TRUNCATE TABLE 文、または …
[さらに読む]TL;DR
The metadata-cache URI options are:
disconnect_on_metadata_unavailable なるものの存在を知って
mysqlrouter.conf に書いてみたけど反映されなくてよく読んだらURIオプションだった。
$ sudo vim /etc/mysqlrouter/mysqlrouter.conf
..
[routing:myRs_ro]
bind_address=0.0.0.0
bind_port=6447
destinations=metadata-cache://myRs/?role=SECONDARY
round-robin-with-fallback
protocol=classic
disconnect_on_promoted_to_primary=yes ### 間違い!!!
..
↑のようにルーティングセクションにそのまま書くのではなくて、ルーティングセクションの …
[さらに読む]TL;DR
ポートに対応する宛先(デフォルトでは6446はマスター、6447なら全てのスレーブとマスターも(デフォルトだとフォールバックするから))のmysqldが全滅していると、CR_CONN_HOST_ERROR(2003)の後ろのアドレスがmysqlrouterのLISTENポートになる
ただしこの「全滅」は _hidden: true を含む。
TL;DR
Hiding instances on MySQL InnoDB Cluster/ReplicaSet | MySQL Server Blog
MySQL Shell AdminAPI – What’s new in 8.0.21? | MySQL Server Blog
MySQL Shell(metadataに追加)とMySQL Router(metadataを読んだ時にこのタグがついてたら接続を切る)の組み合わせなので、MySQL Serverのバージョンの要件は知らないけれどMySQL ShellとMySQL Routerは8.0.21とそれ以降が必要
まずはフツーにMySQL Shellでサンドボックスを3つばかり作る。
$ mysqlsh -- dba deploySandboxInstance 3306 { --password="" }
$ mysqlsh …[さらに読む]
データベースのバージョンアップの際、アプリケーションの網羅的なテストが可能であれば良いのですが、どうしても難しいケースがあります。 そのような場合、リプレイツールで本番環境に流れているクエリを、試験環境でリプレイ(再現)し、動作確認を取る方法もあります。
リプレイツールを探す
MySQL の クエリ リプレイができるツールを探してみました。
Percona Tookit に pt-log-player というツールが含まれていたのですが、いつのまにか、なくなってました。。。 2013年にリリースされた、percona tookit 2.2 で削除されてしまったようです。
We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. …
[さらに読む]
日常的に、long_query_time
をちょっと超えているクエリが流れていて、スロークエリログが多く出力されているDBってあったりしますよね?
そんなログからノイズとなってしまっている、ちょっと遅いクエリは除いて、非常に重症のクエリのログだけに絞って見たいときどうするか。
今まで、grep や awk
でゴニョゴニョしてがんばってたんですが、pt-query-digest を使えば簡単にできました・・・
pt-query-digest でフィルタだけする
pt-query-digest
はスロークエリログを集計し、「遅いクエリランキング」等のレポートを生成できるツールです。SQLチューニングする時によく使っています。
…
[さらに読む]