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

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

Ответ

В контексте DevOps я работал с базами данных на нескольких уровнях:

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

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

# CronJob для бэкапа
apiVersion: batch/v1
kind: CronJob
metadata:
  name: postgres-backup
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: postgres:13
            command:
              - /bin/sh
              - -c
              - |
                pg_dump -h $PG_HOST -U $PG_USER $PG_DB | gzip > /backup/dump.sql.gz
                aws s3 cp /backup/dump.sql.gz s3://my-backup-bucket/
            env:
            - name: PG_HOST
              value: "postgres-primary"
            - name: PG_USER
              valueFrom:
                secretKeyRef:
                  name: postgres-secret
                  key: username
            - name: PG_DB
              value: "myapp"
          restartPolicy: OnFailure