In Silico

データ基盤

Snowflake レプリケーションとは?別リージョンに複製して切り替える

2026/10/28 (更新: 2026/11/3) シリーズ「Snowflake 入門」 第7回 / 全13回

シリーズSnowflake 入門全13回
  1. 第1回Snowflakeとは?仕組み・料金・使い方をわかりやすく解説
  2. 第2回Snowflakeのウェアハウスとは?サイズとクレジット・自動停止
  3. 第3回Snowflakeの料金の仕組みとは?計算・保存・転送とコスト管理
  4. 第4回Snowflake マイクロパーティションとは?プルーニングとクラスタリング
  5. 第5回Snowflake VARIANTとは?JSONを扱う半構造化データの仕組み
  6. 第6回Snowflake Time Travel(タイムトラベル)とは?保持期間と復元
  7. 第7回Snowflake レプリケーションとは?別リージョンに複製して切り替える
  8. 第8回Snowflake ロールとは?権限をロールに与えて階層で渡す仕組み
  9. 第9回Snowflake Dynamic Tablesとは?SELECTだけで結果の表を最新に保つ
  10. 第10回Snowflake データ共有とは?コピーせずに取引先と同じ表を使う
  11. 第11回Snowflake Icebergテーブルとは?同じデータを他のエンジンでも読む
  12. 第12回Snowflake Cortexとは?データを外に出さずにSQLでAIを使う
  13. 第13回Snowflake Well-Architectedとは?5つの柱で自分の判断を見直す

このシリーズの紹介へシリーズ一覧へ

  • レプリケーション
  • Snowflake
  • フェールオーバー
  • フェールオーバーグループ
  • 複製グループ
  • Client Redirect
  • リージョン
  • Business Critical
  • REPLICATION_SCHEDULE
  • セカンダリ
  • プライマリ
  • RPO
  • 接続 URL
  • フェールバック
  • 障害復旧
  • データ転送
  • RPO Assurance
  • Well-Architected
  • データ基盤
目次
背景・問い・要点
背景

クラウドのデータベースは、一つのリージョン(クラウドの事業者がデータセンターを置く地域)の中で動く。リージョンの全体が止まると、そのリージョンのサービスは、障害が直るまで使えない。Snowflake でも、リージョンのクラウドサービスを止める大きな障害が起きると、直るまで Snowflake に入れない1。

Snowflake では、別のリージョンやクラウドにあるアカウントへ、データベースやユーザー、ロールなどを写しておける。この機能をレプリケーションという。日本語の公式ドキュメントでは「複製」と訳している2。

問い

Snowflake のレプリケーションとは何で、リージョンが止まったときに利用者はどう切り替えるのか。

要点

レプリケーションは、データベースやユーザー、ロールなどを、同じ組織の別のリージョンやクラウドのアカウントに、決めた間隔で写す機能である。リージョンが止まったら、利用者は写した側のフェールオーバーグループを昇格させ(プライマリに格上げし)、読み書きできる本番にする。

レプリケーションは非同期で写すので、決めた間隔で写す場合、写した側は最大で更新の間隔の 2 倍遅れる。データベースの複製はどのエディションでも使えるが、ユーザーやロールなどアカウントのオブジェクトの複製、フェールオーバー、接続先の切り替えは Business Critical Edition 以上が要る。複製は、人の誤りやデータの破損への備えの代わりにはならない。

モデル・例示

フェールオーバーグループを写し、接続を切り替える

元のアカウントのデータを別のリージョンのアカウントに写しておき、接続を切り替えると、アプリは同じ接続 URL(Uniform Resource Locator)のまま、写した先のアカウントにつながる。Snowflake の公式ドキュメントの例をもとに示す34。

組織 myorg に、アカウント myaccount1 と、別のリージョンの myaccount2 があるとする。myaccount1 で、写すデータベースと写す先を決めたフェールオーバーグループ myfg を作り、myaccount2 にその写しを作る3。写した元の myfg をプライマリ、写しをセカンダリという。アプリは、アカウントの URL ではなく、接続オブジェクト myconnection の URL でつなぐ。この接続も、myaccount2 に写しておく4。

  1. myaccount1myaccount21. myfg のデータベースを 10 分ごとに写す
  2. アプリmyaccount12. myconnection の URL でつなぐ
  3. myaccount13. リージョンが止まる
  4. 管理者myaccount24. myfg と接続を昇格させ、プライマリにする
  5. アプリmyaccount25. 同じ URL でつなぐ

