все_что_должен_знать_devops_про_postgresql

Все что должен знать DevOps про PostgreSQL

Реклама

  • Всем привет! Рады Вам представить цикл вебинаров на тему “Что должен знать Ops из области Dev”. Начнем с задач DBA, которые приходится решать DevOps инженеру на примере самой популярной СУБД PostgreSQL

Техническое задание

  • Осуществить развертывание СУБД PostgreSQL в Bare metal, Docker и Kubernetes
  • Использовать команды управления и SQL для создания и анализа структур, данных и управление правами
  • Использовать операторы PostgreSQL для автоматизации развертывания приложений в Kubernetes
  • Использовать пулер соединений PgBouncer для оптимизации подключений к PostgreSQL
  • Настроить мониторинг СУБД PostgreSQL
  • Настроить резервное копирование СУБД PostgreSQL

Запись вебинара

Методическая подготовка

Шаг 1. Что у нас есть для начала

Шаг 2. Знакомимся с PostgreSQL

server:~/keycloak-22.0.5# KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD='strongpassword' KC_DB=postgres KC_DB_URL=jdbc:postgresql://gate:5432/keycloak KC_DB_USERNAME=keycloak KC_DB_PASSWORD='strongpassword' bin/kc.sh start-dev

Шаг 3. Использование PostgreSQL с Docker

  • !!! Обсудить и предложить сделать самостоятельно !!!
  • Развернуть сервис PostgreSQL в Docker совместно с Keycloak, через docker-compose (без ssl)

Шаг 4. Использование PostgreSQL в Kubernetes

  • Сделать резервную копию pg_dumpall,
  • Удалить PostgreSQL из кластера Kubernetes
kube1:~# kubectl delete ns my-postgres-ns

Шаг 5. Использование CloudNativePG

  • Добавить оператор CloudNativePG в кластер Kubernetes
  • Развернуть кластер PostgreSQL для приложения Keycloak
  • Установить Плагин cnpg и проверить состояние кластера
  • Развернуть и проверить работу S3 Сервис MinIO
  • Настроить CloudNativePG Backup в него, (immediate Backup проводить после появления в архиве wal файлов, проверить наличие требуемых из backup.info)

Выход из строя Primary узла

kube1# kubectl cnpg status my-pgcluster -n my-pgcluster-ns

kube1# kubectl -n my-pgcluster-ns delete pvc my-pgcluster-1

kube1# kubectl -n my-pgcluster-ns delete pod my-pgcluster-1

kube1# kubectl -n my-pgcluster-ns get pods --watch

Выход из строя всего кластера

kube1:~# time kubectl delete ns my-pgcluster-ns
real    4m11.523s

Дополнительные возможности

Вопросы?

Домашнее задание

  • Выполнить все, что решили “обсудить” на 2-м шаге
все_что_должен_знать_devops_про_postgresql.txt · Last modified: 2025/05/16 12:00 by val