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.7k
MySQLの運用を助けるかも知れないオープンソースのソフトウェア
2019/11/23 オープンソースカンファレンス2019 Tokyo
yoku0825
November 23, 2019
Tweet
Share
More Decks by yoku0825
See All by yoku0825
MySQLのロックの種類とその競合
yoku0825
7
2.3k
MySQL 8.4 LTS が あらわれた
yoku0825
2
640
ぼくたちはMySQL 8.1とどう生きるか
yoku0825
6
2.4k
2022年のMySQLerが20年前のMySQL 4.0に触ると何が起きるか
yoku0825
0
370
テストデータが偏るということについて
yoku0825
3
8.6k
MySQLが得意なこと、不得意なこと(仮)
yoku0825
12
13k
MySQLとインデックスとPHPer
yoku0825
8
8k
MySQLとインデックスと私
yoku0825
76
56k
DavidとJackとMySQLのセキュリティと
yoku0825
0
780
Other Decks in Technology
See All in Technology
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
Terraform未経験の御様に対してどの ように導⼊を進めていったか
tkikuchi
2
430
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
750
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
620
AGIについてChatGPTに聞いてみた
blueb
0
130
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.2k
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
200
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
310
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Automating Front-end Workflow
addyosmani
1366
200k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Building Your Own Lightsaber
phodgson
103
6.1k
Designing for humans not robots
tammielis
250
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
How STYLIGHT went responsive
nonsquared
95
5.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Statistics for Hackers
jakevdp
796
220k
GraphQLとの向き合い方2022年版
quramy
43
13k
Designing for Performance
lara
604
68k
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