Skip Navigation
Show nav
Heroku Dev Center Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
Heroku Dev Center Dev Center
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • 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 in or Sign up
View categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
    • Buildpacks
  • Developer Tools
    • AI Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Node.js Behavior in Heroku
      • Working with Node.js
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails Support
        • Working with Rails
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • Working with PHP
      • PHP Behavior in Heroku
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
      • Heroku Postgres Advanced (Limited GA)
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Inference Essentials
    • Inference API
    • Inference Quick Start Guides
    • AI Models
    • Tool Use
    • AI Integrations
    • Vector Database
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
    • Heroku AppLink
      • Working with Heroku AppLink
      • Heroku AppLink Reference
      • Getting Started with Heroku AppLink
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
    • Other Salesforce Integrations
  • Databases & Data Management
  • Heroku Postgres
  • Heroku Postgres Advanced (Limited GA)
  • Manage Instance Pools on Heroku Postgres Advanced (Limited GA)

Manage Instance Pools on Heroku Postgres Advanced (Limited GA)

Table of Contents [expand]

  • Leader Instance Pool
  • Follower Instance Pools
  • Update the Leader Instance Pool
  • Add a Follower Instance Pool
  • Scale a Follower Instance Pool
  • Destroy a Follower Instance Pool
  • Additional Reading

Last updated May 18, 2026

Heroku Postgres Advanced is in limited general availability. To start creating and using Advanced databases, open a ticket with Heroku Support to request access. Subscribe to our changelog to stay informed of when Heroku Postgres Advanced is generally available.

In a Heroku Postgres Advanced database cluster, there’s one leader instance pool and optionally up to five follower instance pools. The difference between a leader instance pool and a follower instance pool is that the leader instance pool contains the only writer in the entire cluster, while follower instance pools use all instances for read operations. You can only adjust the compute level in the leader instance pool, but can adjust both the compute level and number of compute instances in a follower instance pool. The compute level is the same across all instances in an instance pool.

Leader Instance Pool

The leader instance pool has one required leader instance that performs read and write operations on your database. There’s also an optional standby instance when you enable high availability. The included storage amount in your leader instance is shared across the leader and follower instance pools in the cluster. For example, all databases have 100 GB of included storage for the entire cluster, and don’t accumulate if you add follower instance pools.

You can exceed the base storage amount up to 100 TB. See Usage and Billing on Heroku Postgres Advanced for more information on how Heroku bills storage usage.

Follower Instance Pools

You can use follower instance pools to scale a database’s read capacity and increase the connection limit. For example, you can use them to offload all read operations for a high-traffic application or specific use cases, such as running analytics workloads through a scheduled job. A follower instance pool has a single endpoint where the traffic is distributed across the instances in the instance pool. You can’t control which instances to connect for load balancing.

You can create up to five follower instance pools, with a maximum of 13 follower instances per cluster. For example, you can have one follower instance pool with 13 instances. Or, you can have a combination of three follower instance pools with three instances each, and another two follower instance pools with two instances each for a total of 13 follower instances.

Unlike traditional database configuration with fixed storage and compute per instance like with our classic Heroku Postgres plans, Advanced databases offer flexibility in vertical scaling by increasing the compute level. You can also achieve horizontal scaling by adding more follower instance pools. As long as you connect a pool to an app and don’t change the config var, you can scale Advanced databases without restarting your app. You can scale at any time against any compute instance pools. If you add a new attachment, the app will restart because of a new config var. See Provisioning Heroku Postgres Advanced for more information on attaching follower instance pools.

Update the Leader Instance Pool

You can update the leader level or update high availability after provisioning an Advanced database.

Update Leader Level

To change the leader plan level after provisioning the database, use the interactive data:pg:update command.

You can update to a lower or higher level than the current leader level. Keep in mind that updating to a lower level can impact database performance and reduce the compute power. See Heroku Postgres Plans for the plan level details.

Follow the prompts in the interactive data:pg:update command and select Change leader level:

