С какими СУБД вы работали в контексте DevOps?

«С какими СУБД вы работали в контексте DevOps?» — вопрос из категории Базы данных, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В DevOps-практике работа с СУБД фокусируется на обеспечении их доступности, производительности, резервного копирования и безопасности в production-среде. Мой опыт включает:

Реляционные (SQL):

  • PostgreSQL: Настраивал streaming-репликацию, логическую репликацию для отдельных таблиц, управлял расширениями (например, pg_stat_statements). Использовал pg_dump/pg_restore и инструменты типа wal-g для бэкапов.
  • MySQL/MariaDB: Работал с master-slave репликацией, настройкой InnoDB, мониторингом через SHOW ENGINE INNODB STATUS и Percona Toolkit.

NoSQL и Кэши:

  • Redis: Разворачивал кластеры Redis Sentinel и Redis Cluster. Настраивал persistence (RDB/AOF), использовал как кэш и брокер сообщений (pub/sub).
  • MongoDB: Обеспечивал отказоустойчивость через replica sets, настраивал шардирование для горизонтального масштабирования.

Для мониторинга и управления использовал:

  1. Prometheus exporters: postgres_exporter, mysqld_exporter, redis_exporter для сбора метрик.
  2. Инфраструктура как код: Разворачивал инстансы БД в облаке (AWS RDS, Google Cloud SQL) с помощью Terraform.
  3. Миграции: Интегрировал Liquibase/Flyway в CI/CD пайплайны для автоматического применения изменений схемы.

Пример настройки health check для PostgreSQL в Kubernetes, который я использовал:

# readinessProbe для пода с PostgreSQL
readinessProbe:
  exec:
    command:
      - sh
      - -c
      - "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB"
  initialDelaySeconds: 10
  periodSeconds: 5

Основная задача — не просто знать СУБД, а уметь обеспечивать их стабильную работу в распределенной инфраструктуре.