切り替えは、写す先のアカウントで、フェールオーバーグループと接続を一つずつ昇格させる45。

-- 切り替える先のアカウント(myaccount2)で実行する
ALTER FAILOVER GROUP myfg PRIMARY;
ALTER CONNECTION myconnection PRIMARY;

昇格させると、myaccount2 の接続がプライマリになり、接続の URL は変わらない4。アプリは設定を変えずに、別のリージョンのアカウントにつながる。

なぜ別のリージョンに写すのか

Snowflake は、一つのリージョンの中では、三つの独立したアベイラビリティゾーン(同じリージョンの中の、別々のデータセンターの集まり)にサービスを分けている。一つのゾーンが止まっても、追加の費用なしに自動で立て直す6。

リージョンごと止まる場合は、これでは守れない。Snowflake の Well-Architected Framework は、一つのリージョンを超える可用性が要るなら、別のリージョンや別のクラウドへの障害復旧の備えを足すよう勧めている6。Snowflake は、大事なアカウントのオブジェクトを、組織の中の別のリージョンのアカウントへ写すよう勧めている1。

2016 年に、Snowflake の創業者を含む著者らが論文を発表した。発表の場は、データベースの国際会議 SIGMOD(Special Interest Group on Management of Data)である。論文は、データは Amazon S3 が、メタデータは Snowflake が複数のアベイラビリティゾーンに写して、ゾーンの障害に耐える設計を説明した。ただし、仮想ウェアハウスはゾーンをまたがず、ゾーンが丸ごと止まると、利用者が別のゾーンで作り直す必要があるとしていた。論文の障害への備えの節が扱ったのは、一つのリージョンの中の障害である。論文は、データを失わない備えの一つに別のリージョンへのバックアップを挙げていたが、リージョンをまたぐ切り替えは書いていない7。

Snowflake のサービスレベル契約(SLA、Service Level Agreement)は、使えなかった時間をクラウドのリージョンごとに測り、決めた水準を下回ったときの補償を、サービスのクレジットだけとしている8。補償を受けても、止まったサービスが戻るわけではない。

何を写すのか:複製グループとフェールオーバーグループ

写す単位には、複製グループとフェールオーバーグループの二つがある。どちらも、元のアカウントのオブジェクトを一まとまりとして、同じ組織の一つ以上のアカウントへ写す2。

グループごとに更新の間隔を決められる1。一つのオブジェクトは、一つのフェールオーバーグループにしか入れられず、フェールオーバーグループと複製グループの両方には入れられない9。リージョンもクラウドもまたげ、Amazon Web Services、Google Cloud、Microsoft Azure のすべてのリージョンで使える。ただし、商用のリージョンと政府向けなどのリージョンの間で写すには、Snowflake のサポートに頼む2。

写せるのは、データベースと共有(シェア)のほかに、ユーザー、ロール、ウェアハウス、リソースモニター、連携(インテグレーション)、ネットワークポリシーなどのアカウントのオブジェクトである210。

写した側では、次のことに気を付ける92。

写らないオブジェクトもある。写らないオブジェクトは更新のときに飛ばされ、切り替えた後の本番には無い2。

Snowflake には、データベースだけを写す、機能の限られた仕組み(データベースの複製)もある。Snowflake は、グループを使うアカウントの複製を使うよう強く勧めている11。

エディション:切り替えは Business Critical 以上

使える機能は、Snowflake の契約の種類(エディション)で決まる21。

機能要るエディション
データベースと共有の複製すべてのエディション
ほかのアカウントのオブジェクトの複製Business Critical Edition 以上
フェールオーバーグループBusiness Critical Edition 以上
Client RedirectBusiness Critical Edition 以上

フェールオーバーグループは、Business Critical Edition 以上のアカウントでしか作れず、写す先も Business Critical Edition 以上のアカウントでなければならない2。Business Critical Edition に上げたばかりのアカウントでは、切り替えの機能が使えるまで最大 12 時間かかることがある10。

写す間隔と遅れ:写した側は最大で間隔の 2 倍遅れる