$ heroku data:pg:update -a example-app

? Select the Heroku Postgres Advanced database to update: (Use arrow keys)
> postgresql-horizontal-12345 (DATABASE)
  postgresql-rectangular-12345 (HEROKU_POSTGRESQL_COBALT)
  ──────────────
  Exit

Update postgresql-horizontal-12345 on ⬢ example-app
Press Ctrl+C to cancel

? Select the pool to update, or add a follower pool: (Use arrow keys)
> Leader: 4G-Performance 2 vCPU 4 GB MEM 2 instances starting at ~$0.208/hour ($150/month) each
  Follower analytics: 16G-Performance 4 vCPU 16 GB MEM 1 instance starting at ~$0.694/hour ($500/month)
  ──────────────
  Add a follower pool
  Exit

Update postgresql-horizonal-12345 on ⬢ example-app
Press Ctrl+C to cancel

? What do you want to do?: (Use arrow keys)
> Change pool level
  Update high availability (HA) standby instance ~$0.417/hour ($300/month)
  ──────────────
  Go back

? Select a Leader Pool Level: (Use arrow keys)
  -4G-Performance    2 vCPU     4 GB MEM  starting at ~$0.208/hour ($150/month)  (current level)
❯ 8G-Performance    2 vCPU     8 GB MEM  starting at ~$0.417/hour ($300/month)
  16G-Performance   2 vCPU    16 GB MEM  starting at ~$0.694/hour ($500/month)
  32G-Performance   4 vCPU    32 GB MEM  starting at ~$1.250/hour ($900/month)
  ...
  ──────────────
  Go back

Changing leader pool level... done
✓ Success: Level changed from 4G-Performance to 8G-Performance for leader pool.

Update High Availability

By default, an Advanced database provisions a standby instance on the leader instance pool for high availability when you provision a database unless you choose to remove it. See High Availability on Heroku Postgres for more information on updating HA in the leader instance pool.

Add a Follower Instance Pool

You can create follower instance pools when you provision a database or create them separately with the interactive data:pg:update command.

Follower instance tool names must be unique, begin with a letter, and between 3–32 characters. Follower instance pool names can only contain letters, numbers, and hyphens. They can’t end in a hyphen or contain two consecutive hyphens. If you don’t enter a name when creating your instance pool, Heroku generates a name in the format adjective-pool-12345.

Follow the prompts in the interactive data:pg:update command and select Add a follower pool:

$ heroku data:pg:update -a example-app

? Select the Heroku Postgres Advanced database to update: (Use arrow keys)
  postgresql-horizontal-12345 (DATABASE)
> postgresql-rectangular-12345 (HEROKU_POSTGRESQL_COBALT)
  ──────────────
  Exit

Update postgresql-rectangular-12345 on ⬢ example-app
Press Ctrl+C to cancel

? Select the pool to update, or add a follower pool: (Use arrow keys)
  Leader: 4G-Performance 2 vCPU 4 GB MEM 2 instances starting at ~$0.208/hour ($150/month) each
  Follower analytics: 16G-Performance 4 vCPU 16 GB MEM 1 instance starting at ~$0.694/hour ($500/month)
  ──────────────
> Add a follower pool
  Exit

Then, select the follower pool level and the number of instances for the pool:

? Select a Follower Pool Level: (Use arrow keys)
❯ 4G-Performance      2 vCPU     4 GB MEM  starting at ~$0.208/hour ($150/month)
  8G-Performance      2 vCPU     8 GB MEM  starting at ~$0.417/hour ($300/month)
  ...

A cluster can have up to 13 follower instances. Two or more instances in a pool enables high availability for redundancy.
Adding more instances distributes the load in the follower pool.

? Select the number of instances for this pool: (Use arrow keys)
❯ 1 instance
  2 instances
  3 instances
  ...
  ──────────────
  Go back

? Do you want to name this follower pool? (Use arrow keys)
  Yes
❯ No, assign a random name
  ──────────────
  Go back

