Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

Deploy Async replication

The following table shows the source and target controller/model combinations that are currently supported:

AWS GCP Azure
AWS check
GCP check
Azure check

Deploy

Deploy two MySQL Clusters, named Rome and Lisbon:

juju add-model rome    # 1st cluster location: Rome
juju add-model lisbon  # 2nd cluster location: Lisbon

juju switch rome
juju deploy mysql-k8s db1 --trust --channel=8.0/edge --config profile=testing --config cluster-name=rome --base ubuntu@22.04

juju switch lisbon
juju deploy mysql-k8s db2 --trust --channel=8.0/edge --config profile=testing --config cluster-name=lisbon --base ubuntu@22.04

Note: Remove profile configuration for production deployments. For more information, see our documentation about Profiles.

Offer

Offer asynchronous replication on the Primary cluster (Rome):

juju switch rome
juju offer db1:replication-offer replication-offer

(Optional) Offer asynchronous replication on StandBy cluster (Lisbon), for the future:

juju switch lisbon
juju offer db2:replication-offer replication-offer

Consume

Warning: Juju unit scaling is not expected to work during the asynchronous replication setup (between integrate replication-offer and create-replication calls).

Consume asynchronous replication on planned StandBy cluster (Lisbon):

juju switch lisbon
juju consume rome.replication-offer
juju integrate replication-offer db2:replication

Once relations are established, cluster Rome will get into Blocked state, waiting for the replication to be created.

To do so, run the action create-replication on rome’s leader unit.

juju switch rome
juju run db1/leader create-replication

(Optional) Consume asynchronous replication on the current Primary (Rome), for the future:

juju switch rome
juju consume lisbon.replication-offer

Status

Run the get-cluster-status action with the cluster-set=Trueflag:

juju run -m rome db1/0 get-cluster-status cluster-set=True

Results:

status:
  clusters:
    lisbon:
      clusterrole: replica
      clustersetreplicationstatus: ok
      globalstatus: ok
    rome:
      clusterrole: primary
      globalstatus: ok
      primary: db1-0.db1-endpoints.rome.svc.cluster.local:3306
  domainname: cluster-set-bcba09a4d4feb2327fd6f8b0f4ac7a2c
  globalprimaryinstance: db1-0.db1-endpoints.rome.svc.cluster.local:3306
  primarycluster: rome
  status: healthy
  statustext: all clusters available.
success: "True"

Scaling

The two clusters works independently, this means that it’s possible to independently scaling in/out each cluster without much hassle, e.g.:

juju scale-application db1 3 -m rome

juju scale-application db2 3 -m lisbon

Last updated a month ago. Help improve this document in the forum.