Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MySQLの運用を助けるかも知れないオープンソースのソフトウェア
Search
yoku0825
November 23, 2019
Technology
6
1.9k
MySQLの運用を助けるかも知れないオープンソースのソフトウェア
2019/11/23 オープンソースカンファレンス2019 Tokyo
yoku0825
November 23, 2019
Tweet
Share
More Decks by yoku0825
See All by yoku0825
MySQL Community EditionとMySQL Enterprise Editionから見たMySQLのHA方式の変遷
yoku0825
1
17
今、MySQLのバックアップを作り直すとしたら何がどう良いのかを考える旅
yoku0825
2
2.5k
2025年になってもまだMySQLが好き
yoku0825
8
6.1k
いまさらMySQLの非同期レプリケーションでのHAの難しさについて考える
yoku0825
3
1.2k
HeatWave をオンプレの MySQL と同じように使おうとしてみた!
yoku0825
0
270
MySQLのロックの種類とその競合
yoku0825
12
5k
MySQL 8.4 LTS が あらわれた
yoku0825
2
2.6k
ぼくたちはMySQL 8.1とどう生きるか
yoku0825
6
2.7k
2022年のMySQLerが20年前のMySQL 4.0に触ると何が起きるか
yoku0825
0
760
Other Decks in Technology
See All in Technology
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
170
"人"が頑張るAI駆動開発
yokomachi
1
140
ESXi のAIOps だ!2025冬
unnowataru
0
350
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
180
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
220
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.8k
Kiro を用いたペアプロのススメ
taikis
4
1.8k
日本Rubyの会: これまでとこれから
snoozer05
PRO
6
230
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
2.2k
[Neurogica] 採用ポジション/ Recruitment Position
neurogica
1
120
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
410
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
1
120
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
57k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.8k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Are puppies a ranking factor?
jonoalderson
0
2.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
190
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
MySQLの運用を助けるオープンソースのソフト ウェア 2019/11/23 yoku0825 オープンソースカンファレンス 2019 Tokyo/Fall
免責事項 このスライドはyoku0825個人の見解に基づいて作成されており、所属する組織お よび所属しない組織あるいはNULLの一切の意見を代表するわけがありません 使っているもの / 使っていたもの / 使っていないものが混じっております 1/58
MySQLの運用を助 けるオープンソース のソフトウェア 2/58
MySQLの運用を助ける かも知れない オープン ソースのソフトウェア 3/58
\こんにちは/ yoku0825@とある企業のDBA オラクれない ‐ ポスグれない ‐ マイエスキューエる ‐ 生息域 Twitter:
@yoku0825 ‐ Blog: 日々の覚書 ‐ 日本MySQLユーザ会 ‐ MySQL Casual ‐ 4/58
MySQLの運用を助ける かも知れないオープン ソースのソフトウェア 5/58
MySQLの運用を助ける かも知れない オープン ソース のソフトウェア 6/58
オープンソースの定義 オープンソースの定義 - Wikipedia The Open Source Definition | Open
Source Initiative Licenses by Name | Open Source Initiative 7/58
閑話休題 8/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 9/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 10/58
汎用ユーティリティー Percona Toolkit MySQL Shell ytkit 11/58
Percona Toolkit Percona Toolkit GitHub ‐ GPLv2 ‐ MySQL(とか最近はPostgreSQLもMongoDBも)のサポートを提供している “Percona
LLC.” によって開発されているスクリプト群 Perl製のものが多い割には2019年11月現在でまだサポートが続いている 最近書き起こされたものはGo製が多い、いずれポーティングされるのかな ‐ 有名どころは pt-online-schema-change, pt-query-digest など 12/58
Percona Toolkit のうち、今でも使ったり使わなかったりしているもの pt-config-diff pt-ioprofile pt-kill pt-online-schema-change pt-query-digest pt-slave-restart pt-table-checksum
pt-table-sync 13/58
MySQL Shell MySQL :: MySQL Shell 8.0 GitHub ‐ GPLv2
‐ Oracle MySQL公式の(そして新たなデフォルトにしようと目論まれている)CUI クライアント 14/58
MySQL Shell JavaScript, Python, SQL の3モードがある 言語エンジンどうしてんだろ… ‐ 15/58
MySQL Shell innotop の中の人でありOracle MySQLの中の人でもある lefred が、MySQL Shell 版のinnotopを作ろうとしている lefred/mysql-shell-innotop:
Innotop like module in MySQL Shell ‐ 残念ながら俺の手元では動かなかった :-P ‐ この手のエコシステムが育っていく可能性はある 育たない可能性もある ‐ 今ならエコシステムのリーダーになれる可能性も ‐ 16/58
MySQL Shell 17/58
MySQL Shell 18/58
ytkit Yoku-san no Tool KIT GitHub ‐ GPLv2 ‐ 俺が運用で使ってるスクリプトを汎用化してオープンソースにしたもの
19/58
ytkit yt-alter-progress yt-binlog-groupby yt-collect yt-healthcheck yt-wait-replication 20/58
ytkit $ mysqlbinlog -vv ~/mysql-sandboxes/3306/sandboxdata/mysql-bin.00000* | bin/yt-binlog-gro upby --cell=m --group-by=time,table
191123 11:58 d1.page 65 191123 11:59 d1.page 86 191123 11:59 d1.revision 3 191123 12:00 d1.revision 78 21/58
ytkit $ bin/yt-alter-progress -h127.0.0.1 -uroot -i 1 Press Ctrl +
C for quit from bin/yt-alter-progress [ 2.61% ( 41 sec | 1 sec) ] stage/innodb/alter table (read PK and internal sort) : ALTER TABLE revision Engine = InnoDB [ 29.68% ( 14 sec | 6 sec) ] stage/innodb/alter table (read PK and internal sort) : ALTER TABL E revision Engine = InnoDB [ 54.89% ( 9 sec | 11 sec) ] stage/innodb/alter table (read PK and internal sort) : ALTER TABL E revision Engine = InnoDB [ 59.16% ( 11 sec | 16 sec) ] stage/innodb/alter table (insert) : ALTER TABLE revision Engine = InnoDB [ 68.15% ( 9 sec | 21 sec) ] stage/innodb/alter table (merge sort) : ALTER TABLE revision Engi ne = InnoDB [ 79.23% ( 6 sec | 26 sec) ] stage/innodb/alter table (insert) : ALTER TABLE revision Engine = InnoDB [ 91.09% ( 3 sec | 31 sec) ] stage/innodb/alter table (insert) : ALTER TABLE revision Engine = InnoDB [ 100.00% ( 0 sec | 36 sec) ] stage/innodb/alter table (flush) : ALTER TABLE revision Engine = InnoDB [ 100.00% ( 0 sec | 41 sec) ] stage/innodb/alter table (flush) : ALTER TABLE revision Engine = InnoDB [ 100.00% ( 0 sec | 46 sec) ] stage/innodb/alter table (flush) : ALTER TABLE revision Engine = InnoDB 22/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 23/58
主にマスター切り替え用途 MHA for MySQL 1, 2 MMM for MySQL GitHub
orchestrator mikasafabric for MySQL 24/58
MHA for MySQL mysql-master-ha Source [1]](https://github.com/yoshinorim/mha4mysql-manager), 2 ‐ GPLv2 ‐
MySQLのHAツールの雄 Perl製 ‐ 2011年5月にファーストリリース、そのとき時代はMySQL 5.5 ‐ 25/58
MMM for MySQL Multi-Master Replication Manager for MySQL Launchpad ‐
GPLv2 ‐ LINE, Naverあたりが使っている/使っていた? で韓国で人気が高いような気がする Perl製 ‐ NOTE: By now there are a some good alternatives to MySQL-MMM. ‐ 26/58
GitHub orchestrator github/orchestrator GitHub ‐ Apache License 2.0 ‐ 観測範囲ではMHA
for MySQLからの乗り換えとして採用しているところが一番多 い メルカリにおけるMySQLの運用 ‐ 2段階フェイルオーバーとかPseudo-GTIDとか「ああこれ使ってる人が作ってる な」感 27/58
mikasafabric for MySQL gmo-media/mikasafabric GitHub ‐ GPLv2 ‐ とある企業 (だけ)が使っているMySQL
Fabricのクローン 地味にMySQL 8.0対応したのでまだ使っている ‐ 28/58
MySQL Fabric (水に濡れて文字が消えたのか、読むことができない) 29/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 30/58
バックアップは大事 XtraBackup MyDumper mysqlbinlog 31/58
XtraBackup Percona XtraBackup GitHub ‐ GPLv2 ‐ Perconaソフトウェアふたたび InnoDBのクラッシュリカバリーをバックアップに応用して「オンラインでの物理 バックアップ」を実現
32/58
MyDumper maxbube/mydumper GitHub ‐ GPLv3 ‐ パラレルかつロジカルバックアップ 33/58
mysqlbinlog Using mysqlbinlog to Back Up Binary Log Files GitHub
‐ GPLv2 ‐ バイナリログをデコードするためのプログラムである mysqlbinlog はMySQL 5.6 からバイナリログの「ストリームバックアップ」に対応 34/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 35/58
クエリーを中継してゴニョゴニョする系 MySQL Proxy ProxySQL Vitess MariaDB 36/58
MySQL Proxy mysql/mysql-prox GitHub ‐ GPLv2 ‐ 2007年から2014年までα版として開発され、そのまま消えた「永遠のα版」 ルーティング部分はLuaで自前でコーディングする ‐
シンプルかつ結構強力にMySQLパケットを書き換えられたため愛好家多数 ‐ MySQL Proxyはリポジトリーがちゃんと残ってるというのにMySQL Fabricお前と来たら… ‐ 37/58
ProxySQL ProxySQL GitHub ‐ GPLv3 ‐ 内部にMySQLプロトコルパーサーを持っていて、クライアントから受け付けた MySQLプロトコルをゴニョってからMySQLプロトコルに詰めなおしてサーバーに 送るという重厚なつくり それ故に多機能かつ設定項目が多彩
‐ モニタリングやProxySQL同士での設定の同期など本当に多彩 ‐ 38/58
Vitess Vitess GitHub ‐ Apache License 2.0 ‐ 水平シャーディングにも対応したCNCF育ちのピタゴラスイッチ きっとスケールするだろうしYouTubeが自分たちで使うために開発してるものだから上手く動
くんだろうけどブラックボックス感がすごい ‐ 39/58
MariaDB MariaDB GitHub ‐ GPLv2 ‐ もちろんもともとはMySQLからフォークした立派なRDBMSだけれども、 CONNECTストレージエンジン を使うと立派な変態Proxyになる 40/58
MariaDB MariaDB: Connect Storage Engine 41/58
MariaDB プロキシとして使った時の何が便利って、 MariaDBに認証情報を隠蔽させられる MariaDBへの認証情報とCONNECT先の認証情報が分離できる MariaDBへの接続はPAM認証プラグインもある ‐ MariaDB側のログ機構を使える MariaDBには監査ログプラグインがバンドルされていることだし ‐ 文字コードとかパフォーマンスとかはつらかった
最近どうなんだろう ‐ 42/58
MySQLの運用を助けるオープンソースのソフトウェア 汎用編 HA編 バックアップ編 ルーティング編 モニタリング編 43/58
推測するな、計測せよ innotop PMM Box Anemometer MySQL Workbench 44/58
innotop innotop/innotop GitHub ‐ GPLv2 ‐ 主に SHOW PROCESSLIST を
top 風に表示させるのに使われる SHOW SLAVE STATUS や SHOW ENGINE INNODB STATUS をリアルタイム表示するのにも使えるスグ レモノ ‐ 45/58
innotop 46/58
innotop innotop の中の人でありOracle MySQLの中の人でもある lefred が、MySQL Shell 版のinnotopを作ろうとしている Innotop like
in MySQL Shell \- YouTube ‐ 残念ながら俺の手元では動かなかった :-P ‐ 47/58
PMM Database Monitoring & Management GitHub 1, 2 ‐ AGPLv3
‐ GrafanaベースのWEB UIに node_exporter から取ってきたメトリクスや p_s また は slow_log から取ってきたクエリーアナライザーがついていたりもうほぼこれで 良いんではないか感 MySQL 5.5がギリ、それ未満は死亡だが5.6とそれ以降で統一していれば問題なく使える(と思 う) ‐ 48/58
PMM 49/58
Box Anemometer box/Anemometer GitHub ‐ Apache License 2.0 ‐ Box社が使って
“いた”(?) と思われるスローログのグラフ化ツール 2016年を最後に更新されていないので、もう使っていないのかな ‐ pt-query-digestの仕様変更により、percona-toolkit 3.0.11とそれ以降のpt-query-digestで は動かない ‐ 50/58
anemoeater anemoeater GitHub ‐ GPLv2 ‐ 某社で使われている「Anemometerを使い捨てコンテナに詰める」ラッパースク リプト 過去分のスロークエリーログさえあればAnemometerのサーバーを常時起動しておく必要はな い
‐ 51/58
anemoeater 52/58
MySQL Workbench MySQL :: MySQL Workbench GitHub ‐ GPLv2 ‐
Oracle MySQL公式のGUIクライアント…だが GUIクライアント以外の部分が それ 以外の部分も便利 53/58
MySQL Workbench 54/58
MySQL Workbench “Refresh rate” を設定するとtop-likeにも使える 55/58
MySQL Workbench 意外とこんなものも(そこまで高機能ではないけれど) 56/58
MySQLの運用を支えるかも知れないオープンソースのソフトウェア - Percona Toolkit - MySQL Shell - ytkit -
MHA for MySQL - MMM for MySQL - GitHub orchestrator - mikasafabric for MySQL - XtraBackup - MyDumper - mysqlbinlog - MySQL Proxy - ProxySQL - Vitess - MariaDB - innotop - PMM - Box Anemometer - MySQL Workbench 57/58
Any Questions and/or Suggestions? 58/58