この記事はハンズラボ Advent Calendar 2018 13日目の記事です。
SAA試験勉強中の@sr-mtmtです。
awsのリレーショナルデータベースサービス、RDSには
可用性を高めるための機能で、レプリケーションという機能があるらしいということはわかったんですが
- 同期レプリケーション(非同期レプリケーション)
- 物理レプリケーション
- 論理レプリケーション
ピンとくるようなこないような名前でぜんぜん頭に入ってこない・・・。
そもそも昔からこの「物理」「論理」っていう名前のつけられ方が苦手。
クラウドっていうと全部論理みたいなふうな気持ちになるけどちがうの・・・?
某製薬会社くらいわかりやすい名前をつけてあげたい!、ということで
それぞれどういう機能なのか調べ直しました。
そもそもRDSのレプリケーションとは
マルチAZ配置といって
マスターと呼ばれる実際にデータ処理が行われるRDSインスタンスと
そのインスタンスがあるAZとは別のAZにスレーブと呼ばれるRDSインスタンスが自動的に用意され、
そこにデータを複製することで可用性を高めてくれます。
細かな設定をあれこれせずともこのレプリケーションが使えるというのはRDSの特徴のひとつです。
それぞれの違い
同期レプリケーション
- 整合性重視のやり方
- マスターの変更後、スレーブを変更し、スレーブの変更が確定してから応答する
- そのためスレーブの変更確定を待たずに応答する非同期レプリケーションに比べて若干応答までに時間がかかる
- ただしRDSは高速回線を使ってるから言うほど時間はかからない(数ms)
- RDSのマスター・スレーブ間のレプリケーションはすべて同期レプリケーション
命名
「みんな揃うまで待つくん超特急」
物理レプリケーション
- DBエンジンがMySQL, MariaDB, PostgreSQL, Oracleのときに選べるのは物理レプリケーション
- スレーブのデータをマスターに合わせて最新の状態に維持
- awsが提供している機能
- DB作成時にマルチAZ配置にするか選択することで適用される
命名
awsの「オプション データコピーくん」
論理レプリケーション
- DBエンジンがSQLServerの場合は論理レプリケーション
- スタンバイしているデータをプライマリに合わせて最新の状態に維持、という機能は物理レプリケーションと同じ
- SQLServerが提供しているミラーリングテクノロジーという方法で実現している
- ミラーリングの場合は「マスター/スレーブ」を「プリンシパルサーバー/ミラーサーバー」と呼ぶ
- コミット済みのトランザクションのデータをスレーブに反映
- 今年の11月からこの機能は明示的に設定しなくても「Always On 可用性グループ」で自動的にマルチAZ配置になるみたい
命名
SQLServerの「有無を言わさずデータコピーくん」
まとめ
SQLServerのミラーリングであってもawsのレプリケーションであっても
マルチAZ配置にするということはその分インスタンスを立てるということなので
コストは上乗せされます。
そこまでの可用性が求められないのであればマルチAZにしないことでコストを下げられるなぁとか考えて
DBエンジンを選んだりできるのかな?と思ったりしました。
論理物理ふやふや難問については
Microsoftのドキュメントに
論理レベルで機能するレプリケーションとは異なり、データベース ミラーリングは物理ログ レコードのレベルで機能します。
と書かれていて「えーっ、こっちが論理レプリケーションなんじゃないの・・・」と
ますます迷宮入り・・・。誰かたすけて・・・。
明日は@rednesさんのVPCのお話です。
参考
Amazon RDS マルチ AZ 配置
Microsoft SQL Server でのデータベースのミラーリングによるマルチ AZ 配置
Amazon RDS for SQL Server が Always On 可用性グループをサポート
データベース ミラーリング (SQL Server)