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
10
3.8k
MySQL 8.4 LTS が あらわれた
yoku0825
2
1.6k
ぼくたちはMySQL 8.1とどう生きるか
yoku0825
6
2.5k
2022年のMySQLerが20年前のMySQL 4.0に触ると何が起きるか
yoku0825
0
440
テストデータが偏るということについて
yoku0825
3
8.7k
MySQLが得意なこと、不得意なこと(仮)
yoku0825
12
13k
MySQLとインデックスとPHPer
yoku0825
8
8.1k
MySQLとインデックスと私
yoku0825
79
59k
DavidとJackとMySQLのセキュリティと
yoku0825
0
800
Other Decks in Technology
See All in Technology
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
470
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
320
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.1k
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
160
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
260
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
smt7174
2
100
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
580
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
540
Visualize, Visualize, Visualize and rclone
tomoaki0705
9
81k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
Featured
See All Featured
A Tale of Four Properties
chriscoyier
158
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Thoughts on Productivity
jonyablonski
69
4.5k
Become a Pro
speakerdeck
PRO
26
5.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
It's Worth the Effort
3n
184
28k
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