С какими базами данных вы работали в контексте 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

Ответ 18+ 🔞

А, DevOps и базы данных — это же просто ёперный театр, честное слово. Ну, то есть, вроде бы и круто, но иногда такую пиздопроебибну разводишь, что сам от себя охуеваешь.

Короче, работал я с этим всем добром. PostgreSQL с MySQL — классика жанра. Тут главное — не накосячить, а то доверия ебать ноль будет ко всей инфраструктуре. Разворачивал их в кубере, конечно. StatefulSets — это святое, а для постгры операторы всякие, типа от Zalando, — вообще песня. Настраиваешь мастер-реплику, чтобы всё летало, бэкапы через pg_dump или WAL-G в облако гоняешь, мониторинг через Prometheus цепляешь. В общем, стандартный набор, чтобы начальство не нервничало.

MongoDB — это отдельная история, ядрёна вошь. Особенно когда речь про шардированные кластеры. Тут уже без Ansible с Terraform — просто никуда. Прописываешь всё, как в аптеке, а потом ещё и Helm-чартами в Kubernetes это всё управляешь. Волнение ебать, пока всё не поднимется и не начнёт отвечать.

Ну а Redis — вроде проще простого, но тоже подлянку может подкинуть. Использовал и как кэш, и как брокер для сообщений. Для отказоустойчивости Sentinel настраивал, в кубере тоже StatefulSet'ами раскидывал. Главное — следить, чтобы память не сожрал весь, а то будет тебе хиросима и нигерсраки на ровном месте.

А вот, смотри, реальный пример, как я автоматизировал бэкапы для постгры. Делал через CronJob в кубере, чтобы каждую ночь само всё сливало в S3. Красота же!

# 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

Выглядит вроде и несложно, но когда это впервые настраиваешь, подозрение ебать чувствуешь — а вдруг не сработает? А вдруг пароль из секрета не подтянется? Но в итоге-то работает, и даже хорошо. Главное — тесты накатить перед продакшеном, а то будет тебе, чувак, не хитрая жопа, а самая настоящая.

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