Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • 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 (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres の可用性
  • Heroku Postgres のメンテナンス

Heroku Postgres のメンテナンス

日本語 — Switch to English

最終更新日 2024年04月15日(月)

Table of Contents

  • 必要なメンテナンスの確認
  • メンテナンスウィンドウの設定
  • 手動でのメンテナンスの実行
  • メンテナンスの種類
  • 制限

Heroku では、Heroku Postgres データベースのメンテナンスタスクを実行する場合があります。一般的なタスクには、データベースの基礎となるインフラストラクチャの更新があります。たとえば、オペレーティングシステムや必要なライブラリへのパッチ適用、Postgres 自体のアップグレードなどがあります。Heroku ではこれらのメンテナンスタスクを自動的に処理します。

また、データメンテナンス CLI プラグイン​のコマンドを使用して、メンテナンスウィンドウを指定したり、手動でメンテナンスを実行したりできます。この記事の data:maintenances:*​ コマンドを実行する前にプラグインをインストール​してください。

メンテナンスを実行するには 3 つの方法があります。

  • Heroku で自動的にメンテナンスを実行します。
  • メンテナンスモードを使用して手動でメンテナンスを実行します。
  • メンテナンスモードを使用せずに手動でメンテナンスを実行します。

メンテナンスウィンドウは、Essential 層プランを除くすべての Heroku Postgres データベースプラン​で使用できます。

 

データメンテナンス CLI プラグイン​のコマンドは、pg:maintenance​ コマンドの機能を改善および拡張したものです。pg:maintenance​コマンド​はまだ使用できますが、Heroku では、これらを非推奨にしてデータメンテナンス CLI プラグインのコマンドに置き換えることを計画しています。

必要なメンテナンスの確認

データベースのメンテナンスが必要かどうかは、pg:info​ を使用して確認できます。

$ heroku pg:info -a example-app
=== DATABASE_URL
Plan:           Standard 4
Status:         Available
Data Size:      26.1 MB
...
Maintenance:    required by 2018-05-04 21:00:00 +0000
Maintenance:    scheduled for 2018-05-01 14:30:00 +0000, required by 2018-05-04 21:00:00 +0000, replacement currently being prepared
Maintenance window:    Tuesdays 14:30 to 18:30 UTC

data:maintenances:info​ コマンドで確認することもできます。

$ heroku data:maintenances:info DATABASE -a example-app
Fetching maintenance... done
addon_attachments: DATABASE_URL
addon_description: Standard Non-HA
addon_kind:        heroku-postgresql
addon_name:        postgresql-octagonal-1234
addon_plan:        standard-0
addon_window:      Mondays 14:30 to 18:30 UTC
app_name:          example-app
method:            changeover
reason:            routine_maintenance
required_by:       2023-06-30T10:10:13.831+00:00
scheduled_for:     2023-06-12T14:30:00.000+00:00
server_created_at: 2023-05-10T14:52:33.871+00:00
status:            preparing
window:            Mondays 14:30 to 18:30 UTC

Postgres の重要なセキュリティパッチや、基盤となるソフトウェアおよびハードウェアのメンテナンスのため、Heroku Postgres データベースは定期的に更新されます。メンテナンスタスクは少なくとも 90 日ごとに実行されます。

メンテナンスウィンドウの設定

データベースをプロビジョニングすると、デフォルトのメンテナンスウィンドウは月曜日から金曜日の 18:00 ~ 23:00 UTC (10:00 ~ 15:00 PT) に設定されます。Standard、Premium、Private、Shield の Heroku Postgres プランのメンテナンスウィンドウを指定できます。ウィンドウが始まる曜日と時刻 (UTC) を指定できます。

$ heroku data:maintenances:window:update DATABASE Sunday 14:30 -a example-app

メンテナンスウィンドウを設定すると、メンテナンスがアプリケーションとユーザーに及ぼす影響が最小化されます。メンテナンスイベントがビジネスに及ぼす影響が最も小さい時期を選ぶことをお勧めします。

次回のメンテナンスウィンドウの日時を知らせるメールが届きます。日時は heroku data:maintenances:info​ コマンドを使用して確認できます。このコマンドは、メンテナンスイベントのスケジュールがいつに設定されているか、また実行の準備ができているかどうかを示します。

メンテナンスウィンドウの長さは 4 時間です。Heroku では、ウィンドウの開始時刻にできるだけ近い時間からメンテナンスを開始するよう配慮しています。メンテナンスイベントの所要時間は不定ですが、通常、データベースがオフラインになるのは 10 ~ 60 秒だけです。

指定するウィンドウは、heroku data:maintenances:info​ コマンドによって示される required by​ の時刻よりも早く終了する必要があります。

メンテナンスウィンドウの再スケジュール

データベースのメンテナンスウィンドウは、data:maintenances:window:update​ コマンドをもう一度実行して、ウィンドウの新しい開始時刻を指定すると変更できます。

手動でのメンテナンスの実行

手動でメンテナンスを実行する前に、まず、データベースに関連付けられているアプリをメンテナンスモード​にすることをお勧めします。この記事の data:maintenances:*​ コマンドを実行する前にプラグインをインストール​してください。

自動実行

メンテナンスを実行する最も一般的な方法は、Heroku で自動的に実行することです。Heroku では、お客様のデータベースのメンテナンスウィンドウを使用して、メンテナンスを自動的に実行するのに最適な時間を決定します。メンテナンスイベントの途中でアプリが再起動するため、ユーザーによってはエラーや数分の遅延が発生する場合があります。

connection error​、pg is read only​ などのエラーがログに記録されることがあります。これらのエラーは切り替えプロセスの生成物であり、すべてがオンラインに戻っていれば無視しても安全です。

メンテナンスモードが有効な場合

次のコマンドは、アプリをメンテナンスモードにして​、関連付けられたデータベースでメンテナンスを手動で実行する方法を示しています。

$ heroku maintenance:on -a example-app
Enabling maintenance mode for ⬢ example-app... done

$ heroku data:maintenances:run DATABASE -a example-app
Starting maintenance for postgresql-clean-29349... done

$ heroku maintenance:off -a example-app
Disabling maintenance mode for ⬢ example-app... done

この方法では、PostgreSQL フェイルオーバーを実行する前にアプリケーションをメンテナンスモードにします。この方法には、ユーザーのランディングページがクリーンになるなどの利点がありますが、メンテナンスモードの有効化と無効化を手動で行うことから、全体としてはダウンタイムが長くなる可能性があります。

メンテナンスモードが無効な場合

最初にメンテナンスモードを有効にせずにメンテナンスを手動で実行するには、アプリ名を指定した --confirm​ フラグが必要です。

$ heroku data:maintenances:run DATABASE --confirm example-app

このコマンドはすぐにメンテナンスイベントを開始します。

read-only​ または database-independent​ モードがアプリに組み込まれている場合、それらのモードも使用できます。

# for example
heroku config:set READ_ONLY=true
heroku data:maintenances:run --confirm example-app
heroku pg:wait
heroku config:set READ_ONLY=false

メンテナンスの種類

データベースのメンテナンスタスクを実行するとき、Heroku では再起動、切り替え、フェイルオーバーのいずれかの戦略を使用します。Heroku が使用する戦略は、メンテナンスタスクの種類と、データベースプランによって異なります。

たとえば、高可用性 (HA) プラン​ (Premium、Private、Shield) では、データベースが別のデータベースのフォロワー​である場合を除き、Heroku は可能であれば常にフェイルオーバー戦略を使用します。HA 非対応プラン (Standard) と、すべてのフォロワーデータベース (プラン不問) では、Heroku は通常、切り替え戦略を使用します。

1 つ以上のフォロワーがあるデータベースでフェイルオーバーまたは切り替えのメンテナンスイベントが発生した場合、Heroku はフォロワーのポイント先を代替データベースに変更しようとします。フォロワーのポイント先を代替データベースに変更するには、フォロワーデータベースを再起動する必要があります。

状況によって、フォロワーが代替データベースを指すようにすることができない場合は、別の代替データベースが自動的に準備されてプロモートされます。

切り替えメンテナンスイベントの監視と開始

Heroku によってデータベースの切り替えメンテナンスイベントがスケジュールされると、代替データベースの作成が始まります。データベースのサイズによっては代替データベースの作成に時間がかかります。

代替データベースの作成中、data:maintenances:info​ コマンドにより次の情報が表示されます。

$ heroku data:maintenances:info DATABASE --app example-app
Fetching maintenance... done
addon_attachments: DATABASE_URL
addon_description: Standard Non-HA
addon_kind: heroku-postgresql
addon_name: postgresql-octagonal-41284
addon_plan: standard-0
addon_window: Mondays 14:30 to 18:30 UTC
app_name: example-app
method: changeover
reason: customer_request
required_by: 2023-06-30T10:10:13.831+00:00
scheduled_for: 2023-06-12T14:30:00.000+00:00
server_created_at: 2023-05-10T14:52:33.871+00:00
status: preparing
window: Mondays 14:30 to 18:30 UTC

この情報は、メンテナンスでフェイルオーバーまたは再起動の戦略を使用している場合は表示されません。

代替データベースの準備ができてメンテナンスが続行可能になると、data:maintenances:info​ コマンドにより次の情報が表示されます。

$ heroku data:maintenances:info DATABASE --app example-app
Fetching maintenance... done
addon_attachments: DATABASE_URL
addon_description: Standard Non-HA
addon_kind: heroku-postgresql
addon_name: postgresql-octagonal-41284
addon_plan: standard-0
addon_window: Mondays 14:30 to 18:30 UTC
app_name: example-app
method: changeover
reason: customer_request
required_by: 2023-06-30T10:10:13.831+00:00
scheduled_for: 2023-06-12T14:30:00.000+00:00
server_created_at: 2023-05-10T14:52:33.871+00:00
status: ready
window: Mondays 14:30 to 18:30 UTC

制限

メンテナンスウィンドウの設定とメンテナンスの手動実行は、Standard、Premium、Private、Shield プランでのみ行うことができます。

Heroku では、メンテナンスウィンドウに関するお客様の要望にお応えできるよう最善を尽くしますが、保証はいたしかねます。お客様のデータのセキュリティまたは整合性が脅かされる緊急事態が発生した場合、当社の裁量によって通常のウィンドウ以外の時期にメンテナンスを実行する可能性があります。

関連カテゴリー

  • Postgres の可用性
Heroku Postgres での高可用性 Heroku Postgres での高可用性

Information & Support

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

Language Reference

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

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices