• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
mysqlcasual6-fabric
 

mysqlcasual6-fabric

on

  • 199 views

2014/07/11 MySQL Casual Talks #6

2014/07/11 MySQL Casual Talks #6

Statistics

Views

Total Views
199
Views on SlideShare
179
Embed Views
20

Actions

Likes
2
Downloads
1
Comments
0

2 Embeds 20

https://twitter.com 24

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    mysqlcasual6-fabric mysqlcasual6-fabric Presentation Transcript

    • MySQL Fabric使いたいんだけど どうなんすか @dblmkt 2014.7.11 MySQL Casual Talks #6
    • 自己紹介
    • @dblmkt • サイバーエージェント アメーバ事業本部 インフラエンジニア • 主にアメブロ担当 • 趣味 – 登山
    • アメブロのDBって
    • アメブロのDBって • 脈々と受け継がれてきたスキーマ • MySQL 4.1, 5.0, 5.1, 5.5様々 • MyISAM多い • Read >>> |超えられない壁| >>> Write
    • マスタ分割激しい 記事 情報 ブログ 情報 本文 記事 情報 コメント テーマ 画像
    • 独自ルールでシャーディング t1 10万ユーザ t2 10万ユーザ t3 10万ユーザ t4 10万ユーザ t5 10万ユーザ t6 10万ユーザ t7 10万ユーザ t8 10万ユーザ t9 10万ユーザ ・・・・・・ ・・・・・・ ・・・・・・ ・・・・・・
    • スレーブ多い • とあるマスタで mysql> show slave hosts; +-----------+-----------------+------+-------------------+-----------+ | Server_id | Host | Port | Rpl_recovery_rank | Master_id | +-----------+-----------------+------+-------------------+-----------+ | 2008001 | | 3306 | 0 | 10101 | | 2008002 | | 3306 | 0 | 10101 | | 3344551 | | 3306 | 0 | 10101 | (中略) 65 rows in set (0.00 sec)
    • 大変なところ • スレーブの作り直し面倒 • シャーディングルール変更難しい • アクセスの偏り対策困る • my.cnf書き換えしんどい – Replicate-do-tableをいちいち書いている。。。
    • 色々検討してみた
    • Jetpants • Tumblr謹製シャーディング管理ツール – レンジベースのシャード管理 – pigzを使った高速スレーブ複製 – シャードの分割がオンラインでできる – https://github.com/tumblr/jetpants
    • MySQL Utilities • MySQL管理のためのコマンドラインツール群 • 大量のMySQLサーバを管理するコマンドも – mysqldbcopy – mysqluserclone – mysqlfailover
    • MYSQL FABRIC
    • MySQL Fabric • 「MySQLサーバ群を管理する 統合フレームワーク」
    • MySQL Fabric • マスタ障害時、スレーブの自動昇格 • シャーディング、クエリのロードバランシング – 更新はマスタ、参照はスレーブ • スレーブの複製
    • 構成 マスタ (Primary) スレーブ (Spare) Web/APサーバ Fabric対応 Connector Fabricサーバ State Store 情報取得 更新 参照 スレーブ (Secondary) スレーブ (Secondary)
    • 構成(シャーディング) マスタ (Primary) スレーブ (Secondary) Web/APサーバ Fabric対応 Connector Fabricサーバ State Store 情報取得 更新 参照 スレーブ (Secondary) マスタ (Primary) スレーブ (Secondary) スレーブ (Secondary) マスタ (Primary) グループ1 グループ2 Global Group
    • 注意! • Fabric対応Connector必須 – Java, PHP, Python • MySQL 5.6.10以上+GTIDレプリケーション必須
    • セットアップ
    • セットアップ • MySQL Serverインストール • MySQL Utilitiesインストール • State Storeのテーブル準備 – mysqlfabric manage setup • Fabricサーバの起動 – mysqlfabric manage start
    • 設定ファイル • /etc/mysql/fabric.cfg – State Store関連の設定 [storage] – 障害検知の設定 [failure_tracking] – MySQLサーバの設定 [servers] – Fabricサーバの設定 [protocol.xmlrpc]
    • グループ作成 • グループ作成 – mysqlfabric group create cluster01 • グループにサーバ追加 – mysqlfabric group add cluster01 スレーブのIP • グループのサーバをマスタに昇格 – mysqlfabric group promote cluster01
    • マスタの障害検知
    • マスタ障害検知 • 障害検知を有効化 – mysqlfabric group activate cluster01 $ mysqlfabric group lookup_groups Command : { success = True return = [{'group_id': 'cluster01', 'description': '', 'master_uuid': '7a6b7e8d-0033-11e4-8981-90b11c14b1a4', 'failure_detector': True}] activities = }
    • マスタ障害検知 • マスタダウン前 $ mysqlfabric group lookup_servers cluster01 { success = True return = [ {'status': 'SECONDARY', 'server_uuid': '7a87e263-0033-11e4-8981-90b11c17ba51', 'mode': 'READ_ONLY', 'weight': 1.0, 'address': '10.200.32.223'}, {'status': 'PRIMARY', 'server_uuid': '7addf86d-0033-11e4-8981-90b11c149f9e', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.200.32.222'}] activities = }
    • マスタ障害検知 • マスタダウン後 $ mysqlfabric group lookup_servers cluster01 { success = True return = [ {'status': 'PRIMARY', 'server_uuid': '7a87e263-0033-11e4-8981-90b11c17ba51', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.200.32.223'}, {'status': ‘FAULTY', 'server_uuid': '7addf86d-0033-11e4-8981-90b11c149f9e', 'mode': 'READ_WRITE', 'weight': 1.0, 'address': '10.200.32.222'}] activities = }
    • シャーディングの管理
    • 構成(シャーディング) マスタ (Primary) スレーブ (Secondary) Web/APサーバ Fabric対応 Connector Fabricサーバ State Store 情報取得 更新 参照 スレーブ (Secondary) マスタ (Primary) スレーブ (Secondary) スレーブ (Secondary) マスタ (Primary) グループ1 グループ2 Global Group
    • シャード作成 • Global Groupとなるグループを作成 • 配下のグループを作成 • シャードの定義を作る – mysqlfabric sharding create_definition RANGE cluster01 • 対象のテーブルを追加 – mysqlfabric sharding add_table 1 table01 column01 • シャードを追加 – mysqlfabric sharding add_shard 1 “cluster11/1“ --state=ENABLED – Mysqlfabric sharding add_shard 1 “cluster12/200000” --state=ENABLED
    • シャード分割・移動 • 分割 – mysqlfabric sharding split_shard 11 cluster13 --split_value=200000 • 移動 – mysqlfabric sharding move_shard 11 cluster13
    • 気になるところ
    • 気になる • ドキュメントがまだまだ • コマンドの結果がわかりにくい – 例、シャードのルールの一覧表示 $ mysqlfabric sharding list_definitions Command : { success = True return = [[3, 'RANGE', 'cluster01']] activities = }
    • 気になる • FabricサーバのHA化不可 – Pacemaker使えばという意見も – ボトルネックになる可能性 • Fabricサーバのスケールアウト不可 – そのうち何かの改善が。。。?
    • 気になる • シャード分割、移動時 – マスタにmysqldumpが走る – マスタとスレーブでDELETEが走る
    • 使いどこ • GTIDレプリ使う新規プロジェクトなら入れとけ – マスタ冗長化出来る – シャード使える、分割できる – クエリのロードバランスできる – スレーブの複製が簡単 – (も少し安定してから)
    • 使いどこ • 既存DBに入れるのはツラい? – 現行シャード構成の変更 – Connector部分の書き換え – MySQL 5.6 or 5.7へのバージョンアップ – GTIDレプリケーションへの対応
    • まとめ • MySQL Fabric – (マスタスレーブ構成の)MySQLサーバを管理する 仕組み – 新規プロジェクトなら、導入検討の余地あり – あと一歩だけどかなりいい感触
    • 情報源 • 公式ドキュメント – http://dev.mysql.com /doc/mysql-utilities/1.4/en/fabric.html • MySQL Performance Blog – http://www.mysqlperformanceblog.com/ • VN (Narayanan Venkateswaran氏のブログ) – http://vnwrites.blogspot.jp/
    • 宣伝 • 海外のブログ記事などを翻訳しています – Yakst – http://yakst.com/ja – 翻訳仲間募集中
    • m(__)m