Charmed PostgreSQL VM
- By Canonical Data Platform
- Databases
Channel | Revision | Published | Runs on |
---|---|---|---|
latest/stable | 345 | 09 Nov 2023 | |
latest/stable | 239 | 09 Feb 2022 | |
latest/stable | 226 | 01 Apr 2021 | |
14/stable | 430 | 28 Jun 2024 | |
14/stable | 429 | 28 Jun 2024 | |
14/candidate | 468 | 02 Sep 2024 | |
14/candidate | 467 | 02 Sep 2024 | |
14/beta | 468 | 02 Sep 2024 | |
14/beta | 467 | 02 Sep 2024 | |
14/edge | 472 | Yesterday | |
14/edge | 471 | Yesterday |
juju deploy postgresql --channel 14/edge
Deploy universal operators easily with Juju, the Universal Operator Lifecycle Manager.
Platform:
Set up clusters for cross-regional async replication
Cross-regional (or multi-server) asynchronous replication focuses on disaster recovery by distributing data across different servers.
This guide will show you the basics of initiating a cross-regional async setup using an example PostgreSQL deployment with two servers: one in Rome and one in Lisbon.
Prerequisites
- Juju
v.3.4.2+
- Make sure your machine(s) fulfill the system requirements
- See supported target/source model relationships.
Summary
Deploy
To deploy two clusters in different servers, create two juju models - one for the rome
cluster, one for the lisbon
cluster. In the example below, we use the config flag profile=testing
to limit memory usage.
juju add-model rome
juju add-model lisbon
juju switch rome # active model must correspond to cluster
juju deploy postgresql db1 --channel=14/edge/async-replication --config profile=testing --base ubuntu@22.04
juju switch lisbon
juju deploy postgresql db2 --channel=14/edge/async-replication --config profile=testing --base ubuntu@22.04
Offer
Offer asynchronous replication in one of the clusters.
juju switch rome
juju offer db1:async-primary async-primary
Consume
Consume asynchronous replication on planned Standby
cluster (Lisbon):
juju switch lisbon
juju consume rome.async-primary
juju integrate async-primary db2:async-replica
Promote or switchover a cluster
To define the primary cluster, use the promote-cluster
action.
juju run -m rome db1/leader promote-cluster
To switchover and use lisbon
as the primary instead, run
juju run -m lisbon db2/leader promote-cluster force-promotion=true
Scale a cluster
The two clusters work independently, which means that it’s possible to scale each cluster separately. The -m
flag defines the target of this action, so it can be performed within any active model.
For example:
juju add-unit db1 -n 2 -m rome
juju add-unit db2 -n 2 -m lisbon
Note: Scaling is possible before and after the asynchronous replication is established/created.