Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MariaDB+GaleraClusterの
運用事例
株式会社インテリジェンス
大谷 祐司
1
2016/01/28
2
・山口県下関出身の35歳
・インテリジェンスの新規事業チームの開発責任者
・企画からアプリ、インフラまで幅広くやっています
・車とプログラミングを愛しています
・2児の父親です
(次男が9日前に生まれました)
自己紹介
・MariaDBとGaleraCluster概要
・技術を選択したポイント
・運用の振り返り(良かった点、注意点)
・きになるポイントFAQ
本日お話しすること
3
4
昨年7月に立ち上げた
転職サイト「MIIDAS」で
MariaDB/GaleraClusterを採用しました
5
MIIDASで
使っている技術
OS :CentOS7
Webサーバ :nginx1.9
DB :MariaDB10.0
インフラ管理 :Ansible
Web開発言語 :Hack(hhvm3.7)
フレームワーク :FuelPHP1.7
バッチ開発言語 :Golang
使っ...
サーバ構成(さくらクラウド)
7
Internet
LB
Web/Cache DB
BatchBackup
8
MariaDBの概要
MariaDB概要
・MySQLをforkして開発されたDB
・2010年に最初のリリース
・最新版は10.1系で2015年10月リリース
・GPLのオープンソース
MariaDB概要
・MySQLとの互換性を保ちながら、性能や
利便性を高めるための独自機能を備えている
・複数のLinuxディストリビューションで標準採用
(Fedora, RHEL, Arch Linuxなど)
・全ての機能がオープンソース...
MariaDB概要
・最新の10.0系はMySQL5.5がベース
・MariaDB Galera Clusterを提供
・InnoDB互換のPerconaのXtraDBを採用
MariaDBの機能
・スレッドプール(MySQLは有償版のみ)
・独自ストレージエンジン
(Cassandra, CONNECT, FederatedX etc)
・InnoDBのデータ暗号化
・スロークエリログにEXPLAIN結果を出力
MariaDBの機能
・SQL:DELETE ... RETURNING
・SHOW EXPLAINコマンド
・並列レプリケーション(MySQL5.7〜)
・マルチソースレプリケーション(MySQL5.7〜)
・InnoDBのページ圧縮(MyS...
14
MariaDBを選択した理由
・MariaDB Galera Clusterが利用できる
→Perconaでも利用できるが、より情報が多い
・今後シェアの拡大が予想されるので、社内で
運用ノウハウを持ちたい
・新しいサービスだから、技術的...
15
GaleraClusterの概要
GaleraCluster概要
・マルチマスタの同期レプリケーション
・wsrepというプラグイン使ってクラスタを制御
GaleraCluster概要
・フィンランドのCodership社によって開発
・2007年から開発、2011年に初期リリース
・GPLのオープンソース
・2012年からMariaDB/Perconaに提供
(MariaDB Galera C...
GaleraCluster概要
・MySQLでもプラグインを入れて利用可能
→パッチが当たったMySQL5.5/5.6を配布中
・最低3台から構築できる
(1台が落ちても動作を続けられる)
・どのサーバにもRead-Write可能
・binlo...
GaleraCluster概要
・オンラインでサーバの追加/削除が可能
・構成サーバ同士で監視し、落ちたサーバは
クラスタから除去される
・行レベルの並列レプリケーションを実行
・my.cnfにwsrepの設定追加が必要
マルチマスタの仕組み
サーバ追加時
・rsyncで新規サーバにデータをコピー
rsync
マルチマスタの仕組み
データの同期
・wsrepがAPIとなり命令を他サーバに伝達
wsrep wsrep
wsrep
22
・ノウハウがあるMySQLベースの運用
・DBが単一障害点にならない
・後からスケールアウトできる状態
・高い信頼性(データの一貫性、可用性)
・低コストでの導入
実現できたこと
23
運用の振り返り
24
・パフォーマンスが安定している
→高トラフィックはまだまだこれから
・サービス無停止で様々なことができる
(ディスク容量追加、パラメータ変更 etc)
・アプリケーションの特別な対応が不要
・データ同期の遅延を意識しなくてよい
採用して良...
25
・ユーザ情報も同期される
・auto increment
・対応ストレージエンジンが限定される
・停止-再開の順番
・パラメータチューニング
・デッドロックの発生
気をつけるポイント
26
・GRANT文もレプリケーションされる
→サーバごとにID/PASSを変更できない
・複数台で同一ユーザを使えば問題なし
ユーザ情報も同期される
27
・1ずつ増えることが保証されない
→サーバの台数ずつ増加する
・数値の上限に気をつける必要がある
auto increment
28
・GaleraClusterに対応しているのがInnoDBのみ
・Mroongaを採用→全サーバに登録/更新が必要
・Create/Alter文はレプリケーションされる
対応ストレージエンジンが限定される
29
・全台停止させてから再開する場合には、
最後に停止させたサーバから起動する
・順番が違うとエラーでサーバ追加できない
(更新が全く行われていなければ大丈夫)
停止→起動の順番
30
innodb_flush_log_at_trx_commitを0に変更
→Write性能が3倍向上
InnoDBログファイル書き込みタイミングを変更
公式サイト「全サーバ一斉に停止しなければ
他のサーバからデータ復旧可能」
パラメータチュ...
31
リリースして少しトラフィックが増えると、
デッドロックが稀に発生。以下で対応。
・トランザクション分離レベルの変更
(Repeatable Read→Read Committed)
・innodb_locks_unsafe_for_bin...
32
・MySQL用プロキシ
・MariaDBにより2015年にリリース
・更新と参照でクエリを分散できる
・GaleraCluster専用の設定がある
→クラスタを監視して落ちたサーバを除外
MaxScaleについて
33
MaxScaleの導入
DB
Internet
LB
導入前:全てのクエリを1対1で処理
Web/Cache
MaxScaleの導入
DB
Internet
LB
変更後:参照系は全てのサーバに分散
Web/Cache
MaxScaleの導入
DB
Internet
LB
変更後:更新系を1台のサーバに集約
Web/Cache
36
GaleraCluster
きになるポイントFAQ
37
Read:パフォーマンス劣化しない
Write:パフォーマンス劣化する
Read Write
スケールアウトによるパフォーマンス
※検証環境での1分間のクエリ実行数
mysqlslapで計測。
38
多数決の方式を採用
3台構成で1台が分断されると2台の方が
正しいものとして動作を継続
動作停止
動作を継続
クラスタ分断時の動作
39
読み込みは同等、書き込み性能は準同期レプリ
ケーションの方が高速
準同期レプリケーションとの速度差
Read Write
※検証環境での1分間のクエリ実行数
mysqlslapで計測。
40
・APIは行ベースのbinlogを利用する
・binlogはデフォルトで各サーバに分散される
・my.cnfの設定で、全サーバに全ログを出力できる
(log-slave-updates = 1)
→特定サーバのレプリケーションが可能に
b...
41
さいごに
42
MariaDB/GaleraClusterに出会って、改めて
MySQLは素晴らしいと思いました
これからの進化が本当に楽しみです
43
MySQLという優れたデータベースに
選択肢があることは素晴らしい!
44
ご静聴ありがとうございました
45
この資料は、正確な記述を心がけて作成しており有用だ
と思われますが、内容の正確性や有用性を作者は保証し
ません。また、本資料は作者個人が作成したものであり、
所属する組織・団体の見解等を表すものではありません。
免責事項
46
参考URL
https://ja.wikipedia.org/wiki/MariaDB
http://d.hatena.ne.jp/interdb/20130918/1379441784
https://github.com/coders...
Upcoming SlideShare
Loading in …5
×

MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)

7,165 views

Published on

2016年1月28日のMySQL勉強会で使用した資料です。

Published in: Technology

MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)

  1. 1. MariaDB+GaleraClusterの 運用事例 株式会社インテリジェンス 大谷 祐司 1 2016/01/28
  2. 2. 2 ・山口県下関出身の35歳 ・インテリジェンスの新規事業チームの開発責任者 ・企画からアプリ、インフラまで幅広くやっています ・車とプログラミングを愛しています ・2児の父親です (次男が9日前に生まれました) 自己紹介
  3. 3. ・MariaDBとGaleraCluster概要 ・技術を選択したポイント ・運用の振り返り(良かった点、注意点) ・きになるポイントFAQ 本日お話しすること 3
  4. 4. 4 昨年7月に立ち上げた 転職サイト「MIIDAS」で MariaDB/GaleraClusterを採用しました
  5. 5. 5 MIIDASで 使っている技術
  6. 6. OS :CentOS7 Webサーバ :nginx1.9 DB :MariaDB10.0 インフラ管理 :Ansible Web開発言語 :Hack(hhvm3.7) フレームワーク :FuelPHP1.7 バッチ開発言語 :Golang 使っている技術 6
  7. 7. サーバ構成(さくらクラウド) 7 Internet LB Web/Cache DB BatchBackup
  8. 8. 8 MariaDBの概要
  9. 9. MariaDB概要 ・MySQLをforkして開発されたDB ・2010年に最初のリリース ・最新版は10.1系で2015年10月リリース ・GPLのオープンソース
  10. 10. MariaDB概要 ・MySQLとの互換性を保ちながら、性能や 利便性を高めるための独自機能を備えている ・複数のLinuxディストリビューションで標準採用 (Fedora, RHEL, Arch Linuxなど) ・全ての機能がオープンソースで利用可能
  11. 11. MariaDB概要 ・最新の10.0系はMySQL5.5がベース ・MariaDB Galera Clusterを提供 ・InnoDB互換のPerconaのXtraDBを採用
  12. 12. MariaDBの機能 ・スレッドプール(MySQLは有償版のみ) ・独自ストレージエンジン (Cassandra, CONNECT, FederatedX etc) ・InnoDBのデータ暗号化 ・スロークエリログにEXPLAIN結果を出力
  13. 13. MariaDBの機能 ・SQL:DELETE ... RETURNING ・SHOW EXPLAINコマンド ・並列レプリケーション(MySQL5.7〜) ・マルチソースレプリケーション(MySQL5.7〜) ・InnoDBのページ圧縮(MySQL5.7〜)
  14. 14. 14 MariaDBを選択した理由 ・MariaDB Galera Clusterが利用できる →Perconaでも利用できるが、より情報が多い ・今後シェアの拡大が予想されるので、社内で 運用ノウハウを持ちたい ・新しいサービスだから、技術的に挑戦しよう!
  15. 15. 15 GaleraClusterの概要
  16. 16. GaleraCluster概要 ・マルチマスタの同期レプリケーション ・wsrepというプラグイン使ってクラスタを制御
  17. 17. GaleraCluster概要 ・フィンランドのCodership社によって開発 ・2007年から開発、2011年に初期リリース ・GPLのオープンソース ・2012年からMariaDB/Perconaに提供 (MariaDB Galera Cluster/XtraDB Cluster)
  18. 18. GaleraCluster概要 ・MySQLでもプラグインを入れて利用可能 →パッチが当たったMySQL5.5/5.6を配布中 ・最低3台から構築できる (1台が落ちても動作を続けられる) ・どのサーバにもRead-Write可能 ・binlogではなく、APIでデータを同期
  19. 19. GaleraCluster概要 ・オンラインでサーバの追加/削除が可能 ・構成サーバ同士で監視し、落ちたサーバは クラスタから除去される ・行レベルの並列レプリケーションを実行 ・my.cnfにwsrepの設定追加が必要
  20. 20. マルチマスタの仕組み サーバ追加時 ・rsyncで新規サーバにデータをコピー rsync
  21. 21. マルチマスタの仕組み データの同期 ・wsrepがAPIとなり命令を他サーバに伝達 wsrep wsrep wsrep
  22. 22. 22 ・ノウハウがあるMySQLベースの運用 ・DBが単一障害点にならない ・後からスケールアウトできる状態 ・高い信頼性(データの一貫性、可用性) ・低コストでの導入 実現できたこと
  23. 23. 23 運用の振り返り
  24. 24. 24 ・パフォーマンスが安定している →高トラフィックはまだまだこれから ・サービス無停止で様々なことができる (ディスク容量追加、パラメータ変更 etc) ・アプリケーションの特別な対応が不要 ・データ同期の遅延を意識しなくてよい 採用して良かった点
  25. 25. 25 ・ユーザ情報も同期される ・auto increment ・対応ストレージエンジンが限定される ・停止-再開の順番 ・パラメータチューニング ・デッドロックの発生 気をつけるポイント
  26. 26. 26 ・GRANT文もレプリケーションされる →サーバごとにID/PASSを変更できない ・複数台で同一ユーザを使えば問題なし ユーザ情報も同期される
  27. 27. 27 ・1ずつ増えることが保証されない →サーバの台数ずつ増加する ・数値の上限に気をつける必要がある auto increment
  28. 28. 28 ・GaleraClusterに対応しているのがInnoDBのみ ・Mroongaを採用→全サーバに登録/更新が必要 ・Create/Alter文はレプリケーションされる 対応ストレージエンジンが限定される
  29. 29. 29 ・全台停止させてから再開する場合には、 最後に停止させたサーバから起動する ・順番が違うとエラーでサーバ追加できない (更新が全く行われていなければ大丈夫) 停止→起動の順番
  30. 30. 30 innodb_flush_log_at_trx_commitを0に変更 →Write性能が3倍向上 InnoDBログファイル書き込みタイミングを変更 公式サイト「全サーバ一斉に停止しなければ 他のサーバからデータ復旧可能」 パラメータチューニング
  31. 31. 31 リリースして少しトラフィックが増えると、 デッドロックが稀に発生。以下で対応。 ・トランザクション分離レベルの変更 (Repeatable Read→Read Committed) ・innodb_locks_unsafe_for_binlogをONに変更 →ロックの競合を減らして同時実行性能を向上 ・書き込みのクエリを1台に集約 (nginx stream option→maxscale) デッドロックの発生
  32. 32. 32 ・MySQL用プロキシ ・MariaDBにより2015年にリリース ・更新と参照でクエリを分散できる ・GaleraCluster専用の設定がある →クラスタを監視して落ちたサーバを除外 MaxScaleについて
  33. 33. 33 MaxScaleの導入 DB Internet LB 導入前:全てのクエリを1対1で処理 Web/Cache
  34. 34. MaxScaleの導入 DB Internet LB 変更後:参照系は全てのサーバに分散 Web/Cache
  35. 35. MaxScaleの導入 DB Internet LB 変更後:更新系を1台のサーバに集約 Web/Cache
  36. 36. 36 GaleraCluster きになるポイントFAQ
  37. 37. 37 Read:パフォーマンス劣化しない Write:パフォーマンス劣化する Read Write スケールアウトによるパフォーマンス ※検証環境での1分間のクエリ実行数 mysqlslapで計測。
  38. 38. 38 多数決の方式を採用 3台構成で1台が分断されると2台の方が 正しいものとして動作を継続 動作停止 動作を継続 クラスタ分断時の動作
  39. 39. 39 読み込みは同等、書き込み性能は準同期レプリ ケーションの方が高速 準同期レプリケーションとの速度差 Read Write ※検証環境での1分間のクエリ実行数 mysqlslapで計測。
  40. 40. 40 ・APIは行ベースのbinlogを利用する ・binlogはデフォルトで各サーバに分散される ・my.cnfの設定で、全サーバに全ログを出力できる (log-slave-updates = 1) →特定サーバのレプリケーションが可能に binlogはどう扱われるのか
  41. 41. 41 さいごに
  42. 42. 42 MariaDB/GaleraClusterに出会って、改めて MySQLは素晴らしいと思いました これからの進化が本当に楽しみです
  43. 43. 43 MySQLという優れたデータベースに 選択肢があることは素晴らしい!
  44. 44. 44 ご静聴ありがとうございました
  45. 45. 45 この資料は、正確な記述を心がけて作成しており有用だ と思われますが、内容の正確性や有用性を作者は保証し ません。また、本資料は作者個人が作成したものであり、 所属する組織・団体の見解等を表すものではありません。 免責事項
  46. 46. 46 参考URL https://ja.wikipedia.org/wiki/MariaDB http://d.hatena.ne.jp/interdb/20130918/1379441784 https://github.com/codership/galera http://galeracluster.com/2013/02/mysqlplus-readers-choice-galera-is-the- hottest-technology-of-2013-2/ https://mariadb.com/kb/en/mariadb/mariadb-galera-cluster-known-limitations/ http://galeracluster.com/documentation-webpages/configuration.html

×