Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • コマンドライン
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリー
    • 継続的統合
  • 言語サポート
    • Node.js
    • Ruby
      • Bundler の使用
      • Rails のサポート
    • Python
      • Python でのバックグランドジョブ
      • Django の使用
    • Java
      • Maven の使用
      • Java でのデータベース操作
      • Play Framework の使用
      • Java の高度なトピック
      • Spring Boot の使用
    • PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres Getting Started
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
    • Heroku Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
    • コンプライアンス
  • Heroku Enterprise
    • Private Space
      • インフラストラクチャネットワーキング
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • シングルサインオン (SSO)
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Integrating with Salesforce
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres のデータ転送と保持
  • Heroku Postgres ロールバック

Heroku Postgres ロールバック

日本語 — Switch to English

最終更新日 2022年02月01日(火)

Table of Contents

  • ロールバックデータベースの作成
  • プロビジョニング解除
  • 一般的なユースケース: 重大なデータ損失の後のリカバリ

Heroku Postgres ロールバックでは、データベースの状態を以前の時点に “ロールバック” します。

ロールバックは、プライマリデータベースには影響を与えません。これは、フォーク​と同じパターンに従います。ロールバックでは、どのような方法でもプライマリに直接接続されていない新しいデータベースをプロビジョニングします。フォークと同様に、ロールバックも、使用可能になるまでにしばらく時間がかかります。ロールバックが使用可能になると、プライマリにプロモートできます。ロールバックがプライマリになると、以前のアドオンを削除できます。

ロールバック期間は、データベースプラン​によって異なります。

データベースの資格情報がプライマリでリセットされている場合は、ロールバックが、資格情報のリセットより前の時点までさかのぼって引き続きサポートされます。ロールバックプロセス中にフォークが作成されると、新しい一連の資格情報が作成されます。

ロールバックデータベースの作成

ロールバックする前に、目的のロールバックポイントがデータベースで使用可能なことを確認します。データベースプランごとに、ロールバックの可用性が異なります。現在のデータベースのロールバックの可用性を確認するには、heroku pg:info​ コマンドを使用します。

$ heroku pg:info --app sushi
=== HEROKU_POSTGRESQL_YELLOW_URL (DATABASE_URL)
Plan:        Standard 0
Status:      Available
Data Size:   584.6 MB
Tables:      29
PG Version:  9.2.4
Connections: 8
Fork/Follow: Available
Rollback:    from 2013-10-18 20:00 UTC
Created:     2013-04-18 20:14 UTC
Maintenance: not required

ロールバックがフォーキング後の新しいフォークで、またフォロー解除後のフォロワーで使用可能になる前に遅延が発生します。

ロールバックデータベースの作成では、フォロワー​の作成と同じメカニズムが使用されます。プロビジョニングは、--rollback​ フラグを使用した新しいデータベースアドオンの作成時に実行されます。--rollback​ フラグは、同じアプリ上のデータベースの環境設定名、フォーム appname::HEROKU_POSTGRESQL_COLOR​ の引数、または任意の Heroku Postgres データベースのフル URL を受け取ることができます。

さらに、ロールバック先の時刻を指定する必要があります。目的の時間を示す方法には、次の 2 つがあります。

  • 明示的なタイムスタンプ​ - 明示的なタイムスタンプを指定できます。2013-10-22 12:34+00:00​ という形式を使用します。タイムゾーンのオフセットを含める必要があります。また、シンボリックタイムゾーン 2013-10-22 12:34 US/Pacific​ を使用することもできます。

  • 間隔​ - 間隔を指定できます。3 days 7 hours 22 minutes​ という形式を使用します。リカバリ時間は --to​ フラグを使用して、またリカバリ間隔は --by​ を使用して渡す必要があります。両方ではなく、少なくとも 1 つが存在する必要があります。ロールバックは、秒単位まで正確ではありません。リカバリ時間または間隔で指定された秒数は無視されます。

次の例は、完全なロールバックを示しています。

$ heroku addons:create heroku-postgresql:standard-0 --rollback HEROKU_POSTGRESQL_YELLOW --to '2013-10-21 15:52+00' --app sushi

このコマンドは、ターゲットのリカバリ時間 (と経過時間) をコマンドラインにエコーします。

ロールバックの準備には、データセットのサイズに応じて、数分から数時間かかることがあります。heroku pg:wait​ コマンドは、すべての新しいデータベースのプロビジョニングステータスを表示するため、ロールバックがいつ最新になるかを判定するために使用できます。

$ heroku pg:wait --app sushi
Waiting for database HEROKU_POSTGRESQL_SILVER_URL... available

プロビジョニング解除

ロールバックが完了したら、heroku addons:destroy​ を使用してそれをプロビジョニング解除します。

このコマンドで必ず _URL​ サフィックスをデータベース名から除去してください。

$ heroku addons:destroy HEROKU_POSTGRESQL_YELLOW --app sushi
    !    WARNING: Destructive Action
    !    This command will affect the app: sushi
    !    To proceed, type "sushi" or re-run this command with --confirm sushi

一般的なユースケース: 重大なデータ損失の後のリカバリ

ロールバックは、重要なテーブルを誤って削除するなど、重大なデータ損失の問題のための優れた安全策です。 ロールバックを使用して失ったデータを復旧するには、次のようにします。

  1. ロールバックを作成します。

    $ heroku addons:create heroku-postgresql:standard-0 --rollback HEROKU_POSTGRESQL_YELLOW --to '2013-10-21 15:52+00' --app sushi
    Creating heroku-postgresql:standard-0 on ⬢ sushi... $50/month
    Database will become available after it completes rolling back
    to 2013-10-21 15:52+0000.
    Use `heroku pg:wait` to track status.
    postgresql-adjacent-88888 is being created in the background. The app will restart when complete...
    Use heroku addons:info postgresql-adjacent-88888 to check creation progress
    Use heroku addons:docs heroku-postgresql to view documentation
    
  2. ロールバックが最新であることを確認します。

    $ heroku pg:wait --app sushi
    Waiting for database HEROKU_POSTGRESQL_SILVER... available
    
  3. ロールバックをプライマリデータベースとしてプロモート​します。

    $ heroku pg:promote HEROKU_POSTGRESQL_SILVER --app sushi
    
  4. すべてのフォロワー​上の複製を新しいリーダーに対して再確立します (該当する場合)。

    $ heroku addons:create heroku-postgresql:standard-2 --follow HEROKU_POSTGRESQL_SILVER --app sushi
    Adding heroku-postgresql:standard-2 to sushi... done, v71 ($200/mo)
    Attached as HEROKU_POSTGRESQL_WHITE
    Follower will become available for read-only queries when up-to-date
    Use `heroku pg:wait` to track status
    

関連カテゴリー

  • Postgres のデータ転送と保持
MySQL から Heroku 上の Postgres への移行 Heroku Postgres データベースのインポートとエクスポート

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences