2.4K Views
May 15, 15
スライド概要
この資料は、JPOUG(日本オラクルユーザー会)のイベント「Meetup! JPOUG」にて、
弊社のOracle Data Guardによる高可用性の導入事例について発表した際のものです。
【イベントの概要】
■イベント名
Meetup! JPOUG
■主催
日本オラクルユーザー会
■イベントURL
Meetup! JPOUG:http://www.jpoug.org/2015/03/21/meetup-jpoug
Meetup! JPOUG 開催報告:http://www.jpoug.org/2015/04/30/meetupjpougreport
【セッションの概要】
■日時
2015年 4月10日(金)12:00-14:25
■タイトル
Oracle Data Guard による高可用性
■概要
ヤフー株式会社では、先日、Yahoo!ニュース トピックス システムに対して、Oracle Data Guardによる高可用性の導入を行いました。
このセッションでは、Oracle Data Guardにより高可用性を実現する方法と、それにより得られた成果について、事例を交えて説明させていただきます。
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
Oracle Data Guardによる 高可用性の実現 ヤフー株式会社 宇佐美 茂正
自己紹介 • • • • 氏名:宇佐美 茂正(うさみ しげまさ) 勤務先:ヤフー株式会社 職種:DBA 業務 • DB環境構築 • DB運用業務 • SQLチューニング • DB監査 ※ Oracle関連の業務を主に担当しています Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2
セッションの概要 弊社では、先日、Yahoo!ニュース トピックス システムに対して、Oracle Data Guardによる 高可用性の導入を行いました。 このセッションでは、Oracle Data Guardにより 高可用性を実現する方法と、それにより得られた 成果について、事例を交えて説明させて頂きます。 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3
アジェンダ 1. 高可用性を導入したシステムの紹介 2. Data GuardによるDBのBCP 3. 自動フェイルオーバーの仕組み 4. アプリケーション側の追従 5. 導入後のDBシステム全体の可用性 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4
1.高可用性を導入したシステムの紹介 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5
Yahoo!ニュース トピックス システムの概要 1. 編集者がツールから入稿 入稿ツール 表示系 編集部 (入稿者) ユーザ 4. 表示系がsolrのデータを元にページを生成 2. ツールからOracleへ書き込み Oracle 11g ジェネレータ solr 3. ジェネレータがOracleのデータを元にデータ生成 ※詳細は省略した概要図です Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6
Oracle DBの利用内容 • Yahoo!ニュース トピックスのすべてのデータ を保持 • マスタデータの役割 • 高頻度の読み込みが必要なため、実際に表示に 利用する際はsolrを利用 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7
DB停止による影響 • トピックスのPVは月間100億PVを超える • そのトピックスのマスタデータを担っている • DBの書き込み・参照が出来なくなると、トピッ クスの更新や閲覧が出来なくなる事につながる • ユーザへ与える影響は非常に大きい ただし、実際には障害・災害に備え、Oracleがたとえ停止した 際にでも必要な更新・閲覧ができるようYahoo!ニュースは備え ている Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8
自動フェイルオーバー導入の経緯 • 手動でのフェイルオーバーでは、切り替え完了 までの間、サービスの提供を止めてしまう危険 性があった • • • • DB担当者のアラート検知 DB側の設定 DB担当者とサービス担当者の連絡 クライアント側の設定変更 Yahoo!ニュース トピックスは常にサービスを提供し続けられ る必要がある Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9
2.Data GuardによるDBのBCP Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10
Data Guardとは • • • • Oracle Databaseのレプリケーション機能 1つ以上のStandby DBを構成することが可能 リアルタイムなデータ連携も可能 データ保護、災害時のリカバリに適している Standby DB Standby DB Primary DB Standby DB Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11
Data Guard によるデータ転送 • Primary DBからRedoログが転送される • Standby Redoログからデータファイルへのリ カバリが行われる Primary DB DB Instance Standby DB DB Instance Redo転送 リカバリ Standby Redo Redo Data Files 同じデータ Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Data Files 12
Data Guard の保護モード データの保護レベルの設定が可能 Commit時の Standby DB障害時の Standby Redoへの書込み Primary DBの挙動 モード名 最大保護モード 完全同期 停止される 最大可用性モード 完全同期 稼動が続く 非同期 稼動が続く 最大パフォーマンスモード Primary DB Redo転送 Standby DB リカバリ DB Instance Standby Redo Data Files Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 13
Data Guard の保護モード データの保護レベルの設定が可能 Commit時の Standby DB障害時の Standby Redoへの書込み Primary DBの挙動 モード名 最大保護モード 完全同期 停止される 最大可用性モード 完全同期 稼動が続く 非同期 稼動が続く 最大パフォーマンスモード Primary DB Redo転送 採用 Standby DB リカバリ DB Instance Standby Redo Data Files Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14
Data Guard フェイルオーバーの概要 • Standby DBをPrimary DBへ変更して利用可能 • Standby Redoの更新ログは全てリカバリ可能 • 最大可用性モードであればデータロスト無し Primary DB DB Instance Standby DB DB Instance Redo転送 リカバリ Standby Redo Redo Data Files Data Files Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15
Data Guard フェイルオーバーの概要 • Standby DBをPrimary DBへ変更して利用可能 • Standby Redoの更新ログは全てリカバリ可能 • 最大可用性モードであればデータロスト無し Primary DB DB Instance DOWN Redo Standby DB 【対応ステップの概要】 DB 1.リカバリ状況の確認 2.Primary ロールへ変更 Instance 3.Databaseをオープン リカバリ Standby Redo Data Files Data Files Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16
3.自動フェイルオーバーの仕組み Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17
Data Guard Brokerの導入が必要 • Data Guard Brokerとは • Data Guardの管理機能 • 複数のStandby DBを一元管理可能 • Data Guardのオペレーションを簡略化 • 専用のCUI(DGMGRL)、又はOEMから操作可能 • SQL*Plusで行うよりオペレーションが容易 • 自動フェイルオーバー機能 • 前述のフェイルオーバー処理を自動化可能 • 障害時に必要とされる様々な構成変更が自動化 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
フェイルオーバーを自動化する仕組み • Observerを導入する事で可能 • Primary DBを死活監視 • 障害検知時にStandby DBへフェイルオーバー命令 • Standby DBが自動でOpenされ、使用可能となる Primary Site Primary DB Standby Site 死活監視 Standby DB フェイルオーバー 命令 Observer Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19
導入フロー(Observerの構築) • Observerサーバのセットアップ • Primary、Standbyとは別サーバを準備 可用性を考慮した構成のサーバが望ましい • OS仮想化 – Oralce VM – KVM • Grid Infrastructureへのリソース登録 • Etc… • Oracle Full Clientをインストール PSRレベルでDatabaseサーバと合わせる必要がある Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20
導入フロー(Observerの構築) • Observerサーバのセットアップ • Primary、Standbyとは別サーバを準備 可用性を考慮した構成のサーバが望ましい • OS仮想化 弊社での構成 – Oralce VM – KVM • Grid Infrastructureへのリソース登録 • Etc… • Oracle Full Clientをインストール PSRレベルでDatabaseサーバと合わせる必要がある Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21
導入フロー(Data Guard構築その1) • tnsnames.oraに必要情報を記載 Primary DBとStandby DBのネットサービス名を記載 Observerサーバも含めた構成内の全サーバが対象 • RMANでPrimary DBのコピーを作成 RMAN> duplicate target database for standby from active database; Standby DBで実施 • CRSリソースへDBを登録 Primary DB、Standby DBの双方を登録 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22
導入フロー(Data Guard構築その2) • Data Guard Brokerへ構成登録 • Primary DBを登録 DGMGRL> create configuration ‘<Broker構成名>’ as primary database is ‘<db_unique_name(Primary)>’ connect identifier ‘<net_service_name(Primary)>’; • Standby DBを登録 DGMGRL> add database ‘<db_unique_name(Standby)>’ as connect identifier is ‘<net_service_name(Standby)>’; • 保護モードの設定(最大可用性モード) DGMGRL> edit configuration set protection mode as maxavailability; Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23
導入フロー(Data Guard構築 その3) • 構成を有効化 DGMGRL> enable configuration; Brokerにより、Data Guardに必要な設定が、 データベースに反映されます。 これで、Data Guardは完成です。 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24
導入フロー 自動フェイルオーバー設定 • フェイルオーバー先を設定 DGMGRL> edit database ‘<db_unique_name(Primary)>’ set property FastStartFailoverTarget= ‘<db_unique_name(Standby)>’; • Primary DB復旧待ち時間を設定 DGMGRL> edit configuration set property FastStartFailoverThreshold = ’XX’; • Observerプロセスを起動 DGMGRL> enable fast_start failover; DGMGRL> start observer Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25
アプリケーション側の追従 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26
アプリケーション追従の問題点 • DBが自動でフェイルオーバーしても、アプリ ケーションのセッションがStandby DBに切換 わらなくては意味が無い • 自動フェイルオーバー時に、アプリケーション のセッションをどうやってStandby DBに切り 替えるか? • アプリケーションの修整は最小限に留めたい Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27
TAFの利用 • TAF(透過的接続フェイルオーバー) • セッションが切れた際に自動で再接続を行う • この機能の応用することを検討 Client Server Session Failover SCAN Local Listener Instance Node 1 Local Listener Local Listener Instance Node 2 DOWN Instance Node 3 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 28
実際に採用した接続文字列 topics = (DESCRIPTION_LIST = (FAILOVER = on) (LOAD_BALANCE = off) # Primary DB (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN (Primary Site)>)(PORT = <SCAN Port>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sv_topics) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 360)(DELAY = 10)) ) ) # Standby DB (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN (Standby Site)>)(PORT = <SCAN Port>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sv_topics) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 360)(DELAY = 10)) ) ) ) 29 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
実際に採用した接続文字列 topics = (DESCRIPTION_LIST = (FAILOVER = on) (LOAD_BALANCE = off) # Primary DB (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN (Primary Site)>)(PORT = <SCAN Port>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sv_topics) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 360)(DELAY = 10)) ) ) # Standby DB TAFの設定 (DESCRIPTION = (FAILOVER_MODE句) (ADDRESS = (PROTOCOL = TCP)(HOST = <SCAN (Standby Site)>)(PORT = <SCAN Port>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sv_topics) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 360)(DELAY = 10)) ) ) ) 30 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
セッションの動作(通常時) • Primary DBに接続される • Standby DBに接続される事は無い Standby DBはOpenされていない為、接続不能。 Client Server Primary Site Primary DB (open) Standby Site Standby DB (mount) Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 31
セッションの動作(フェイルオーバー時) • TAFの接続リトライでStandbyに接続される • クライアントにエラーは返らない ※但し、未完了トランザクションはエラーとなる。 Client Server Primary Site Primary DB DOWN (open) Standby Site Standby DB (open) Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 32
セッションの動作(フェイルオーバー後) • Standby DBに接続される。 • 旧Primary DBは障害復旧後もopenされない。 2重更新防止の為、Brokerがopenを阻む。 Client Server Primary Site Primary DB DOWN (open) Standby Site Standby DB (open) Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 33
導入後のDBシステム全体の可用性 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 34
拠点内での可用性 • 障害ポイントを冗長化している • DB node Core Switch Oracle RAC • Storage ASM DB Instance • Network • • Bonding Multipath DB Instance DB Instance RAC DB Oracle ASM 拠点内でも、 高い可用性を実現 DB node 3 Storage 3 DB node 2 Storage 2 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 DB node 1 Storage 1 35
DBシステム全体の可用性 • 前述のDBシステムを、東西2拠点に構築 • Primaryとは別サイトにObserverを構築 • TAFによるDB接続でフェイルオーバーを追従 西 東 Application Application TAFによるDB接続 Primary DB Data Guard Standby DB 死活監視 Observer Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 36
得られた成果 • Yahoo!ニュース トピックスの可用性向上 • DBに自動フェイルオーバーを導入 拠点レベルの災害を考慮したシステム構成となった • アプリケーション側の追従も実現 TAFの機能で、Standby DBへ自動で接続が切換わる • 導入時のアプリケーションの変更点は1つだけ • 接続文字列の変更のみ Oracle Data Guardを活用する事で、 システムに高い可用性を実現することが出来た。 Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 37