Charmed MySQL K8s

Channel Revision Published Runs on
8.0/stable 180 02 Sep 2024
Ubuntu 22.04
8.0/stable 181 02 Sep 2024
Ubuntu 22.04
8.0/candidate 180 26 Aug 2024
Ubuntu 22.04
8.0/candidate 181 26 Aug 2024
Ubuntu 22.04
8.0/beta 207 15 Nov 2024
Ubuntu 22.04
8.0/beta 206 15 Nov 2024
Ubuntu 22.04
8.0/edge 207 09 Oct 2024
Ubuntu 22.04
8.0/edge 206 09 Oct 2024
Ubuntu 22.04
juju deploy mysql-k8s --channel 8.0/stable
Show information

Platform:

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