Cloud SQL read pools support load balancing for your large read workloads.
What are read pools?
A read pool is a collection of read replica instances used to distribute
your large read workloads. These workloads can be redirected from the primary
instance to the read pool to reduce load on the primary instance.
Each read replica in the read pool is called a read pool node.
You can scale your read pool in several ways:
Scale in or out: scale load balancing capacity horizontally by
modifying the number of read pool nodes in the read pool.
Each read pool supports between 1 and 20 read pool nodes.
Scale up or down: scale load balancing capacity vertically by
modifying the machine type associated with a read pool node. Once defined,
configuration is uniformly applied across each read pool node in the read pool.
When you modify read pool node settings such as storage, connectivity, or
database configuration flags, the changes are automatically applied uniformly
across each read pool node in the read pool.
The read pool is accessible through a single read endpoint with
an immutable IP address. Connections made through the endpoint are
automatically redirected to one of the read pool nodes. When you want the
read pool to scale in or scale out, applications that were previously
connected to this single read endpoint don't need to be reconfigured, even
though you can create new read pool nodes in the read pool or delete previous
ones.
Each read pool node also has its own IP address. While not
recommended as an efficient approach for accessing your data, you can use
these IP addresses to troubleshoot individual read pool node performance.
For more information on how to retrieve the connection information for the
read pool or the read pool nodes (either IP addresses or a connection string),
see
View read pool information.
The following characteristics apply:
Read pool nodes of the read pool always reside in the same region, as
specified by the user. Google Cloud alternates read pool node residency
among all zones in the region.
A primary instance can have one or more read pools.
The following operations incur sub-second downtime:
Scaling out or in (adding or removing read pool nodes).
Scaling up or down (changing the machine type of the nodes in the pool).
Converting an existing zonal read replica to a read pool.
A read pool receives maintenance before its primary instance, similar to
read replicas. Like read replicas, read pools receive maintenance during the
primary instance's maintenance window.
Each read pool node has the same metrics available as a Cloud SQL
read replica.
When using gcloud or the Google Cloud console to describe
the details of a project, the read pool name is listed, individual
read pool node names are not.
Traffic is served from read pool nodes based on whether the database is
healthy, but regardless of how high replication lag on that read pool node is.
Traffic can be served from a lagging read pool node even if another read pool
node is available that isn't lagging. A database is considered healthy if the
database process is up and can answer queries, but there is no requirement on
how fresh the data being served is.
No guarantee is made about a single logical session
connecting to multiple read pool nodes in the read pool. It's possible for later
requests in a session to connect to a read pool node that has a lower replication
position
(LSN)
than the read pool node that served an earlier request, which can cause the
state of the database to appear to go back in time.
The following types of updates aren't supported:
While read pools still receive Cloud SQL maintenance updates, you can't
update your read pool to a new major database version.
Starting or stopping nodes of the read pool
In addition to operations that aren't supported on read replicas, the
following operations aren't supported on read pools:
promote replica
restart
import
export
failover
re-encrypt
clone
The following features can't be used with a read pool:
Private Service Connect
SSL/TLS certificates with shared CA or customer-managed CA
A read pool can't replicate to another instance, for example, a cascading
replica or another read pool.
A read pool must replicate directly from a primary instance. It can't be a
cascading replica.
If you want to convert a regional read replica to a read pool, then you must
first convert the regional read replica to a zonal read replica.
When creating or scaling a read pool, you must wait for previous create pool,
scale in, or scale out operations associated with the read pool to finish. This
restriction applies to any other read pool associated with the same primary
instance. If you want to scale multiple read pools associated with the same
primary instance, then you must wait for scaling operations associated with the
first read pool to finish before you start scaling the next read pool. If you
issue concurrent requests, then you might receive the following error:
Operation failed because another operation was already in progress..
Only a zonal replica located in the same region as the primary can be
converted for use in a read pool.
You can't add or remove read pool nodes from the read pool while you're
changing their machine type at the same time.
If your application must connect to a dedicated read replica—for
example, because of secondary indexes present on a specific read replica—create
a Cloud SQL read replica and use it instead.
You can't query specific users and databases associated with
a read pool. Since Cloud SQL Studio relies on data provided by
users and databases, Cloud SQL Studio isn't supported with read pools.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# About read pools\n\n\u003cbr /\u003e\n\n[MySQL](/sql/docs/mysql/about-read-pools \"View this page for the MySQL database engine\") \\| PostgreSQL \\| SQL Server\n\n\u003cbr /\u003e\n\n|\n| **Preview**\n|\n|\n| This feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| You can process personal data for this feature as outlined in the\n| [Cloud Data Processing\n| Addendum](/terms/data-processing-addendum), subject to the obligations and restrictions described in the agreement under\n| which you access Google Cloud.\n|\n| Pre-GA features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nCloud SQL read pools support load balancing for your large read workloads.\n\nWhat are read pools?\n--------------------\n\nA *read pool* is a collection of read replica instances used to distribute\nyour large read workloads. These workloads can be redirected from the primary\ninstance to the read pool to reduce load on the primary instance.\n\nEach read replica in the read pool is called a *read pool node*.\n\nYou can scale your read pool in several ways:\n\n- **Scale in or out**: scale load balancing capacity horizontally by modifying the number of read pool nodes in the read pool. Each read pool supports between 1 and 20 read pool nodes.\n- **Scale up or down**: scale load balancing capacity vertically by modifying the machine type associated with a read pool node. Once defined, configuration is uniformly applied across each read pool node in the read pool.\n\nWhen you modify read pool node settings such as storage, connectivity, or\ndatabase configuration flags, the changes are automatically applied uniformly\nacross each read pool node in the read pool.\n\nThe read pool is accessible through a *single read endpoint* with\nan immutable IP address. Connections made through the endpoint are\nautomatically redirected to one of the read pool nodes. When you want the\nread pool to scale in or scale out, applications that were previously\nconnected to this single read endpoint don't need to be reconfigured, even\nthough you can create new read pool nodes in the read pool or delete previous\nones.\n\nEach read pool node also has its own IP address. While not\nrecommended as an efficient approach for accessing your data, you can use\nthese IP addresses to troubleshoot individual read pool node performance.\n\nFor more information on how to retrieve the connection information for the\nread pool or the read pool nodes (either IP addresses or a connection string),\nsee\n[View read pool information](/sql/docs/postgres/create-read-pool#view-read-pool).\n\nThe following characteristics apply:\n\n- Read pool nodes of the read pool always reside in the same region, as specified by the user. Google Cloud alternates read pool node residency among all zones in the region.\n- A primary instance can have one or more read pools.\n- The following operations incur sub-second downtime:\n - Scaling out or in (adding or removing read pool nodes).\n - Scaling up or down (changing the machine type of the nodes in the pool).\n - Converting an existing zonal read replica to a read pool.\n- A read pool receives maintenance before its primary instance, similar to read replicas. Like read replicas, read pools receive maintenance during the primary instance's maintenance window.\n- Each read pool node has the same metrics available as a Cloud SQL read replica.\n- When using `gcloud` or the Google Cloud console to describe the details of a project, the read pool name is listed, individual read pool node names are not.\n\nLimitations\n-----------\n\nThe following limitations apply:\n\n- Read pools are only available for [Cloud SQL Enterprise Plus edition](/sql/docs/postgres/editions-intro) instances on the [new network architecture](/sql/docs/postgres/upgrade-cloud-sql-instance-new-network-architecture#check-single-instance). The primary instance associated with a read pool must also be a Cloud SQL Enterprise Plus edition instance.\n- Traffic is served from read pool nodes based on whether the database is healthy, but regardless of how high replication lag on that read pool node is. Traffic can be served from a lagging read pool node even if another read pool node is available that isn't lagging. A database is considered healthy if the database process is up and can answer queries, but there is no requirement on how fresh the data being served is.\n- No guarantee is made about a single logical session connecting to multiple read pool nodes in the read pool. It's possible for later requests in a session to connect to a read pool node that has a lower replication position (LSN) than the read pool node that served an earlier request, which can cause the state of the database to appear to go back in time.\n- The following types of updates aren't supported:\n - While read pools still receive Cloud SQL maintenance updates, you can't update your read pool to a new major database version.\n - Starting or stopping nodes of the read pool\n- In addition to operations that aren't supported on read replicas, the following operations aren't supported on read pools:\n - promote replica\n - restart\n - import\n - export\n - failover\n - re-encrypt\n - clone\n- The following features can't be used with a read pool:\n - Private Service Connect\n - SSL/TLS certificates with shared CA or customer-managed CA\n- A read pool can't replicate to another instance, for example, a cascading replica or another read pool.\n- A read pool must replicate directly from a primary instance. It can't be a cascading replica.\n- If you want to convert a regional read replica to a read pool, then you must first convert the regional read replica to a zonal read replica.\n- When creating or scaling a read pool, you must wait for previous create pool, scale in, or scale out operations associated with the read pool to finish. This restriction applies to any other read pool associated with the same primary instance. If you want to scale multiple read pools associated with the same primary instance, then you must wait for scaling operations associated with the first read pool to finish before you start scaling the next read pool. If you issue concurrent requests, then you might receive the following error: `Operation failed because another operation was already in progress.`.\n- Only a zonal replica located in the same region as the primary can be converted for use in a read pool.\n- You can't add or remove read pool nodes from the read pool while you're changing their machine type at the same time.\n- If your application must connect to a dedicated read replica---for example, because of secondary indexes present on a specific read replica---create a Cloud SQL read replica and use it instead.\n- You can't query specific users and databases associated with a read pool. Since Cloud SQL Studio relies on data provided by users and databases, Cloud SQL Studio isn't supported with read pools.\n\nWhat's next\n-----------\n\n- [Create and manage read pools](/sql/docs/postgres/create-read-pool)"]]