✓ Configure Follower Pool ~$0.208/hour ($150/month)
  4G-Performance
  1 instance

? Confirm provisioning? (Use arrow keys)
❯ Confirm
  Go back

Configuring follower pool... done
✓ Success: we're provisioning optimistic-pool-2416 follower pool on postgresql-rectangular-12345.
Run heroku data:pg:info postgresql-rectangular-12345 -a example-app to check creation progress.

Scale a Follower Instance Pool

You can scale follower instance pools by either changing the instance level or changing the number of instances in the instance pool. Use the interactive data:pg:update command.

You can update to a lower or higher level than the current follower level, as well as reducing the current instance count. Keep in mind that updating to a lower level can impact database performance and reduce the compute power. Reducing the number of instances in the follower instance pool reduces the number of available connections. See Heroku Postgres Plans for the plan level details and Connection Limit for connection details.

Follow the prompts in the interactive data:pg:update command and select Change pool level to change the level or Update number of instances to change the instance count:

$ heroku data:pg:update -a example-app

? Select the Heroku Postgres Advanced database to update: (Use arrow keys)
  postgresql-horizontal-12345 (DATABASE)
> postgresql-rectangular-12345 (HEROKU_POSTGRESQL_COBALT)
  ──────────────
  Exit

Update postgresql-rectangular-12345 on ⬢ example-app
Press Ctrl+C to cancel

? Select the pool to update, or add a follower pool: (Use arrow keys)
  Leader: 4G-Performance 2 vCPU 4 GB MEM 2 instances starting at ~$0.208/hour ($150/month) each
> Follower analytics: 16G-Performance 4 vCPU 16 GB MEM 1 instance starting at ~$0.694/hour ($500/month)
  ──────────────
  Add a follower pool
  Exit

? What do you want to do?: (Use arrow keys)
> Change pool level
  Update number of instances
  Destroy pool
  ──────────────
  Go back

? Select a Follower Pool Level: (Use arrow keys)
❯ 4G-Performance    2 vCPU     4 GB MEM  starting at ~$0.208/hour ($150/month)
  8G-Performance    2 vCPU     8 GB MEM  starting at ~$0.417/hour ($300/month)
  -16G-Performance   2 vCPU    16 GB MEM  starting at ~$0.694/hour ($500/month) (current level)
  32G-Performance   4 vCPU    32 GB MEM  starting at ~$1.250/hour ($900/month)
  ...
  ──────────────
  Go back

Destroy a Follower Instance Pool

Scaling down follower instances to zero doesn’t destroy the follower instance pool.

You can destroy an instance pool with the interactive data:pg:update command.

Follow the prompts in the interactive data:pg:update command and select Destroy pool:

$ heroku data:pg:update -a example-app

? Select the Heroku Postgres Advanced database to update: (Use arrow keys)
  postgresql-horizontal-12345 (DATABASE)
> postgresql-rectangular-12345 (HEROKU_POSTGRESQL_COBALT)

Update postgresql-rectangular-12345 on ⬢ example-app
Press Ctrl+C to cancel

? Select the pool to update, or add a follower pool: (Use arrow keys)
  Leader: 4G-Performance 2 vCPU 4 GB MEM 2 instances starting at ~$0.208/hour ($150/month)
> Follower analytics: 16G-Performance 4 vCPU 16 GB MEM 1 instance starting at ~$0.694/hour ($500/month)
  ──────────────
  Add a follower pool
  Exit

? What do you want to do?: (Use arrow keys)
  Change pool level
  Update number of instances
> Destroy pool
  ──────────────
  Go back

 ›   Warning: Destructive Action
 ›   This command will affect the app ⬢ example-app

✔ To proceed, type example-app or re-run this command with --confirm example-app example-app
Destroying follower pool analytics on ⛁ postgresql-rectangular-12345... done

Additional Reading

  • Heroku Postgres Advanced category
  • Getting Started with Heroku Postgres Advanced

Feedback

Log in to submit feedback.

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
  • © 2026 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