Managed MariaDB Service

The Managed MariaDB Service offers a powerful and widely used relational database solution. This service allows you to create and manage a replicated MariaDB cluster seamlessly.

Deployment Details

This managed service is controlled by mariadb-operator, ensuring efficient management and seamless operation.

HowTos

How to switch master/slave replica

kubectl edit mariadb <instnace>

update:

spec:
  replication:
    primary:
      podIndex: 1

check status:

NAME        READY   STATUS    PRIMARY POD   AGE
<instance>  True    Running   app-db1-1     41d

How to restore backup:

find snapshot:

restic -r s3:s3.example.org/mariadb-backups/database_name snapshots

restore:

restic -r s3:s3.example.org/mariadb-backups/database_name restore latest --target /tmp/

more details:

Known issues

  • Replication can’t not be finished with various errors

  • Replication can’t be finised in case if binlog purged Until mariadbbackup is not used to bootstrap a node by mariadb-operator (this feature is not inmplemented yet), follow these manual steps to fix it: https://github.com/mariadb-operator/mariadb-operator/issues/141#issuecomment-1804760231

  • Corrupted indicies Sometimes some indecies can be corrupted on master replica, you can recover them from slave:

    mysqldump -h <slave> -P 3306 -u<user> -p<password> --column-statistics=0 <database> <table> ~/tmp/fix-table.sql
    mysql -h <master> -P 3306 -u<user> -p<password> <database> < ~/tmp/fix-table.sql
    

Parameters

Common parameters

NameDescriptionValue
externalEnable external access from outside the clusterfalse
sizePersistent Volume size10Gi
replicasNumber of MariaDB replicas2
storageClassStorageClass used to store the data""

Configuration parameters

NameDescriptionValue
usersUsers configuration{}
databasesDatabases configuration{}

Backup parameters

NameDescriptionValue
backup.enabledEnable periodic backupsfalse
backup.s3RegionThe AWS S3 region where backups are storedus-east-1
backup.s3BucketThe S3 bucket used for storing backupss3.example.org/postgres-backups
backup.scheduleCron schedule for automated backups0 2 * * *
backup.cleanupStrategyThe strategy for cleaning up old backups--keep-last=3 --keep-daily=3 --keep-within-weekly=1m
backup.s3AccessKeyThe access key for S3, used for authenticationoobaiRus9pah8PhohL1ThaeTa4UVa7gu
backup.s3SecretKeyThe secret key for S3, used for authenticationju3eum4dekeich9ahM1te8waeGai0oog
backup.resticPasswordThe password for Restic backup encryptionChaXoveekoh6eigh4siesheeda2quai0
resourcesExplicit CPU and memory configuration for each MariaDB replica. When left empty, the preset defined in resourcesPreset is applied.{}
resourcesPresetDefault sizing preset used when resources is omitted. Allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge.nano

Parameter examples and reference

resources and resourcesPreset

resources sets explicit CPU and memory configurations for each replica. When left empty, the preset defined in resourcesPreset is applied.

resources:
  cpu: 4000m
  memory: 4Gi

resourcesPreset sets named CPU and memory configurations for each replica. This setting is ignored if the corresponding resources value is set.

Preset nameCPUmemory
nano100m128Mi
micro250m256Mi
small500m512Mi
medium500m1Gi
large12Gi
xlarge24Gi
2xlarge48Gi

users

users:
  user1:
    maxUserConnections: 1000
    password: hackme
  user2:
    maxUserConnections: 1000
    password: hackme

databases

databases:
  myapp1:
    roles:
      admin:
      - user1
      readonly:
      - user2