Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MySQLの運用を助けるかも知れないオープンソースのソフトウェア
Search
yoku0825
November 23, 2019
Technology
6
1.8k
MySQLの運用を助けるかも知れないオープンソースのソフトウェア
2019/11/23 オープンソースカンファレンス2019 Tokyo
yoku0825
November 23, 2019
Tweet
Share
More Decks by yoku0825
See All by yoku0825
2025年になってもまだMySQLが好き
yoku0825
8
5.2k
いまさらMySQLの非同期レプリケーションでのHAの難しさについて考える
yoku0825
2
920
HeatWave をオンプレの MySQL と同じように使おうとしてみた!
yoku0825
0
230
MySQLのロックの種類とその競合
yoku0825
10
4.6k
MySQL 8.4 LTS が あらわれた
yoku0825
2
2.3k
ぼくたちはMySQL 8.1とどう生きるか
yoku0825
6
2.7k
2022年のMySQLerが20年前のMySQL 4.0に触ると何が起きるか
yoku0825
0
590
テストデータが偏るということについて
yoku0825
3
9k
MySQLが得意なこと、不得意なこと(仮)
yoku0825
12
14k
Other Decks in Technology
See All in Technology
Azure Well-Architected Framework入門
tomokusaba
1
330
SOC2取得の全体像
shonansurvivors
1
530
GopherCon Tour 概略
logica0419
2
190
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
220
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
20k
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
1.1k
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
430
How to achieve interoperable digital identity across Asian countries
fujie
0
130
AWSにおけるTrend Vision Oneの効果について
shimak
0
140
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
1k
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
3
290
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
110
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Being A Developer After 40
akosma
91
590k
Side Projects
sachag
455
43k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Designing for humans not robots
tammielis
254
26k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Bash Introduction
62gerente
615
210k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
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