~DBのレプリケーション~2015.05.25皆様、こんにちわ。CCSでプログラマをやっている武藤と申します。今回も引き続き、サーバの冗長化について書いていきたいと思います。今回のテーマは『DBのレプリケーション』です。◆『レプリケーション』とは?そもそもレプリケーションという単語は「複製」という意味です。単語から察することが出来ると思いますが、データの一貫性を保った「複製」を作成することをレプリケーションと言います。DBの観点から考えたときに、バックアップとの違いは下記のようになります。・複製元から複製先へ、全ての更新記録を送信します。複製元で、あるテーブルが作成された場合、もしくはテーブルにレコードを1件挿入した場合はそれらの更新が全て複製先に通知され、実行・反映されます。・複製元で障害が発生した場合でも、複製先をダウンタイムなしで利用することが出来ます。冗長なDBシステムの構成に役立つのはもちろんのこと、データ取得に利用することで負荷分散を図ることも可能です。◆『レプリケーション』の方式と注意点レプリケーションには前述の「マスタスレーブ方式」と「マルチマスタ方式」の2つの方式があります。複製元をマスタ、複製先をスレーブとし、マスタからスレーブへ更新記録を送信します。更新命令は全てマスタが受け取るため、更新頻度が高いほどマスタへの負荷が集中します。マスタから送信された更新命令がスレーブで処理されるまでの間マスタ・スレーブ間でDBの内容が異なる可能性があります。スレーブからマスタへは更新が同期されないため、スレーブへの命令は検索処理のみに限定されます。全てのDBがマスタ及びスレーブとなる方式です。更新命令をどのDBに送ってもよく、全てのDBで同期がなされます。その性質上、全てのDBが遅延することなく同期している必要があるため更新性能が劣化する可能性があります。整合性の確保のため複雑な処理が必要となる場合があります。メンテナンスやリカバリの際にも、マルチマスタ方式は扱いが難しいため一般的にはマスタスレーブ方式が採用される場合が多いようです。ソーシャルゲームのサーバ等、速度が最重要となる場合はマスタスレーブ方式を使用しましょう。・DBのレプリケーション・レプリケーション方式と注意点について簡単に書かせて頂きました。構成自体は難しいものではないですが、どのような動作をするかイメージし易くするためには実際に触ってみることをオススメします。世界的に有名なOSSのMySQLでもサポートしていますので、比較的簡単に用意出来ます。レプリケーションをマスターして堅牢なシステム作りに役立てて下さい。クラウドクリエイティブスタジオでは絶賛エンジニア募集中です。興味のある方は、是非、以下のリンクをご覧下さい。今回は以上となります。