С какими базами данных вы работали в контексте DevOps?

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

Ответ

В рамках DevOps-практик я работал с управлением, развертыванием и поддержкой различных СУБД:

  • PostgreSQL/MySQL: Автоматизировал развертывание в Kubernetes с помощью StatefulSets или операторов (например, Zalando's Postgres Operator). Настраивал мастер-реплику репликацию, управлял бэкапами (через pg_dump, pg_basebackup, WAL-G) и мониторингом (Prometheus exporters, pgBadger).
  • MongoDB: Разворачивал и поддерживал шардированные кластеры. Использовал Ansible/Terraform для provisioning и Helm для управления в k8s.
  • Redis: Использовал как кэш и брокер сообщений (через Redis Streams). Настраивал Redis Sentinel для отказоустойчивости и развертывал в виде StatefulSet.

Пример: Настройка автоматического бэкапа PostgreSQL в S3 с помощью CronJob в Kubernetes:

# cronjob-backup.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: postgres-backup
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: postgres:14
            command:
            - /bin/sh
            - -c
            - |
              pg_dump -h $PG_HOST -U $PG_USER $PG_DB | gzip | aws s3 cp - s3://my-backup-bucket/backup-$(date +%Y%m%d).sql.gz
            env:
            - name: PG_HOST
              value: "postgres-primary"
            - name: PG_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-secret
                  key: username
            - name: PG_DB
              value: "appdb"
          restartPolicy: OnFailure

Видео-ответы