【れぷりけーしょん】
レプリケーション(データベース) とは?
最終更新:
💡 DBの更新を複製へ伝える
データベースの変更を別の複製へ伝える技術。読み取り負荷の分散や障害時の切替えに利用されるが、反映の遅れや切替え手順を考える必要がある。
📌 このページのポイント
なんで複製が必要なの?
プライマリからレプリカへ更新を伝える構成なら、読み取りに使えるレプリカへ負荷を分散したり、障害時に切替え先を用意したりできるよ。ただし、効果は問い合わせや構成次第。複製を作るだけで自動的に可用性が保証されるわけではないんだ
非同期はレプリカの確認を待たずに書き込みを完了する。同期は指定したレプリカ側の確認も待つけれど、何を確認するかは製品や設定次第なんだ。PostgreSQLでは変更の記録を永続ストレージに保存するまで待つ設定と、読み取りに反映されるまで待つremote_applyは違う。同期だから全レプリカの読み取りが最新、とは限らないよ
レプリケーションラグって問題?
フェイルオーバーの注意点は?
レプリカの昇格とアプリの接続先の切替えを用意し、旧プライマリも書き込みを受け続けないようにする。非同期なら未転送の更新を失う可能性もあるよ。自動化の範囲は製品や運用次第なので、切替えと復旧の手順を試しておこう
レプリカがあればバックアップはいらない?
別に用意しよう。誤った更新や削除も複製へ伝わるから、現在の複製があることと、過去へ戻せることは違うんだ。例えばPostgreSQLの時点復旧には、ベースバックアップと必要な履歴のWALが必要になるよ
まとめ:ざっくりこれだけ覚えればOK!
「レプリケーション」って出てきたら「DBの更新を別の複製へ伝える仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Database Replication」 = データベースの複製
💬 Replicationは「複製」。更新を別のDBへ伝えて複製を保つ仕組みで、常に同時に反映されるとは限らないよ