1.1K Views
April 09, 19
スライド概要
Yahoo! JAPAN で提供されているサービスのほぼ全てにおいて、RDB として Oracle か MySQL、あるいはその両方が採用されています。
その数は合計2000を超えています。MySQL については、プライベートDBクラウドとして開発者に提供しています。
日々増え続けるデータベースをどうやって上手く運用するか、その仕組みの紹介と運用の工夫について話します。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Mix Leap Study #35 - Yahoo! JAPANを支えるデータストア 2000 を超える RDB 運用の裏側 2019年4月9日 ヤフー株式会社 齋藤 航 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
自己紹介 齋藤 航 / Wataru Saito ヤフー株式会社 - データベース部 MySQL チーム - 新卒3年目の DBA 見習い - 社歴 ≒ DBA 歴 2 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
突然ですが MySQL を触ったことがある人? MySQL を運用したことがある人? 3 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
話すこと 大量の RDB を運用する 工夫・面白さ・苦労 4 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
アジェンダ ヤフーにおける RDB MySQL DBaaS の紹介 運用の裏側 5 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ヤフーにおける RDB Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.
多種多様なサービス 7 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
巨大なデータプラットフォーム 2000 DBs RDB 6000 nodes NoSQL 30000 TiB Object Storage 1000,000 Query/day DWH Hadoop 170 PB 4200 node 8 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
RDB の使い分け 1700 MySQL 300 Oracle MySQL : 主に小〜中規模 - 止まると困る Oracle : 大規模・ミッションクリティカル - 止まるととても困る - RAC or Exadata 9 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
RDB チーム? RDB に特化した2チーム - Oracle / MySQL の DBA サービス開発に集中してもらうために存在 - 集約による効率的な運用・管理 - トラブルシュート - パフォーマンスチューニング - 設計相談 - RDB 技術の情報収集 10 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
MySQL では 10人チーム - 170DB/人 (Oracle は 30DB/人) DB プライベートクラウドの提供 - 2011年〜 初代 集約環境: 400 DB - 2016年〜 DB as a Service : 1300 DB 11 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
MySQL DBaaS Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.
初代 集約環境 (2011〜) マスターは 共有ストレージのHA 1サーバに複数 mysqld - 複数サービスが相乗り スレーブやクライアント mysqld mysqld mysqld アクティブ サーバ クラスタ リング スタンバイ サーバ Failover 共有ストレージ 13 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
初代 集約環境 (2011〜) 解決できたこと - 集約によるコスト削減 - 運用品質の担保 (HA, バックアップ, etc.) 新たな課題 - もっと早く、簡単に使いたい - メンテナンス影響を最小限にしたい - フェイルオーバーの数分も惜しい 14 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
求められていたもの すぐに使えて止まらない MySQL 15 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
求められていたもの すぐに使えて止まらない MySQL - リードタイムの削減 - 社内のルールに準拠 16 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
求められていたもの すぐに使えて止まらない MySQL - ダウンタイムの最小化 - メンテナンス影響の最小化 17 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
採用した技術 openstack クラウド基盤 + PERCONA XtraDB Cluster マルチライター型 MySQL 18 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
OpenStack OSS のクラウド基盤 豊富な採用実績 - 社内の IaaS 基盤 - 「openstack ヤフー」で検索 導入意図 - Trove (DB as a service) - API による操作の抽象化・自動化 - VM イメージによる構成管理 19 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Percona XtraDB Cluster Percona 社の マルチライター型 MySQL fork - 全ノードが Read/Write 可能 - ビルトインな高可用性ソリューション - 自動的なデータリカバリ (SST) 等 - 設計当時は Group Replication は未GA 3ノードで1DB クライアント ロードバランサ NODE1 NODE2 NODE3 同期 20 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
PXC メリットと注意点 メリット - DB が単一障害点にならない - ノード間の整合性を DB 側で担保 主な注意点 - InnoDB のみ利用可 - 更新性能は素の MySQL のほうが高い - 楽観ロックによる不整合の回避, etc. 21 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
導入の結果 サービス開発者 開発に集中できる! openstack PERCONA XtraDB Cluster ×1300 over DBA 集中管理で効率化! 22 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイ Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.
メンテナンスのモチベーション チューニングの試行錯誤 VM リソースのスケールアップ セキュリティパッチの適用 => サービスを止めずにやりたい 24 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイの例 (1/5) 新しい VM イメージを用意 CHEF イメージ作成用VM $ yum update $ mysql -e 'select * from hoge' $ nova create-image snapshot イメージ ファイル 自動テスト実行 25 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイの例 (2/5) 対象ノードの無風化を行う mysql> UPDATE clutercheck SET status = 'DISABLED' WHERE node = 'node1' ロードバランサ node1 node2 node3 httpd httpd httpd I'm offline 26 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイの例 (3/5) OS再インストール イメージ ファイル $ nova rebuild OpenStack の OS 再インストール API を実行 node2 node3 27 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイの例 (4/5) データの自動同期 - PXC の State Snapshot Transfer という機能 データディレクトリを 丸ごと持ってくるイメージ node1 node2 node3 28 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
無停止デプロイの例 (5/5) 以上をローリングで繰り返す - アプリに影響を与えずメンテが完了 API 経由でスクリプト化 - 全自動 - 毎月メンテ node1 node2 node3 29 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
DBaaS で出来たこと 利用者の視点 - 誰でも MySQL がすぐに作れる - 1クリックで本番環境が立つ - 無停止メンテナンス DBA 視点 - API 経由で様々な作業の自動化 - 人間の行う単純作業が激減 - Immutable Infrastructure の実現 30 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
運用の裏側 Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.
ここまでのおさらい 様々な用途の MySQL が1700個ある - お手軽データストア - 今後も 500個/年 程度のペースで増える 利用者は1000人以上 MySQL チームは10人 32 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
ここまでのおさらい もっと増える予定 本番データベースの数 (MySQL only) 2000 1500 1000 500 0 FY2013 163 FY2014 310 FY2015 574 FY2016 868 FY2017 1410 いま 1771 33 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
多すぎる…! Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.
大事にしていること 1. シンプルにやる 2. 人間がやる作業を減らす 3. “出来る人”を増やす 35 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
大事にしていること 1. シンプルにやる 2. 人間がやる作業を減らす 3. “出来る人”を増やす 36 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
シンプルにやる 複雑さを回避する - HW/SW の標準化、提供する機能を絞る, etc. - ほぼ 5.6 or 5.7 のみ - InnoDB 以外のストレージエンジンは使わない ただし提供している部分はしっかり運用する 37 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
大事にしていること 1. シンプルにやる 2. 人間がやる作業を減らす 3. “出来る人”を増やす 38 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
人間がやる作業を減らす Toil を減らしたい 人間はミスをする - スクリプト化・No ssh 運用 - 運用ツールはしょっちゅう作られる - 最近では 5.5 → 5.6 → 5.7 マイグレーション レバレッジを効かせる - 少しの改善が大きな効率化になる可能性がある 39 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
大事にしていること 1. シンプルにやる 2. 人間がやる作業を減らす 3. “出来る人”を増やす 40 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
“出来る人”を増やす 困ったら自力で解決出来ることが最良のはず - 例えば Grafana を開放して目線を合わせる 技術ドキュメントはしっかり書く - 例えば MySQL と PXC の差分の説明 社内教育をしっかりやる - コストパフォーマンスが良い (個人の意見) 41 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
大事にしていること 1. シンプルにやる 2. 人間がやる作業を減らす 3. “出来る人”を増やす 42 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
残る仕事はトラブルシュート DBA の腕の見せどころ - 日々、大小さまざまなトラブルが発生する 「目的」を聞いて「手段」を考える サービス開発チームと信頼関係を築く - 「来月、イベントがあるのですが…」 - ゴールは一緒のはず 43 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
まとめ マルチライター MySQL + IaC で実現できたもの - サービス開発に集中できる環境 - ゼロダウンタイム - 少人数での運用 サービス開発の裏側で プラットフォーム開発も頑張っています 44 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
一緒に働く仲間を募集しています 歓迎条件 - RDB のパフォーマンスチューニング経験 - オペレーションの自動化経験 - サービス安定稼働のためのインフラ構築経験 懇親会で話しましょう! キャリア ENGINEER エンジニア部門 ビッグデータエンジニア [大阪] [東京] [福岡] Yahoo! JAPANの各種サービスに活用していくビッグデータ関連業務を担当 45 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Q&A Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved.