TL;DR
-
たとえシングルプライマリモードだろうと、GTIDは「そのマシンが使うレンジ」が先に割り当てられて、その中からGTIDを払い出していく
- レンジの大きさは
group_replication_gtid_assignment_block_sizeデフォルト100万で決められる
- レンジの大きさは
- 元プライマリが使っていたGTIDレンジは、割り当てられたレンジが使い切られない限り、再びプライマリに戻った時に再利用する。
TL;DR
group_replication_gtid_assignment_block_size デフォルト100万で決められる
バイナリログからデータを吸い出したいケース
MySQL の障害復旧というと、まずバックアップからの復元(PITR)が思い付きます。 しかし実際の運用では、データベース全体を過去の時点へ戻したいとは限りません。
例えば、アプリケーションのバグなどで、レコードごとに異なるタイミングで誤った更新が行われることがあります。このような場合、レコードごとに異なる時点のデータが必要になります。
このような場合に役立つのがバイナリログ( binlog )です。 バイナリログ には INSERT、UPDATE、DELETE といった変更履歴が記録されているため、
を後から追跡できます。
バイナリログの形式
binlog …
[さらに読む]メタデータロックとは
メタデータロックとはトランザクションの実行中に、そのトランザクションで利用したスキーマやテーブル定義などのメタデータが変更されないように取得するロックです。
DDLの実行時には、テーブル定義などのメタ情報に対するロックである、排他(X)レベルのメタデータロック(MDL)を取得します。
また、ALTER TABLE ADD COLUMN
...などの一部のDDLの実行開始時にXロックを取り、その後他のDMLを並列で実行できるようにロックレベルをダウングレードして、DDL完了時に再度Xロックを取得する仕組みで2回排他ロックを取得したりします。
…
[さらに読む]MySQL ShellのdumpInstanceとMySQL ShellのdumpBinlogs ではなく MySQL ShellのdumpInstanceとmysqlbinlogの組み合わせでのPITR
テスト用コンテナの起動とテスト用のデータ作成とハートビートの書き込み。GTIDは有効な状態。
$ yt-sandbox 8.0
[3254174] NOTE: Generate Sandbox directry into /home/yoku0825/yt-sandbox/bravo
[3254174] NOTE: Node1 Container Ipaddress: 172.17.0.2
Sandbox deployed into /home/yoku0825/yt-sandbox/bravo
$ cd /home/yoku0825/yt-sandbox/bravo
$ ./n1 -e "CREATE DATABASE sbtest"
$ sysbench --mysql-host=172.17.0.2 --mysql-user=root oltp_read_write prepare --table-size=100000 --tables=10
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
Creating table 'sbtest2'... …[さらに読む]
MySQL の各バージョン間のパラメータの差分を見ることができる MySQL Parametersという便利ページがあるんですよ。
もともと8年前(2018年)に Vue.js の練習として作ったものだったんだけど、JavaScript はあまり触る気になれなくて放置してた。ruby.wasm の登場で Ruby でもブラウザ上でプログラムが動かせるようになったので 3年前(2023年)に ruby.wasm で作り直した。
だけどフルセットの Ruby をブラウザで読み込むんで、起動が重くなったんですよ。まあそれはそう。 モバイルデバイスだと厳しいくらい。そのうちどうにかしたいなーとは思ったんだけど、そのままにしてた。
RubyKaigi 2026 に参加して picoruby.wasm の話を聴いたことで、MySQL Parameters を …
[さらに読む]Oracle社のMySQL Blogでは、非常に多くのMySQLに関する情報が公開されています。 blogs.oracle.com最近(2026年2月頃から)、特に運営(経営)体制やMySQLに対する取り扱いのポリシーなどに大きな変更があり、特に活発にその方面の話題も投稿されています。 あまりに多すぎて、そして動きが速すぎて、私自身もついていききれていないのが正直なところです。 (ずっと「ぼくらはHeatWaveの会社だよ! MySQLなんて片手間にやってるだけだし、バグ報告やパッチ提案なんか知~らないよ~」とか言っていたのが急に「ねぇねぇ、コミュニティのみなさん、ユーザのみなさん、なかよくし…
TL;DR
日々の覚書: GRANTでデータベース名にワイルドカードを指定することとpartial revokesと でもちょっと書いていた、「GRANTでデータベース名にワイルドカード」を一捻りしたバージョン。
「一般ユーザーに(データベース名は動的に変わる、などの理由で)任意のスキーマに対するCREATE,
DROPその他の権限を割り当てたいけど mysql と
performance_schema と sys …
2026年4月27日に「日本MySQLユーザ会会(MyNA会) 2026年04月」というイベントをオンラインで開催しました。mysql.connpass.com 2月にユーザ会会を開催したばかり(現地+配信)ですが、2ヶ月ほどでまたイベント開催です。どうした日本MySQLユーザ会。 MySQL 9.7 がリリースされた! 4月21日に 新しいLTSシリーズの最初のバージョンとなる MySQL 9.7.0 LTS がリリースされました。ここから8年間サポートされる「本番投入に使える」バージョンです。このリリース直前に急遽多くの機能が実装に加えられ機能面でも楽しみが多いバージョンでありますが、まだ…
TL;DR
enable_cascade_triggers なる機能が増えていて面白かった
I have a MySQL 9.7 Early Release (first) ..
ダウンロードは https://t.co/eD2BeHLWbZ からだ!
MySQL Community Early Access Builds | mysqlhttps://t.co/fG8lMgfL9w
— yoku0825 (@yoku0825) March 14, 2026
I have a MySQL 9.7 Early Release 2 ..
MySQL 9.7.0 Early Access Release "2" !?https://t.co/UYa8jvUDZS …
[さらに読む]
こちらでは、パーティション単位でデータを暗号化する例を記載しています。
もし、開発環境などに重要な情報を持っていく場合に、暗号化した方がいいケースも有ると思いますので、そんな時にパーティションに分けて並列で暗号化する事で暗号化の時間を短縮する事も可能です。
Sample Table :
mysql> show create table t_partition_poc\G
*************************** 1. row ***************************
Table: t_partition_poc
Create Table: CREATE TABLE `t_partition_poc` (
`sid` int unsigned NOT NULL,
`ClientId` int unsigned NOT NULL DEFAULT '0',
`ContentId` int unsigned NOT NULL DEFAULT '0',
`ipAddress` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`os` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'No Information',
`status` tinyint unsigned NOT NULL DEFAULT '1',
`clickDate` date …[さらに読む]