Upload
yuji-otani
View
2.903
Download
2
Embed Size (px)
Citation preview
2
・山口県下関出身の 35 歳・インテリジェンスの新規事業チームの開発責任者・企画からアプリ、インフラまで幅広くやっています・車とプログラミングを愛しています
・2児の父親です (次男が 9日前に生まれました )
自己紹介
OS : CentOS7
Webサーバ : nginx1.9
DB :MariaDB10.0
インフラ管理 : Ansible
Web開発言語 : Hack(hhvm3.7)
フレームワーク : FuelPHP1.7
バッチ開発言語 : Golang
使っている技術
6
MariaDB概要
・MySQLとの互換性を保ちながら、性能や 利便性を高めるための独自機能を備えている
・複数の Linuxディストリビューションで標準採
用 (Fedora, RHEL, Arch Linuxなど )
・全ての機能がオープンソースで利用可能
MariaDBの機能
・スレッドプール (MySQLは有償版のみ )
・独自ストレージエンジン (Cassandra, CONNECT, FederatedX etc)
・ InnoDBのデータ暗号化
・スロークエリログに EXPLAIN結果を出力
MariaDBの機能
・ SQL: DELETE ... RETURNING
・ SHOW EXPLAINコマンド
・並列レプリケーション (MySQL5.7〜 )
・マルチソースレプリケーション (MySQL5.7〜 )
・ InnoDBのページ圧縮 (MySQL5.7〜 )
14
MariaDBを選択した理由
・MariaDB Galera Clusterが利用できる → Perconaでも利用できるが、より情報が多い
・今後シェアの拡大が予想されるので、社内で 運用ノウハウを持ちたい
・新しいサービスだから、技術的に挑戦しよう!
GaleraCluster概要
・フィンランドの Codership社によって開発
・ 2007年から開発、 2011年に初期リリース
・ GPLのオープンソース
・ 2012年からMariaDB/Perconaに提供 (MariaDB Galera Cluster/XtraDB Cluster)
GaleraCluster概要
・MySQLでもプラグインを入れて利用可能 →パッチが当たったMySQL5.5/5.6を配布中
・最低 3台から構築できる (1台が落ちても動作を続けられる )
・どのサーバにも Read-Write可能
・ binlogではなく、 APIでデータを同期
GaleraCluster概要
・オンラインでサーバの追加 /削除が可能
・構成サーバ同士で監視し、落ちたサーバは クラスタから除去される
・行レベルの並列レプリケーションを実行
・my.cnfに wsrepの設定追加が必要
24
・パフォーマンスが安定している →高トラフィックはまだまだこれから
・サービス無停止で様々なことができる ( ディスク容量追加、パラメータ変更 etc)
・アプリケーションの特別な対応が不要
・データ同期の遅延を意識しなくてよい
採用して良かった点
28
・ GaleraClusterに対応しているのが InnoDBの
み
・Mroonga →を採用 全サーバに登録 /更新が必
要
・ Create/Alter文はレプリケーションされる
対応ストレージエンジンが限定される
30
innodb_flush_log_at_trx_commitを 0に変更→Write性能が 3倍向上
InnoDBログファイル書き込みタイミングを変更
公式サイト「全サーバ一斉に停止しなければ他のサーバからデータ復旧可能」
パラメータチューニング
31
リリースして少しトラフィックが増えると、デッドロックが稀に発生。以下で対応。
・トランザクション分離レベルの変更 (Repeatable Read→Read Committed)
・ innodb_locks_unsafe_for_binlogを ONに変更 →ロックの競合を減らして同時実行性能を向上
・書き込みのクエリを1台に集約 (nginx stream option→maxscale)
デッドロックの発生
32
・MySQL用プロキシ
・MariaDBにより 2015年にリリース
・更新と参照でクエリを分散できる
・ GaleraCluster専用の設定がある →クラスタを監視して落ちたサーバを除外
MaxScaleについて
37
Read:パフォーマンス劣化しない
Write:パフォーマンス劣化する
Read Write
スケールアウトによるパフォーマンス
※検証環境での 1分間のクエリ実行数 mysqlslapで計測。
40
・ APIは行ベースの binlogを利用する
・ binlogはデフォルトで各サーバに分散される
・my.cnfの設定で、全サーバに全ログを出力できる (log-slave-updates = 1) →特定サーバのレプリケーションが可能に
binlogはどう扱われるのか
45
この資料は、正確な記述を心がけて作成しており有用
だと思われますが、内容の正確性や有用性を作者は保
証しません。また、本資料は作者個人が作成したもの
であり、所属する組織・団体の見解等を表すものでは
ありません。
免責事項
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-t
echnology-of-2013-2
/
https://mariadb.com/kb/en/mariadb/mariadb-galera-cluster-known-limitations/
http://galeracluster.com/documentation-webpages/configuration.html