Deploy on Juju storage

Charmed MySQL uses the Juju storage abstraction to utilise data volume provided by different clouds while keeping the same UI/UX for end users.

Check Juju storage details

Charmed MySQL 8.4 supports multiple storage types, both on VM and K8s : archive, data, logs and temp.

Check the metadata.yaml to find Juju storage names and metadata:

Charmed MySQL 8.4 storage list
storage:
  archive:
    type: filesystem
    description: Persistent storage for rotated logs and other archival purposes
    location: /var/snap/charmed-mysql/common/var/lib/mysql/archive
  data:
    type: filesystem
    description: Persistent storage for MySQL data
    location: /var/snap/charmed-mysql/common/var/lib/mysql/data
  logs:
    type: filesystem
    description: Persistent storage for MySQL error logs, general query logs, slow query logs, binary logs, redo logs and undo logs
    location: /var/snap/charmed-mysql/common/var/lib/mysql/logs
  temp:
    type: filesystem
    description: Persistent storage for InnoDB temporary tablespaces
    location: /var/snap/charmed-mysql/common/var/lib/mysql/temp
containers:
  mysql:
    ...
    mounts:
      - storage: archive
        location: /var/lib/mysql/archive
      - storage: data
        location: /var/lib/mysql/data
      - storage: logs
        location: /var/lib/mysql/logs
      - storage: temp
        location: /var/lib/mysql/temp

storage:
  archive:
    type: filesystem
    description: Persistent storage for rotated logs and other archival purposes
  data:
    type: filesystem
    description: Persistent storage for MySQL data
  temp:
    type: filesystem
    description: Persistent storage for InnoDB temporary tablespaces
  logs:
    type: filesystem
    description: Persistent storage for MySQL error logs, general query logs, slow query logs, binary logs, redo logs and undo logs

Define storage size

ubuntu@my-vm:~$
juju deploy mysql --channel 8.4/edge --storage data=10G
> juju storage

Unit     Storage ID  Type        Pool    Size     Status    Message
...
mysql/0  data/1      filesystem  lxd     10 GiB   attached
ubuntu@my-vm:~$
juju deploy mysql-k8s --channel 8.4/edge --storage data=10G
> juju storage

Unit         Storage ID  Type        Pool        Size     Status    Message
...
mysql-k8s/0  data/1      filesystem  kubernetes  10 GiB   attached  Successfully provisioned volume pvc-2cad4931-...

Define storage location

Juju supports wide list of different storage pools :

> juju create-storage-pool mystoragepool lxd

> juju storage-pools | grep -E "Name|mystoragepool"
Name           Provider  Attributes
mystoragepool  lxd

> juju deploy mysql --channel 8.4/edge --storage data=5G,mystoragepool

> $ juju storage | grep -E "Unit|data"
Unit     Storage ID  Type        Pool           Size     Status    Message
mysql/0  data/1      filesystem  mystoragepool  5.0 GiB  attached
> juju create-storage-pool mystoragepool kubernetes

> juju storage-pools | grep -E "Name|mystoragepool"
Name           Provider    Attributes
mystoragepool  kubernetes

> juju deploy mysql-k8s --channel 8.4/edge --storage data=5G,mystoragepool

> $ juju storage | grep -E "Unit|data"
Unit         Storage ID  Type        Pool           Size     Status    Message
mysql-k8s/0  data/1      filesystem  mystoragepool  5.0 GiB  attached  Successfully provisioned volume pvc-d3cde32e-...