To increase read throughput and availability of your database cluster, you can create an asynchronous read pool instance of your database instance. A read pool instance provides a read-only clone of your database instance ensuring data access even if your database instance becomes unavailable.
You can define the read pool instance configuration in the database instance's manifest file. Each read pool instance requires creating a unique manifest file. You can create up to 20 read pool instances.
Each read pool instance occupies the same amount of storage as the instance it replicates.
Create an asynchronous read pool instance
To create an AlloyDB Omni asynchronous read pool instance, complete the following steps:
Create the database instance manifest to define the read pool instance type:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBInstance metadata: name: READ_POOL_INSTANCE_NAME namespace: NAMESPACE spec: instanceType: ReadPool dbcParent: name: DB_CLUSTER_NAME
Replace the following:
READ_POOL_INSTANCE_NAME
: a name for this resource—for example,read-pool-instance-1
.NAMESPACE
: the namespace of the database cluster.DB_CLUSTER_NAME
: the name of the database cluster to which the instance belongs.
Apply the manifest.
Verify instance status
To verify the availability of the read pool instance, run the following command:
kubectl get dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME -o jsonpath='{.status.conditions[?(@.type=="Available")].status}'
The response true
indicates that the read pool instance can serve queries,
but might not be replicating data from your database instance.
To verify the streaming status of the read pool instance, run the following command:
kubectl get dbinstance -n NAMESPACE READ_POOL_INSTANCE_NAME -o jsonpath='{.status.conditions[?(@.type=="Streaming")].status}'
The response true
indicates that the read pool instance is connected to your
database instance and actively streaming changes.
When your database instance is unreachable, the read pool instance continues to
serve the queries. In this case, the availability status will be true
while
the streaming status will be false
.
After you set up the read pool instance, all inserts, updates, and deletions to rows in your instance become readable on your read pool instance.