このエントリは ConoHa Advent Calendar 2021 と MySQL Advent Calendar 2021 の1日目の記事です。
ついに6回目を迎えた、「定点観測っぽく1GBのVPSでひたすらビルドするシリーズ」、最近のMySQLのビルドにはパワーが必要ですね。
-
2018年 …
このエントリは ConoHa Advent Calendar 2021 と MySQL Advent Calendar 2021 の1日目の記事です。
ついに6回目を迎えた、「定点観測っぽく1GBのVPSでひたすらビルドするシリーズ」、最近のMySQLのビルドにはパワーが必要ですね。
2018年 …
認証がプラグイン化された最近のMySQL(5.5くらい?)の認証時のプロトコルをちゃんと理解してなかったので調べてみた。
基本的にはこんな感じ
クライアントが接続するとサーバー(mysqld)から次の内容のパケットが送られる:
caching_sha2_password とか
それの応答としてクライアントが次のパケットを送る:
PHP Conference Japan 2021 に参加しました。
参加といっても家族との兼ね合いだったりで、正直「自分のセッション以外はほぼほぼ不参加」でした(´・ω・`)
「オンラインxx」の「xx」が終わった瞬間に現実(?)に引き戻される感があるので、来年はオフラインでやれる状態になっていると良いですね。。
----
最初は応募しよう応募しようと思いつつ、 転職 もしたばっかで案外忙しい…と諦めていたんですが、アディショナルタイムのツイートを見ていてもたってもいられなくなり、結局応募しました。
…
[さらに読む]TL;DR
CREATE TABLE t1 (num int);
INSERT INTO t1 VALUES (1), (2), (3);
-- INNER JOIN で WHERE
SELECT * FROM t1 JOIN t1 AS t2
ON t1.num = t2.num
WHERE t2.num IN (1, 3);
+------+------+
| num | num |
+------+------+
| …[さらに読む]
TL;DR
フェイルオーバーシナリオ
スイッチオーバー(手動での切り替え)を含めてざっと思いつくのはこれくらい。
スイッチオーバー
…
[さらに読む]
他にも出る要因はあるはずだけど、今回は「トランザクション中に SET GLOBAL read_only =
1 」をやろうとして出た。
珍しかったので記念パピコ。
mysql80 25> BEGIN;
Query OK, 0 rows affected (0.00 sec)
mysql80 25> SET GLOBAL read_only = 1;
ERROR 1192 (HY000): Can't execute the given command because you have active locked tables or an active transaction
実際には BEGIN で始めたわけじゃなくて、迂闊に autocommit = 0を指定したら出た。
TL;DR
レプリカにだけgenerated columnを足す構成 + binlog_format = ‘ROW’ かつgenerated columnを使ったインデックスがあると、そのインデックスの変更はレプリカでリプレイされない(インデックス上はgenerated columnのデータ型の暗黙のデフォルトになったり、リーフの数がそもそもおかしくなったり)
インデックス再作成、 ALTER TABLE .. ENGINE = InnoDB
でも望む状態にはならなかった。
5.7.27のレプリケーション構成を作って、マスターにテキトーなテーブルを作る。
binlog_format, binlog_row_image
はデフォルトのまま。
$ make_replication_sandbox …[さらに読む]