更新は、REPLICATION_SCHEDULE で決めた間隔で自動で走らせるのがよいと、Snowflake は勧めている2。更新では、前の更新から変わった分だけを写す3。一度に走る更新は一つだけである2。更新のたびに、写したファイルのハッシュ値を元と写しで比べ、合わなければ更新は失敗する3。

写すのは非同期なので、写した側は元より遅れる。遅れは、最大で更新の間隔の 2 倍である。30 分ごとに写すなら、障害のときに写した側は最大 60 分遅れている1。ただし、更新が間隔より長くかかると、次の更新は前の更新が終わるまで遅れる2。

そのため、計画外の切り替えでは、最後の更新より後に元へ書いたデータは、新しい本番に無い。Snowflake は、切り替えた後に、新しい本番で直近のデータを突き合わせてから読み取りを受け付ける進め方を挙げている1。Snowpipe Streaming(行を少しずつ流し込む取り込み)で入れたデータは、写る前に切り替わったら、新しい本番に同じデータを入れ直す必要がある9。計画した訓練や移行では、データを失わないように、先に元への書き込みを止めて、最後の更新をしてから切り替える手順がある5。

どこまでのデータを失ってよいかを、RPO(Recovery Point Objective、目標復旧時点)という。どれだけの時間で戻すかを、RTO(Recovery Time Objective、目標復旧時間)という。Snowflake の Well-Architected Framework は、大事な処理ごとに RTO と RPO を決めて書いておき、RPO に合わせて更新の間隔を短くするよう勧めている6。

Snowflake では、フェールオーバーグループの RPO を契約で保証する仕組みを RPO Assurance という。2026 年 9 月に一般提供になった12。RPO の目標は、契約で別に決めない限り 30 分である。SLA が対象にするのは、同じクラウドの、Snowflake が決めたリージョンの組だけで、対象の組では月の対象時間の 99.9% 以上で遅れをこの目標の内に保つとしている。使うには Snowflake の担当者に申し込む13。RPO Assurance では更新の間隔を決めず、変わった分を続けて写す。Snowflake は、既定の更新方式である Replication Classic から、別の更新方式の Optimized Refresh か RPO Assurance へ移るよう勧めている13。

切り替える:フェールオーバーとフェールバック

切り替えは、写す先のアカウントで、セカンダリのフェールオーバーグループをプライマリに昇格させて行う14。グループの中のオブジェクトはまとめて読み書きできるようになり、元のアカウントのオブジェクトは読み取り専用になる15。

障害の長さで、選び方が変わる1。

障害が直ったら、まず元のアカウントのグループを更新して、障害の間に新しい本番へ書いたデータを写す。その後、元のアカウントのグループをもう一度プライマリに昇格させ、接続も元のアカウントへ戻す。これをフェールバックという1。

接続先を切り替える:Client Redirect

Snowflake では、アプリの接続先を切り替える機能を Client Redirect という。アプリの接続の設定を変えずに、別のリージョンのアカウントへつなぎ替える4。

訓練:手順を書き、定期的に切り替えてみる

Snowflake の Well-Architected Framework は、切り替えの SQL(Structured Query Language)を手順書に書き、実行できる権限を少数の人に限るよう勧めている。本番でない環境を切り替える訓練を定期的に行い、手順と RTO、RPO を確かめるよう勧めている6。

計画した訓練では、元のフェールオーバーグループを読み取り専用にしてから、最後の更新をして、写した側を昇格させる5。接続だけを切り替えて、データのグループはセカンダリのままにする訓練もできる5。

費用:写した側のアカウントに請求される

複製の料金は、データ転送と計算の二つに分かれ、どちらも写した側のアカウントに請求される。ほかに、写した側の保存の料金と、写した側でマテリアライズドビューと検索最適化を自動で保守する料金もかかる16。

最初の複製や更新が失敗しても、料金はかかる。ただし、失敗する前に写したデータは、14 日以内の次の更新で使い直され、もう一度は写されない16。よく書き換わる大きな表は、複製の費用が大きくなるので、そうした表を持つデータベースは更新の間隔を長くするよう、Snowflake は勧めている9。費用は、写すデータベースやオブジェクトと、更新の間隔を選ぶことで抑えられる。更新を止めれば、転送と計算の料金は止まる16。

