Вы просматриваете документацию для Cozystack v1.5. Документация последней версии доступна по ссылке: v1.6.

Управляемый сервис MariaDB

Управляемый сервис MariaDB предоставляет мощное и широко используемое решение для работы с реляционными базами данных. Сервис позволяет без лишних сложностей создавать кластер MariaDB с репликацией и управлять им.

Сведения о развертывании

За работу управляемого сервиса отвечает mariadb-operator, который обеспечивает эффективное управление и бесперебойную эксплуатацию.

Параметр storageClass помечен в схеме чарта как неизменяемый. Описание контракта и список компонентов, обеспечивающих его соблюдение, приведены в docs/storage-immutability.md.

Инструкции

Переключение экземпляра primary

kubectl edit mariadb <instance>

Измените:

spec:
  replication:
    primary:
      podIndex: 1

Проверьте состояние:

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

Резервное копирование и восстановление приложения MariaDB

Рекомендуется использовать сценарий Cozystack на основе BackupClass / Plan / RestoreJob со стратегией strategy.backups.cozystack.io/MariaDB, использующей штатный механизм оператора. Нумерованное пошаговое руководство по всему процессу приведено в examples/backups/mariadb. В нем рассмотрены бакет, источник, стратегия, BackupClass, Plan, разовый BackupJob, а также манифесты RestoreJob для восстановления на месте и восстановления в копию.

Блок чарта backup.* (mariadb-dump + Restic CronJob) объявлен устаревшим и поддерживается только для обратной совместимости. Существующие tenants могут продолжать использовать его без изменений. Для новых развертываний следует использовать описанный выше сценарий на основе штатного механизма оператора.

Восстановление резервной копии, созданной устаревшим механизмом на основе Restic

Найдите снимок:

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

Выполните восстановление:

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

Подробнее:

Известные проблемы

  • Репликация не завершается из-за различных ошибок

  • Репликация не завершается, если журнал binlog очищен

    Пока mariadb-operator не использует mariadbbackup для начальной загрузки узла (эта возможность еще не реализована), выполните следующие действия вручную, чтобы устранить проблему: https://github.com/mariadb-operator/mariadb-operator/issues/141#issuecomment-1804760231

  • Поврежденные индексы Иногда индексы на экземпляре primary могут быть повреждены. Их можно восстановить с экземпляра replica:

    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
    

Параметры

Общие параметры

ИмяОписаниеТипЗначение
replicasКоличество реплик MariaDB.int2
resourcesЯвная конфигурация CPU и памяти для каждой реплики MariaDB. Если параметр не задан, применяется пресет из resourcesPreset.object{}
resources.cpuCPU, доступный каждой реплике.quantity""
resources.memoryПамять (RAM), доступная каждой реплике.quantity""
resourcesPresetПресет ресурсов по умолчанию, используемый, если параметр resources не задан.stringt1.nano
sizeРазмер PVC для данных приложения.quantity10Gi
storageClassStorageClass для хранения данных.string""
externalВключить доступ извне кластера.boolfalse
versionВерсия MariaDB в формате major.minor для развертывания.stringv11.8

Параметры приложения

ИмяОписаниеТипЗначение
usersКарта конфигурации пользователей.map[string]object{}
users[name].passwordПароль пользователя.string""
users[name].maxUserConnectionsМаксимальное количество подключений.int0
databasesКарта конфигурации баз данных.map[string]object{}
databases[name].rolesРоли, назначенные пользователям.object{}
databases[name].roles.adminСписок пользователей с правами администратора.[]string[]
databases[name].roles.readonlyСписок пользователей с правами только на чтение.[]string[]

Параметры резервного копирования (УСТАРЕЛО)

ИмяОписаниеТипЗначение
backupУСТАРЕЛО: Конфигурация резервного копирования. Рекомендуется использовать сценарий на основе BackupClass / Plan из examples/backups/mariadb/.object{}
backup.enabledУСТАРЕЛО: Включение регулярного резервного копирования (по умолчанию: false).boolfalse
backup.s3RegionУСТАРЕЛО: Регион AWS S3, в котором хранятся резервные копии.stringus-east-1
backup.s3BucketУСТАРЕЛО: Бакет S3 для хранения резервных копий.strings3.example.org/mariadb-backups
backup.scheduleУСТАРЕЛО: Расписание Cron для автоматического резервного копирования.string0 2 * * *
backup.cleanupStrategyУСТАРЕЛО: Стратегия хранения и удаления старых резервных копий.string--keep-last=3 --keep-daily=3 --keep-within-weekly=1m
backup.s3AccessKeyУСТАРЕЛО: Ключ доступа для аутентификации в S3.string<your-access-key>
backup.s3SecretKeyУСТАРЕЛО: Секретный ключ для аутентификации в S3.string<your-secret-key>
backup.resticPasswordУСТАРЕЛО: Пароль для шифрования резервных копий Restic.string<password>

Примеры параметров и справочник

resources и resourcesPreset

resources задает явную конфигурацию CPU и памяти для каждой реплики. Если оставить параметр пустым, применяется пресет, указанный в resourcesPreset.

resources:
  cpu: 4000m
  memory: 4Gi

resourcesPreset задает именованную конфигурацию ресурсов CPU и памяти для каждой реплики. Этот параметр игнорируется, если задано соответствующее значение resources.

Пресеты используют принятую в облачных платформах схему именования <series>.<size>. Пять серий охватывают весь диапазон соотношений CPU и памяти (t1 1:0.5, c1 1:1, s1 1:2, u1 1:4, m1 1:8), а каждая серия содержит восемь размеров (от nano до 4xlarge). Прежние одноуровневые имена (nano, micro, small, medium, large, xlarge, 2xlarge) по-прежнему поддерживаются как устаревшие псевдонимы соответствующих типов экземпляров с соотношением 1:1.

Полная матрица размеров и сопоставление прежних имен с типами экземпляров приведены в docs/operations/resource-presets.md.

users

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

databases

databases:
  myapp1:
    roles:
      admin:
      - user1
      readonly:
      - user2
Last modified 2026-07-19: temp (52ed192)