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