ACCOUNT_USAGE の REPLICATION_GROUP_USAGE_HISTORY ビューは、グループごとに使ったクレジットと転送したバイト数を 365 日分持つ。ビューへの反映には、最大 3 時間かかる18。

複製は、人の誤りへの備えではない

Snowflake の Well-Architected Framework は、リージョンの障害に耐えるには別のリージョンへの複製が要るが、人の誤りやデータの破損への備えの代わりにはならないとしている6。複製は元の表の最新の版を写し、写した側の Time Travel の履歴は別に持つ9。誤って変えた表は、本番のアカウントの Time Travel で戻す。Well-Architected Framework も、データを戻す第一の手段を Time Travel としている6。そのうえで、大事なデータベースのゼロコピークローンを定期的に自動で作り、別のリージョンへの複製と組み合わせるよう勧めている。クローンの代わりに、Snowflake Snapshots で変更できないバックアップを定期的に作り、期限が来たら消す方法も挙げている6。

出典18件
  1. Snowflake「Introduction to business continuity & disaster recovery | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/replication-intro — 遅れの幅、切り替えの選び方。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  2. Snowflake「Introduction to replication and failover across multiple accounts | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-intro — 写るオブジェクトと写らないオブジェクト、エディション。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15

  3. Snowflake「Replicating databases and account objects across multiple accounts | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-config — 設定の手順と例、変わった分だけ写す、ハッシュ値での確かめ。 ↩ ↩2 ↩3 ↩4 ↩5

  4. Snowflake「Redirecting client connections | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/client-redirect — 接続 URL、別々のリージョン、接続の昇格。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

  5. Snowflake「Quiesce a primary failover group | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-quiesce-primary — 計画した訓練と移行の手順。 ↩ ↩2 ↩3 ↩4

  6. Snowflake「Reliability」Snowflake Well-Architected Framework、2026年6月17日更新、2026年10月27日取得. https://www.snowflake.com/en/developers/guides/well-architected-framework-reliability/ — アベイラビリティゾーン、別のリージョンへの備え、手順書と訓練、RTO と RPO。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7

  7. Benoit Dageville ほか「The Snowflake Elastic Data Warehouse」SIGMOD 2016、2016年6月、2026年10月27日取得. https://info.snowflake.net/rs/252-RFO-227/images/Snowflake_SIGMOD.pdf — 4.2 節、障害への備え。 ↩

  8. Snowflake「Support Policy and Service Level Agreement」2026年9月28日更新、2026年10月28日取得. https://www.snowflake.com/legal/support-policy-and-service-level-agreement/ — 使えなかった時間の測り方と、クレジットによる補償。 ↩

  9. Snowflake「Replication considerations | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-considerations — 読み取り専用、Time Travel の履歴、ステージ、Snowpipe Streaming。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9

  10. Snowflake「CREATE FAILOVER GROUP | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/sql-reference/sql/create-failover-group ↩ ↩2

  11. Snowflake「Introduction to database replication across multiple accounts | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/db-replication-intro ↩

  12. Snowflake「Sep 30, 2026: Optimized Refresh and RPO Assurance for failover groups (General availability) | Snowflake Documentation」2026年9月30日、2026年10月28日取得. https://docs.snowflake.com/en/release-notes/2026/other/2026-09-30-optimized-refresh-rpo-assurance-ga ↩

  13. Snowflake「Optimized Refresh and RPO Assurance | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-optimized-refresh — 日本語版は無い(2026 年 10 月 28 日時点)。 ↩ ↩2

  14. Snowflake「ALTER FAILOVER GROUP | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/sql-reference/sql/alter-failover-group ↩

  15. Snowflake「Failing over account objects | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-failover-failback — 更新中は昇格できない、予定された更新の再開、切り替えた後の流し直し。 ↩ ↩2 ↩3 ↩4

  16. Snowflake「Understanding replication cost | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/account-replication-cost — 日本語版の題は「複製コストについて」。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  17. Snowflake「Understanding data transfer cost | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/user-guide/cost-understanding-data-transfer ↩

  18. Snowflake「REPLICATION_GROUP_USAGE_HISTORY view | Snowflake Documentation」日付なし、2026年10月28日取得. https://docs.snowflake.com/en/sql-reference/account-usage/replication_group_usage_history ↩

この記事はAIを使用して執筆されました。内容には誤りが含まれる可能性があります。事実や数字の出典は脚注から確かめられます。