2013.11.11xfacebookはてなブックマークpocketcloudpackエバンジェリストの吉田真吾(@yoshidashingo)です。AWS」が掲載されたので、読んでみました。高可用性と書かれている部分は「HA構成(アクティブ-スタンバイ構成)」と読んでもらったほうが意味が分かりやすい部分が多いと思う。提供されるツールを組み合わせることで、アプリケーションにとって堅牢な基盤となる、高い冗長性と可用性のあるデータベースを構築することができる。は高い冗長性と高い可用性のあるデータベースソリューションであるいくつかの機能を提供している。いくつかの機能とそれが解決する範囲について記載する。ボリュームは冗長性が高く、高性能で、ネットワーク経由でアタッチできるブロックレベルのデバイスリソースである。これら仮想ディスクはインスタンスにアタッチすることができ、インスタンスが停止されたりターミネートされてもデータを永続化でき、データベースに高い冗長性を提供する。それぞれのストレージボリュームは同一AZ内で自動的にレプリケートされ、単一のハードウェア障害によるデータ喪失を防いでいる。以下のいくつかの理由において通常のスナップショットを取得しておくことが非常に重要である。・スナップショットはEBSボリュームやRDSデータベースに格納されているデータをバックアップする最も簡単な方法である。スナップショットを取ってなかったり、直近のスナップショットから20GB以上の差分があるEBSボリュームでは、これより冗長性が劣る。・EBSボリュームは作成されたAZ内に含まれる。スナップショットはS3に格納され、2つの施設で同時にデータが喪失することから守られるよう設計されている。不運にも全てのAZでエラーが起きた場合は、直近のスナップショットから新しいボリュームを作成することができるだろう。いう、99.999999999%の耐障害性のあり、AZ全域障害によるデータ喪失にも耐えられるストレージであり、格納されている。インスタンスでエラーが発生したら、ボリュームをデタッチして新しいEC2サーバーに再アタッチできる。新しいインスタンスも高速に開始できる。複数のAZを活用することで、ゾーンからの独立性を担保できる。AZは他のAZの障害の影響を受けないように隔絶されている。AWSはグローバル展開しているため、複数リージョンを活用して災害対策のアーキテクチャを実装できる。コントロール層の設計は、冗長性と耐障害性をサポートしている。SLAを保証している。データベースエンジンはデータベースの可用性を強化するためのさまざまな機能を提供している。フラッシュバック・テクノロジーでは、人為的なエラー操作を選択して効率的に巻き戻すことができる。複数のデータリカバリー方法をサポートしている。TABLE文は、1つのテーブルや、テーブルセットにおける論理的なデータ破損を、特定のリストア・ポイント(訳者注:特定のSCN、タイムスタンプ、作成済みのリストア・ポイント)までリストアすることができる。特定のトランザクションによる変更箇所を全て確認することができる。過去の特定時点のクエリー結果を再現できる。機能)、クエリーが”特定の過去時点で”取得しえたデータを取得できる機能である。これにより企業は監査やコンプライアンスのためのデータを”アーカイブ”しておくことができる。データは半永久的にアーカイブ表領域に格納され、ユーザーの定義している保存期間を杉田もののみエージアウトする点である。上で稼働している場合に利用できる機能である。使って、(バックアップを利用せず)Oracle用に最適化されたフラッシュバックログを使用して、特定時点にデータベース全体をリストアできる。point-in-timeリカバリと同様の機能がある。オンライン・データ再編成および再定義は、ユーザーのデータベースへのフルアクセスを提供したまま、テーブルの物理的な属性の変更やデータやテーブル構造の変更を行える柔軟性を提供する。テーブルが読み書きできるので、異なる表領域にテーブルを移動したり、パーティショニングしたり、カラムを追加や削除したり、インデックスを作ったり再構築したりできる。トランスポータブル表領域はOracleデータベース間でユーザー表領域を素早く移動できる機能である。これを利用し、ユーザー表領域を旧バージョンが稼働しているデータベースから新しいバージョンが稼働する空のデータベースに移動するなどしてデータベースのアップグレード期間を短縮することができる。エディション・ベースの再定義ではオンラインでアプリケーションのアップグレードができる。コードの変更は新しいエディションの領域にインストールされる。データの変更は古いエディションからは見えないように列やテーブルに書き込まれるため安全である。”エディション”ビューはそれぞれのエディションが自身のカラムだけ表示されるように異なった射影を提供する。クロスエディショントリガーは、古いエディションで発生したデータの変更を新エディションへ、あるいは逆についても同様に、変更の伝播を行う。これらデータベースエンジンの機能に加えて、レプリケーション技術を使い、ハードウェア故障やデータセンターの問題や災害から守れるアーキテクチャをデザインすべきである。以下の章でどのようにOracleのレプリケーションをセットアップすればよいか説明しよう。高可用性のアーキテクチャでできている。ハードウェア故障時に、自動的にインスタンスをリプレースする。同一リージョン内の別アベイラビリティゾーンにセカンダリのOracleデータベースを用意する、Multi-AZ配備をサポートしている。このアーキテクチャは、データベースインスタンスやネットワークやストレージ、果てはアベイラビリティゾーン自体の障害からデータベースを保護するものである。アプリケーションサーバーやWebサーバーといったその他のインフラについてはアベイラビリティゾーンの障害が起きても運用を継続したいなら、最低2つのアベイラビリティゾーンに配備しておく必要がある。プライマリのインスタンスに対する全ての書込みは2つめのインスタンスにも確実にレプリケートされることで、2つのOracleインスタンスは同期している。含まないエディションも含め、全てのOracleのエディションで利用可能である。これは顧客に対し、今までの常識を超えた可用性を、きわめてコスト競争力高く提供している。RDSの高可用性アーキテクチャの例である。スタンバイデータベースへのフェイルオーバーは一般的に3分くらいかかる、また、次のような場合に発生する:プライマリデータベースが配置されているアベイラビリティゾーンに可用性が失われた場合プライマリデータベースとのネットワーク接続が切れた場合プライマリデータベースのECU障害プライマリデータベースのストレージ障害データベースのインスタンスクラスをスケールアップしたりスケールダウンしたりする場合データベースソフトへのパッチ適用時Multi-AZオプションを選択するには、データベース作成時に選択すればよいだけである。Consoleでの選択方法である。RDSデータベースをMulti-AZモードに変更することもできる。RDSを稼働させると、追加で以下のようなメリットもある。日次バックアップはスタンバイインスタンスから取得されるため、プライマリのRDSインスタンスに対するI/O負荷がかからない。(自動マイナーバージョンアップを選択している場合)データベースエンジンのアップグレードが必要な場合にパッチはまずスタンバイ側に適用される。完了するとスタンバイをプライマリに昇格させる。可用性への影響はフェイルオーバー中の時間に限られるため、メンテナンスウィンドウの指定期間よりは結果的に短い。Databaseの可用性を高めることができる。プライマリのデータベースがフェイルしたら、スタンバイ・データベースにフェイルオーバーして新しいプライマリにすることができる。スタンバイ・データベースを構成するために、Oracleから2つの関連製品が提供されている。使っていくつかのスタンバイ・データベースが構成できる。スタンバイ・データベースは、プライマリ・データベースのバックアップコピーから初期構築される、Oracleの本番データベースとトランザクション的に一貫性のあるコピーである。REDOログデータをスタンバイ・データベースに転送し、適用することで、自動的に整合性を維持する。3種類のスタンバイ・データベースが構築できる:フィジカル(物理):フィジカル・スタンバイ・データベースはプライマリ・データベースの内容を正確にレプリケーションする。データベース内のデータはプライマリ・データベースと同一になる。ロジカル(論理):ロジカル・スタンバイ・データベースはプライマリ・データベースのREDOログからデータとSQLを生成し、SQLのトランザクションとしてロジカル・スタンバイに再適用する。このようなことから、物理構造や構成はプライマリ・データベースと異なることになる。レプリケーションによる維持ではないため、変更が適用されている間もユーザーはロジカル・スタンバイ・データベースからの読取や、ロジカル・スタンバイ・データベースへの書込みを行う事ができる。データベースが利用できなくなりうるために、サポートされないオブジェクトもいくつかある。スナップショット:スナップショット・スタンバイ・データベースはプライマリ・データベースからのREDOログの受信とアーカイブは行うが、適用は行わないため、リードレプリカや高可用性のために利用できるものではない。ロジカルあるいはスナップショット・スタンバイ・データベースには制限があるため、以降はフィジカル・スタンバイのみについて議論する。プライマリ・データベースとトランザクション一貫性のあるスタンバイ・データベースを維持し、プライマリ・データベースとスタンバイ・データベースの間のレプリケーションは同期あるいは非同期どちらかで構成ができる。保護性、可用性、パフォーマンスを最大化する3つのプロテクション・モードがある。AWS環境を最大限に活用するためには、これらのインスタンスを異なるアベイラビリティ・ゾーンに配置する必要がある。本番データベースが使用不可になったら、スタンバイ・データベースのいずれかを新しいプライマリとして切替えることで、インシデントによるダウンタイムを最小限に抑えることができる。フィジカル・スタンバイ・データベースが読み込みオープン処理と、プライマリ・データベースのトランザクションのアーカイブ処理を同時にできないため、リードレプリカ構成はサポートされていない。マネージド・リカバリ・モードあるいは読取専用モードいずれかで機能させることはできるが、同時に両方のモードにはできない。上のオプションである。プライマリ・データベースからトランザクションのアーカイブを適用し続けながら、スタンバイ・データベースへの読取専用アクセスを可能にする。これにより、読込みのクエリやレポートをスタンバイ・インスタンスで稼働させたり、スタンバイ・インスタンスからバックアップを取得することができる。ともに、プライマリ・データベースの障害や災害によりフェイルオーバーするためのスレーブ・データベースを1つないし複数構築できるので、高可用性の基本構成として頻繁に利用されている。図5(オリジナル参照)はこのアーキテクチャの例である。上でHA構成のデータベースを構成できるサードパーティ製のツールがある。Oracleスタンダード・エディションでもエンタープライズ・エディションでも、Oracleのスタンバイ・データベースを作成して管理することができる。EEのみで、さらにオプションライセンス)■レプリケーションレプリケーションは分散データベースシステムを構成する複数のデータベースで、テーブルなどのデータベース・オブジェクトをコピーして維持するためのプロセスである。一つのデータベースに適用された変更は、リモート・データベースに転送されて適用される前に、ローカルでキャプチャされて一時的に格納される。レプリケーションはさまざまな場所にある複数のサイトで同一のデータを共有するための分散データベース技術である。代替となるデータのアクセス方法を提供できるために、レプリケーションでアプリケーションの可用性を引き上げることができる。アプリケーションは一部の分散データベースがダウンしていても、データのレプリカにアクセス可能であれば機能し続けることができる。レプリケーションは複数のアベイラビリティ・ゾーンにまたがってデータベースのコピーを構成できる、または複数のAWSリージョン間で災害対策戦略としてデータをレプリケーションすることができる。このセクションの論点は高可用性であるが、以下にリストしたレプリケーション技術は、複数データベースにワークロードを分散することでパフォーマンスを向上するために使用することもできる。データをレプリケーションできるが、プロシージャやインデックスのようなその他のオブジェクトはレプリケーションできない。レプリケーションは一方向であり、スナップショット・コピーは読取専用である。マルチ・マスター設定をサポートし、レプリケーションされたどのインスタンスでもデータの更新が可能である。こちらはデータと、インデックスやプロシージャといったその他のオブジェクトもレプリケーションできる。リアルタイムにトランザクションデータをキャプチャ、変換、配信をするための高性能なソフトウェア・アプリケーションである。ログベースの双方向データ・レプリケーションも含まれる。これを使って、計画外の停止あるいは計画停止どちらのダウンタイムも排除するべく、システムのパフォーマンスやスケーラビリティを向上させることができる。このソフトウェアは、システムのアップグレード、移行、メンテナンス作業時のダウンタイムを最小化するように構成することができる。直近のデータで即時フェイルオーバーすることで災害対策という意味で使うこともできる。これは地域をまたいでリアルタイムに分散アプリケーションのデータを同期する。AWSでいえば、同一リージョン内のアベイラビリティゾーン間、あるいは別のリージョン間となりうる。ツールにくわえて、複数のOracleデータベース間でレプリケーションを構成できるサードパーティ製のソリューションがある。サードパーティ製ソリューションの例だ。こちらの記事はなかの人(yoshidashingo)監修のもと掲載しています。編集部が書いた記事xfacebookはてなブックマークpocketお客様のご要望に柔軟に対応いたします。お気軽にご相談ください。cloudpackは、アイレット株式会社が提供するクラウド支援サービスです。問い合わせまでトータルサポート!お問い合わせはこちらアイレットでは、様々な職種で一緒に働ける仲間を募集しています。インフラエンジニア、開発エンジニア、クリエイティブ職、営業職など、様々な職種で一緒に働ける仲間を募集しています。アイレット公式サイト採用情報をご覧ください。採用情報プライバシーポリシークラウド導入のご相談、お見積り、サービスについてのご質問などお気軽にお問い合わせください。最新情報が得られるメルマガ登録はこちら。