Налаштування керованих баз даних AWS RDS / Aurora

Керовані бази даних AWS RDS і Aurora позбавляють від рутини, але їхня стандартна конфігурація далека від оптимальної. Ми налаштовуємо інфраструктуру під ключ — від вибору архітектури до тонкого налаштування параметрів, забезпечуючи стабільну роботу та масштабованість. Наша команда бере на себе весь цикл, щоб ви забули про «гальма» та раптові відмови.
Часті запитання

Налаштування керованих баз даних AWS RDS / Aurora

Ми налаштовуємо RDS та Aurora так, щоб вони працювали на вас, а не ви на них. RDS і Aurora беруть на себе операційне навантаження: патчінг ОС, бекапи, failover, реплікацію. Але «керована» не означає «налаштовується сама». Дефолтна конфігурація RDS — для сумісності, не для продуктивності. Без правильного налаштування Parameter Groups, правильного вибору типу інстансу та архітектури Multi-AZ ви отримаєте керовану базу з некерованими проблемами. Ми гарантуємо, що після нашого налаштування ви забудете про «гальма» та раптові відмови.

RDS vs Aurora: коли що

RDS — коли потрібна конкретна версія PostgreSQL або MySQL з передбачуваною поведінкою. Простіше в розумінні, менше сюрпризів. Сховище зростає з кроком 5-10 GB через autoscaling.

Aurora PostgreSQL / MySQL — кластерна архітектура з розділеним сховищем. Сховище автоматично масштабується до 128 TB, failover відбувається за 30 секунд (RDS — 1–2 хвилини). Aurora Global Database для cross-region реплікації з RPO < 1 секунди.

Але Aurora дорожча на 20–30% при порівнянних інстансах. Для невеликих баз або dev-середовищ — звичайний RDS. Для production з вимогами до availability та масштабування reads — Aurora.

Що обов'язково змінити в Parameter Groups?

Дефолтні parameter groups не можна змінити — потрібна кастомна копія. Для PostgreSQL критичні параметри:

shared_buffers = {DBInstanceClassMemory/4} # 25% RAM
work_mem = 16384 # 16 MB (обережно: множиться на max_connections)
maintenance_work_mem = 524288 # 512 MB для autovacuum
effective_cache_size = {DBInstanceClassMemory*3/4} # 75% RAM
wal_buffers = 16384 # 16 MB
checkpoint_completion_target = 0.9
max_connections = 200 # залежить від інстансу
log_min_duration_statement = 1000 # логувати запити > 1с
log_lock_waits = 1
auto_explain.log_min_duration = 3000 # explain для довгих запитів

work_mem — особливо обережно. Якщо 200 connections кожна виконує sort/hash join, реальне споживання пам'яті = work_mem × connections × операцій на запит. Для m5.xlarge (16 GB) при 200 з'єднаннях — work_mem > 32 MB вже ризиковано.

Multi-AZ та Read Replicas: як налаштувати?

Multi-AZ — синхронна реплікація в standby інстанс в іншій Availability Zone. При збої primary — автоматичний failover, DNS оновлюється на standby. Це про availability, не про read performance.

Read Replicas — асинхронна реплікація, до 5 реплік для RDS, до 15 для Aurora. Для розвантаження primary від read-heavy запитів (аналітика, репортинг). Replica lag моніторимо через ReplicaLag метрику в CloudWatch.

Часта помилка — направляти аналітичні запити прямо на primary, не використовуючи read replicas. Один важкий SELECT COUNT(*) FROM orders WHERE ... з full table scan може деградувати OLTP продуктивність на хвилини.

В Aurora — Reader Endpoint автоматично балансує між усіма read replicas. Писати в Writer Endpoint, читати в Reader Endpoint — базове правило.

Бекапи та Point-in-Time Recovery

Automated backups з retention 7–35 днів — обов'язково. Це дає Point-in-Time Recovery: відновлення на будь-який момент часу в рамках retention period з точністю до 5 хвилин.

Snapshot перед значними змінами (міграція схеми, оновлення major версії) — не опція, а обов'язкова процедура. Snapshot робиться без даунтайму.

Для Aurora — Backtrack: можливість «перемотати» кластер на кілька годин назад без відновлення з бекапу. Швидше PITR, але обмежене вікно (до 72 годин).

resource "aws_rds_cluster" "aurora" {
  cluster_identifier = "myapp-aurora"
  engine = "aurora-postgresql"
  engine_version = "15.4"
  database_name = "myapp"
  master_username = "myapp_admin"
  master_password = var.db_password # з Secrets Manager
  backup_retention_period = 14
  preferred_backup_window = "03:00-04:00" # UTC, коли навантаження мінімальне
  backtrack_window = 259200 # 72 години
  db_subnet_group_name = aws_db_subnet_group.main.name
  vpc_security_group_ids = [aws_security_group.rds.id]
  deletion_protection = true # захист від випадкового видалення
  enabled_cloudwatch_logs_exports = ["postgresql"]
}

Secrets Manager інтеграція

Пароль бази даних не повинен зберігатися в Terraform state або в змінних середовища додатку. Правильний підхід:

  1. RDS генерує майстер-пароль через Secrets Manager (опція manage_master_user_password в Terraform провайдері)
  2. Секрет ротується автоматично за розкладом
  3. Додаток отримує credentials через Secrets Manager API або через RDS Proxy

RDS Proxy — рекомендовано для Lambda та інших serverless/висококонкурентних середовищ. Proxy пулить з'єднання до RDS, що критично: Lambda при 1000 одночасних викликів спробує відкрити 1000 з'єднань до RDS — база впаде від max_connections exceeded. Proxy тримає обмежений пул та мультиплексує з'єднання.

Моніторинг: що дивимося

Enhanced Monitoring (1-секундна деталізація) та Performance Insights — вмикаємо для production. Performance Insights показує топ SQL запитів за навантаженням, wait events, з'єднання — незамінно для налагодження продуктивності.

CloudWatch метрики першого пріоритету:

Метрика Поріг алерту
CPUUtilization > 80% протягом 5 хвилин
FreeStorageSpace < 20% від allocated
DatabaseConnections > 80% від max_connections
ReadLatency / WriteLatency > 20ms (залежить від задачі)
ReplicaLag > 30 секунд

Що входить в роботу

  • Аудит поточної конфігурації RDS/Aurora
  • Налаштування кастомних Parameter Groups під навантаження
  • Конфігурація Multi-AZ та Read Replicas
  • Налаштування автоматичних бекапів та PITR
  • Інтеграція з Secrets Manager та RDS Proxy (опціонально)
  • Налаштування моніторингу та алертів в CloudWatch
  • Документація з архітектури та runbook
  • Навчання вашої команди базовим операціям

Терміни та вартість

Базовий інстанс RDS / Aurora з Multi-AZ, Parameter Group, бекапами та CloudWatch моніторингом — 1–2 дні. Повне налаштування з RDS Proxy, Secrets Manager ротацією, Read Replicas, Performance Insights та Terraform-модулем — 3–5 днів. Вартість проєкту — від $500–1.5kів залежно від складності. За 5 років роботи ми реалізували понад 50 успішних проєктів з DevOps. Офіційна документація AWS RDS. Отримайте консультацію — пишіть, ми оцінимо ваш проєкт і запропонуємо оптимальне рішення під ключ.

Приклад типового запитуКлієнт: високонавантажений SaaS на PostgreSQL. Проблема: часті тайм-аути через неоптимальні параметри. Рішення: налаштування Parameter Groups, додавання Read Replicas, RDS Proxy. Результат: зниження latency на 40%, усунення тайм-аутів.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139