分1234はじめに今回は,MongoDBのレプリケーションについて説明します。最初にレプリケーションの概要を説明します。次に実際に構築する手順を説明した後,レプリケーションに必要な設定項目について解説します。最後にMongoDBのレプリケーションで重要な機能であるOplog,書き込み保証などについて解説します。前回の記事の最後に,シャーディングについて説明すると書きましたが,予定を変更しましてレプリケーションから先に説明します。シャーディングは次回取り上げる予定です。レプリケーションのメリットまずは,MongoDBが採用しているマスター/スレーブ方式のレプリケーションの一般的なメリットについて説明します。マスター/スレーブ方式のレプリケーションは以下のようなメリットをもたらします。可用性の向上レプリケーションは主に冗長性を得るために設計され,多くのプロダクション環境で導入されています。マスターノードがスレーブノードと同期していることから,マスターノードに障害が起きてもデータロストやサービス停止時間を最小限にすることが可能です。近年ではDR(ディザスタリカバリ)対応のため,地理的に離れたデータセンターにノードを分散させる設計も多く見られます。保守性の向上レプリケーションは負荷の高い操作をスレーブノードで実行できることにより,メンテナンス性を高めてくれます。バックアップをスレーブノードで行い,不要な負荷をマスターノードにかけないようにすることは広く行われています。他にも負荷の高い大規模なインデックス構築なども,まずはスレーブノードで構築し,スレーブを既存のマスターと交代させ,その後新たなスレーブでもう一度インデックスを構築するといった方法を実施することが可能です。負荷分散による性能の向上レプリケーションを使用すれば,読み取り(Read)の負荷をノード間で分散させることができます。負荷のほとんどがReadで占められているようなアプリケーションの場合,Readの負荷をスレーブに分散させることによりシステムをスケールさせることが可能です。MongoDBではv2.2から,Readノードの分散をドライバで実装可能となりました。データの読み取り一貫性レベルに応じて,どのノードからReadするかをアプリケーションから容易に設定することが可能です。2.2の新機能に記載されています。MongoDBレプリケーション概要MongoDBには多くのRDBが実装しているマスター/スレーブ方式のレプリケーション機能があります。レプリケーションは1つのMongoDBにあるデータを別のMongoDBに複製できる機能です。データの複製は非同期で行われます。従来のRDBに無い機能として,MongoDBは自動フェイルオーバーを実装しています(※1⁠)⁠。マスターに障害が発生しても自動的にフェイルオーバーとリカバリが可能です。後ほど説明する「書き込み保証」や「読み取り負荷分散」はスケーラブルに設計されたMongoDBの特徴的な機能です。MongoDBではマスターのことをプライマリ,スレーブのことをセカンダリと呼びます。MongoDBのレプリケーションの最小構成は,3つのノードが必要です。3つのフルノードセカンダリは,プライマリのデータのコピーを保持します。アービターはデータのコピーを保持しませんが,フェイルオーバーの際に新しいプライマリノードを選択する役割を果たします。MongoDBのレプリケーションには以下の2つがあります。スレーブレプリケーションの上位機能であり,自動化されたフェイルオーバー機能を提供します。現在ではレプリカセットが推奨されています。したがって,本記事ではレプリカセットについて解説します。MongoDBのレプリケーションはレプリカセット機能で提供されます。それでは実際にレプリカセットを構築してみましょう。※1)MySQLでは自動フェイルオーバーが次のバージョンの5.6から実装されます。OpenStandia所属。オープンソースのR&Dとセミナー講師を担当。Debian,Ubuntu,Liferayのコミュニティで活動した後,MongoDBの翻訳に関わり,丸の内MongoDB勉強会を始める。実家がお寺で,住職の資格を所持する坊主系エンジニア。OpenStandia所属。オープンソースを使ったSIやサポートの業務に従事。藤崎と共同で丸の内MongoDB勉強会を始める。好きなものはLinuxとRuby。OpenStandia所属。オープンソースを使ったSIや製品開発業務に従事。丸の内MongoDB勉強会では広報兼雑用係を務める。趣味はレザークラフト,ダイビング,スキー,キャンプ,ジェットスキー,カメラ等々。作って滑って撮って潜れるエンジニア。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。