Google Cloud has updated its fully managed distributed SQL database service Spanner with an option to maintain dual-region configuration, which it claims will make it easier for enterprises to comply with data residency norms across countries with more limited cloud support, and at the same time ensure availability.
Before Google Cloud introduced the update, enterprises operating in countries with only two of the company’s cloud regions were restricted to using regional Spanner configurations as multi-region configurations for the database service required three regions, resulting in one region being outside the country and non-compliance from a data residency standpoint, the cloud services provider said.
The dual-region configuration option allows enterprises operating in countries with just two cloud regions of the company to comply with data residency norms as well as maintain high availability, Google said.
This new option, according to IDC’s research director Daphne Cheung, will offer enterprises more assurances and options in terms of supporting data residency norms.
However, Cheung pointed out that the addition of the dual-region configuration option is not an indication that data residency norms were not being complied with.
Rival cloud service providers such as AWS, Oracle, and Microsoft also offer multi-region setup for their database-as-a-service offerings. A few examples include Amazon Aurora, Amazon DynamoDB, and Oracle NoSQL database.
Other database vendors, such as Cockroach Labs and DataStax, also offer similar capabilities.
Google Cloud’s new dual-region configurations are now available in Australia, Germany, India, and Japan.
How does Spanner’s dual-region configuration work?
As part of the dual-region configuration setup for Spanner, Google Cloud has three replica databases each across the two regions (a total of six database replicas) operating in a country for an individual enterprise, Nitin Sagar, senior product manager at Google, explained in a blog post about dual-region Spanner configurations.
Each region runs two read/write replicas and a witness replica to maintain availability, Sagar explained, adding that when a zonal outage occurs affecting any one replica in a region, Spanner, due to the dual-region configuration setup, would be able to maintain availability as at least two replicas would be functional.
However, the product manager pointed out that in the event that an entire region faces outage and enterprises are in dual-region configuration setup for Spanner, the databases will lose availability.
“To recover availability, databases must switch to single-region mode, consisting of three replicas in a single region,” Sagar wrote, adding that Google continuously monitors for outages and upon detection automatically fails over and reconfigures the dual-region setup to a single-region setup to ensure availability.
Alternatively, enterprises can detect outages across regions via the health dashboard.
“When your availability or latency threshold breach alarms are triggered, you can manually trigger a failover to the single-region mode using the newly available ChangeQuorum API in the Google Cloud CLI,” Sagar explained.
The product manager also pointed out that if an enterprise performs a manual failover, then a manual failback to dual-region configuration must be performed, otherwise Spanner will continue to be in single-region mode, which has relatively lower availability.
New Spanner instances, according to the company, can be set up in dual-region configuration mode via the Google Cloud Console, the company said.
Old or existing Spanner instances, on the other hand, can be moved into a dual-region configuration setup using the database service’s self-serve instance move service.
“Moving your instance doesn’t incur any downtime, and Spanner continues to provide the usual transaction guarantees, including strong consistency, during the move,” Sagar wrote.
Earlier in February, the company had added vector support to Spanner and other database offerings, such as CloudSQL, Firestore, Bigtable, and Memorystore for Redis.