Slide 1

Slide 1 text

HeatWave をオンプレの MySQL と同じように使おう としてみた! 無理だった 2025/04/17 yoku0825 祝2周年 HeatWave の 〇〇 やってみた!LT大会!!

Slide 2

Slide 2 text

\こんばんわ/ yoku0825@とある企業のDBAだったもの オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitterだったもの: @yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会副代表 ‐ MySQL Casual ‐ 1/19

Slide 3

Slide 3 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 2/19

Slide 4

Slide 4 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 3/19

Slide 5

Slide 5 text

2台で高可用構成を組みたい Active / Standby 型の高可用構成 Standbyにトラフィックを流しちゃうとどっちが転けても影響が出るのでStandbyは何もしない ‐ GroupReplication3台と比べるとコストが3割減る というかGroupReplication3台にするとコストが1.5倍になる ‐ 台数が気にならないならGroupReplicationでいいはず ‐ HeatWave MySQLの「読み取りレプリカの作成」ではこれはできない それぞれ別個のHeatWave MySQLインスタンスを作って「チャネルの作成」でつなげて、DNS管理でCNAME をかぶせて切り替える? ‐ そんなことするなら単にComputeの上にフルスクラッチで作った方がマシ ‐ 4/19

Slide 6

Slide 6 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 5/19

Slide 7

Slide 7 text

レプリケーション遅延のないALTER TABLEを実現するツールが使いたい pt-osc 使えた ‐ gh-ost おま環かもしれないけど成功していない… ‐ Rolling Schema Upgrade SET SESSION sql_log_bin = 0 を駆使してレプリカから ALTER TABLE を流しちゃうアレ ‐ 使えない ‐ Rolling Schema Upgradeの変形 レプリカに先に適用してからフェイルオーバー(特に2台構成だと楽) ‐ 使えない ‐ 6/19

Slide 8

Slide 8 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 7/19

Slide 9

Slide 9 text

Point-In-Time-Recoveryがしたい フツーにできる ただしバイナリログを手元に残しておくには一ひねり必要 手元にあるとホットスポットになっているテーブルとか長すぎるトランザクションの検出とかに捗るんだけれども ‐ 8/19

Slide 10

Slide 10 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 9/19

Slide 11

Slide 11 text

GroupReplicationのSECONDARYを読み取り用に活用したい 無理っぽい HAだけに3倍料金… 中の人的な文脈だとよくわかる Semisyncで2台HAするシステムとGroupReplication SinglePrimaryでHAするシステムだったらMySQL Router抜きにしても後 者の方がずっと実装しやすいしメンテナンスが楽 ‐ 使う側としてはそれはちょっとコストが… ‐ 10/19

Slide 12

Slide 12 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 11/19

Slide 13

Slide 13 text

Change Data Capturingにも使えるようにしたい バイナリログを吸い上げたりするやつ Debeziumとかtroccoとか ‐ できるにはできるんだけど読み取りレプリカが log_replica_updates=OFF なので必ずソースか ら取らないといけない バイナリログ吸うだけならそれでもいいかも知れないけど全件同期からやり直したい時にもソースから吸う… ‐ 12/19

Slide 14

Slide 14 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 13/19

Slide 15

Slide 15 text

ディスク使用量の分析をしたい yoku0825的「MySQLが壊れました」4年連続第1位受賞(個人調べ) アラートになったとしても、バイナリログが膨らんでいるのかibdファイルが膨らんでいるのか 稀にibtファイルが膨らんでいたりすることも ‐ ibd/ibtファイルに関しては information_schema.INNODB_TABLESPACES である程度 想像がつくけれど バイナリログのホットスポットになっているテーブルがどこか ( transaction_length が大きいトラン ザクションはどれか)とかを調べにくいので「じゃあどうすれば容量に効くの?」が調べにくい 設定によって自動拡張できるのが救い Always Freeだとオフラインでも拡張できなくて二度と更新できないHeatWave MySQLができあがった() ‐ 14/19

Slide 16

Slide 16 text

オンプレの MySQL と同じように #とは 2台で高可用構成を組みたい レプリケーション遅延のないALTER TABLEを実現するツールが使いたい Point-In-Time-Recoveryがしたい GroupReplicationのSECONDARYを読み取り用に活用したい Change Data Capturingにも使えるようにしたい ディスク使用量の分析をしたい クラッシュさせたりして遊びたい 15/19

Slide 17

Slide 17 text

雑なまとめ コスト度外視ならMySQLとしては十分 「それ、MySQLでできるよ」的なDBA発言をするためには素のMySQLよりもっと考え事が多くな る まあ、基本的なことはできるし…はそう ‐ ただ、なるべく関係者に寄り添いたいDBAとしては素のMySQLの方が優しくなれる ‐ まだHeatWave MySQLで使えるEnterpriseEditionの機能がわかりきってないので功夫が足 りていない 監査ログのセッションを楽しみに来ました ‐ 16/19

Slide 18

Slide 18 text

おまけ 17/19

Slide 19

Slide 19 text

クラッシュさせたりして遊びたい 主にHAシステムの中で「こんな壊し方をするとHAはどう動くのか?」を観測するため gdbでアタッチして放置すれば「ハングアップ」を ‐ iptablesでパケットをDROPしてやれば「ネットワークパーティション」を ‐ xfs_freezeしてやれば「ファイルシステムフリーズ」を ‐ cgroupsで「ネットワーク遅延」や「ストレージ遅延」を ‐ あとは趣味 18/19

Slide 20

Slide 20 text

Any Question and/or Suggestion? 19/19