SlideShare a Scribd company logo
Павел Конотопов - kakoka@gmail.com
Леонид Альбрехт - lalbrekht@gmail.com
DBA team
inCountry
хранение регулируемых данных в 62 странах мира
Идея
• Давайте создадим и
предоставим
глобальному бизнесу
инфраструктуру для
локального хранения
регулируемых данных
• Инфраструктура должна соответствовать
определенным требованиям
2
Данные
• Регулируемые законодательством данные
Персональные данные: возможность однозначно
идентифицировать человека
«… любая информация, относящаяся к прямо или косвенно
определенному или определяемому физическому лицу —
субъекту персональных данных…»
• Обработка персональных данных
совокупность действий, совершаемых с персональными данными, включая сбор, запись,
систематизацию, накопление, хранение, уточнение, изменение, извлечение, использование,
передачу, обезличивание, блокирование, удаление, уничтожение
3
Требования
• Хранить данные в странах их происхождения;
• Геораспределенная инфраструктура;
• Но при этом данные не могут пересекать границ страны происхождения;
• Соответствие промышленным стандартам безопасности: SOC, PCI DSS, HIPAA,
ISO…;
• Соответствие локальным законодательствам: ФЗ-152, GDPR,CCPA…
• Уметь интегрироваться в уже готовые системы
• Поддержка шифрования и
• Приемлемая скорость работы
• Дешево (мы стартап)
4
Продукты
•REST API
- не требует дополнительных усилий
- модифицирует данные внутри уже
существующего сервиса
•SDK
Java, PHP, Python, Node.js SDKs
Self-service
Client-side encryption
•Border proxy
5
Архитектура сервиса
Пользователь
Распределенное
приложение
REST API
InCountry
точки присутствия
Кластер БД в стране
присутствия
6
Точки присутствия
FLIGHT RECORD
GDPR
PROFILE
PAYMENT
TRANSACTION
Приложение
Your frontend web service uses
actual data in-country
Customer ID: 98765
First Name: John
Last Name: Smith
SS#: 123-45-6789
Phone: +1-415-555-1212
Your backend web
service uses redacted data
Customer ID: 98765
First Name: HashKey.fname
Last Name: HashKey.lname
SS#: HashKey.ss
Phone: HaskKey.phone
7
Инфраструктура
• Точки присутствия – 62 страны
• 30% Cloud
• 70% BARE-METAL
• Сразу забыть про K8s
• 2 дата центра в стране
• От 4 до 8 сервера на страну
• Централизованная
инфраструктура развертывания
• Централизованная
инфраструктура управления
• Безопасность
• Мониторинг
8
Инфраструктура
Nomad cluster
Consul cluster
Zabbix EFK Grafana
Jenkins
Regional HUB
EDGE
Application
Database
Backup
EDGE
Application
Database
Backup
Country of presence
DC1 DC2
Regional hub
9
Дешево-сердито vs Дорого-богато vs Голос разума
• А давайте возьмем Open Source и сделаем Enterprise
• Но есть проблема
OpenSource + DevOps = T x $$$
Limited OpenSource + Devops = $ + T x $
Non-OpenSource + DevOps = $$$ + T x $
+ =
10
Технологический стек
• Terraform/Packer/Ansible/AWX
• Consul – discovery service
• Nomad – планировщик
• Vault – хранилище секретов
• Docker – контейнеризация
• Jenkins – CI/CD
• Nginx
• PostgreSQL/Pgbouncer/Patroni
• Zabbix/ElasticSearch/Fluentd/Grafana/Kibana
• JumpCloud – LDAP
• Cisco VPN
• OpsGenie – тревоги и
предупреждение
• JFROG artifactory –
хранение docker образов
OpenSource Не OpenSource
11
● Георассредоточенность
● 2 дата центра в одной стране
● Высокая доступность
● Синхронная реплика
● Автоматический failover
● Защита от второго мастера в кластере. Fencing
12
Задачи для PostgreSQL
● PostgreSQL
● pgbounсer - пулер соединений
● Patroni - как механизм управления кластером
● HashiCorp Consul
● Хранит информацию о состоянии кластера
● Хранит текущую конфигурацию кластера
● Consul Templates
● HashiCorp Nomad
● Автоматически поднимает контейнеры при их падении
● HashiCorp Vault - хранение секретов: статические и динамические роли
13
Шестеренки
14
PostgreSQL: Деплой
Сервер БД
● PostgreSQL из коробки не имеет решения для автоматического фейловера
● Демон запущенный рядом с PostgreSQL
● Он взаимодействует с DCS
● Демон Patroni принимает решение о promotion/demotion
● Конфиг в виде YAML
● patronictl - удобный инструмент не только для DBA
15
PostgreSQL: Patroni
● Минусы
● Нельзя так просто взять и
остановить контейнер
● В некоторых “особенных” случаях
контейнер срубается в
неожиданном месте
16
● Плюсы
● Единое место для управления
контейнерами
● Декларативный подход
● Удобное выделение ресурсов
для контейнера
PostgreSQL: Nomad
update {
max_parallel = 1
min_healthy_time = "10s"
healthy_deadline = "3m"
progress_deadline = "10m"
auto_revert = false
canary = 0
}
…
resources {
cpu = ${NOMAD_RESOURCES_CPU}
memory = ${NOMAD_RESOURCES_MEM}
network {
mbits = 1
port "${NOMAD_POSTGRES_SERVICE_NAME}" {
static = “${NOMAD_POSTGRES_PORT}"
…
17
Nomad.TemplateFile
port_map {
${NOMAD_PATRONI_SERVICE_NAME} = “$
{NOMAD_PATRONI_PORT}"
}
port_map {
${NOMAD_POSTGRES_SERVICE_NAME} = “$
{NOMAD_POSTGRES_PORT}”
}
mounts = [
{
type = "bind"
source = "/etc/patroni/patroni.yml"
target =
"/home/postgres/.config/patroni/patroni.yml"
readonly = true
},
18
● Persistent Storage для файлов базы
● Облегчение образа с помощью мульти-стейдж сборки
● ~70-90 мб образ
● Как следствие ускорение доставки до региона
● Прекрасно живется, если не падает контейнер
● Практически никакого оверхеда
PostgreSQL: Docker
19
PostgreSQL: HashiCorp Vault
Vault
PostgreSQLUser/Application
● Хранит статические секреты
● Позволяет обслуживать статические роли
● Соблюдает политику обновления
паролей
● Может создавать динамические роли
● Такие роли создаются на заданное
время при запросе к Vault
● Обладают необходимыми правами
● Удаляются после истечения срока
жизни
1. GET Creds 2. CREATE ROLE
3. SEND Creds
4. Login
20
● Слоты включены по умолчанию. Но не
нужно забывать про wal_keep_segments
● Особенности синхронной репликации:
● Узкое место - сеть
● synchronous mode
● maximum_lag_on_failover: 1048576 (1M)
PostgreSQL: Репликация
21
● pg_probackup
● Валидация
● Логирование и мониторинг
● Индивидуальные политики хранения для клиентов
● Особенности двух DC:
● Двойной WAL архив
● Двойной бекап архив
PostgreSQL: Резервное копирование
22
PostgreSQL: Резервное копирование
DC1
DB Master
Backup
DC2
DB StandBy
Backup
WAL push
WAL
Archive
Backup
storage
WAL
Archive
Backup
storage
Backup Fetch
23
• По умолчанию реплика создается с помощью утилиты pg_basebackup
• Это поведение можно переопределить параметром ‘create_replica_methods’
postgresql:
create_replica_methods:
- probackup
- basebackup
probackup:
command: "ssh dbbackup@192.168.0.250 ‘bash /var/backup/pg_restore.sh'"
no_params: True
basebackup:
max-rate: '100M'
PostgreSQL: Резервное копирование
24
● Возможность восстановиться из бекапа на любую точку по:
● Времени
● Id транзакции (xid)
● LSN транзакционной записи в журнале
● Редкое явление при синхронной реплике, но подготовиться надо:
bootstrap:
method: probackup
probackup:
command: ssh dbbackup@backup 'bash /var/backup/pg_restore.sh'
keep_existing_recovery_conf: false
recovery_conf:
recovery_target_timeline: latest
restore_command: pg_probackup archive-get -B /var/backup --instance db-mt --remote-user=dbbackup --wal-file-path %p --
wal-file-name %f —remote-host=255.255.255.255
PostgreSQL: восстановление кластера
25
● Docker образ для минимального запуска
● Скрипт восстановления из бекапа
● Минимальный postgresql.conf для старта
● Проверяем успешность запуска
● docker exec pgvalid pg_dump -h localhost -U postgres > /dev/null
● Служебная таблица для сравнения данных до и после бекапа
● amcheck
● CREATE EXTENSION amcheck
● pg_probackup checkdb —amcheck —heapallindexed
● Логируем и мониторим каждое действие и его (не)успешность
PostgreSQL: Валидация
● Все что связано с Consul-ом:
● Сетевые проблемы в одном из DC
● Недоступен из обоих DC
● Проблемы с репликацией и HA. Частые переключения при перебоях в сети
● Неожиданный рестарт контейнера
Troubleshooting
Troubleshooting: Расстояния
27
Troubleshooting: Аудит
• Personally identifiable information в логах
• Pgaudit - не хватает
• Собственный API – хранимые процедуры
• Ограничение доступа
• Даем права только для тех, кому это необходимо
• Выбираем датацентры которые сертифицированы
(PCI DSS)
Команда проекта
• Architecture team
• Developer team
• DevOps
• CloudOps/DevOps
• SRE
• Monitoring Team
• DBA Team
• Security Team
• Application Security team
• QA and Performance testing team
• NOC, SOC
Всё. Осталось вкрутить лампочку.
29
Роль DBA
• Роль DBA
• Немного Архитектор
• Немного DevOps
• Немного SecOps
• Немного Monitoring
• Немного QA&Perf
• Немного Developer
• Linux Administrator
30
inCountry team

More Related Content

PDF
Реализация восстановления после аварий / Сергей Бурладян (Avito)
PPTX
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
PPTX
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
PPTX
SOA: строим свой service mesh / Иван Круглов (Booking.com)
PDF
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
PPTX
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
PDF
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Чем заняться вечером, если я знаю сколько будет ++i + ++i / Андрей Бородин (Y...
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
"Успеть за 100 миллисекунд: контекстная реклама на Sphinx" Дмитрий Хасанов (...
Современная операционная система: что надо знать разработчику / Александр Кри...
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»

What's hot (20)

PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
PDF
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
PDF
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
PDF
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
PDF
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
PDF
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PPTX
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
PDF
pgday17. How shared memory works in modern PostgreSQL
PPTX
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
PDF
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
PDF
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
PPTX
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
PDF
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
PPTX
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Последние новости постгреса с PGCon / О.Бартунов, А.Коротков, Ф.Сигаев (Postg...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Практика применения Pinba в Badoo / Денис Карасик (Badoo)
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Оптимизация работы с данными в мобильных приложениях / Святослав Иванов, Артё...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
pgday17. How shared memory works in modern PostgreSQL
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Chronicle Map — key-value хранилище для трейдинга на Java / Левентов Роман (C...
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
Ad

Similar to Building the Enterprise infrastructure with PostgreSQL as the basis for storing personal data (20)

PDF
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
PDF
pgconf.ru 2015 avito postgresql
PDF
От Make к Ansible
PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
PDF
Другая виртуализация
PDF
Introduction in Node.js (in russian)
PDF
Истинный DevOps. Секрет 42.
PPTX
Введение в Docker
PPT
Easy authcache 2 кэширование для pro. Родионов Игорь
PPT
Easy authcache 2 кеширование для pro родионов игорь
PDF
Леонид Васильев "Python в инфраструктуре поиска"
PPTX
GRANIT — Global Russian Advanced Network Initiative
PDF
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
PPTX
Hosting for forbes.ru_
PPTX
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
PPT
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
PPT
Git in Sky presentation @ HighLoad++ 2013
PDF
DevOps или исскуство ухода за Интернет-проектом
PDF
Linuxvirt seminar-csc-2015
PDF
Симаков Алексей - Системы управления кластерами
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
pgconf.ru 2015 avito postgresql
От Make к Ansible
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Другая виртуализация
Introduction in Node.js (in russian)
Истинный DevOps. Секрет 42.
Введение в Docker
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2 кеширование для pro родионов игорь
Леонид Васильев "Python в инфраструктуре поиска"
GRANIT — Global Russian Advanced Network Initiative
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Hosting for forbes.ru_
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
Git in Sky presentation @ HighLoad++ 2013
DevOps или исскуство ухода за Интернет-проектом
Linuxvirt seminar-csc-2015
Симаков Алексей - Системы управления кластерами
Ad

Building the Enterprise infrastructure with PostgreSQL as the basis for storing personal data

  • 1. Павел Конотопов - [email protected] Леонид Альбрехт - [email protected] DBA team inCountry хранение регулируемых данных в 62 странах мира
  • 2. Идея • Давайте создадим и предоставим глобальному бизнесу инфраструктуру для локального хранения регулируемых данных • Инфраструктура должна соответствовать определенным требованиям 2
  • 3. Данные • Регулируемые законодательством данные Персональные данные: возможность однозначно идентифицировать человека «… любая информация, относящаяся к прямо или косвенно определенному или определяемому физическому лицу — субъекту персональных данных…» • Обработка персональных данных совокупность действий, совершаемых с персональными данными, включая сбор, запись, систематизацию, накопление, хранение, уточнение, изменение, извлечение, использование, передачу, обезличивание, блокирование, удаление, уничтожение 3
  • 4. Требования • Хранить данные в странах их происхождения; • Геораспределенная инфраструктура; • Но при этом данные не могут пересекать границ страны происхождения; • Соответствие промышленным стандартам безопасности: SOC, PCI DSS, HIPAA, ISO…; • Соответствие локальным законодательствам: ФЗ-152, GDPR,CCPA… • Уметь интегрироваться в уже готовые системы • Поддержка шифрования и • Приемлемая скорость работы • Дешево (мы стартап) 4
  • 5. Продукты •REST API - не требует дополнительных усилий - модифицирует данные внутри уже существующего сервиса •SDK Java, PHP, Python, Node.js SDKs Self-service Client-side encryption •Border proxy 5
  • 7. Точки присутствия FLIGHT RECORD GDPR PROFILE PAYMENT TRANSACTION Приложение Your frontend web service uses actual data in-country Customer ID: 98765 First Name: John Last Name: Smith SS#: 123-45-6789 Phone: +1-415-555-1212 Your backend web service uses redacted data Customer ID: 98765 First Name: HashKey.fname Last Name: HashKey.lname SS#: HashKey.ss Phone: HaskKey.phone 7
  • 8. Инфраструктура • Точки присутствия – 62 страны • 30% Cloud • 70% BARE-METAL • Сразу забыть про K8s • 2 дата центра в стране • От 4 до 8 сервера на страну • Централизованная инфраструктура развертывания • Централизованная инфраструктура управления • Безопасность • Мониторинг 8
  • 9. Инфраструктура Nomad cluster Consul cluster Zabbix EFK Grafana Jenkins Regional HUB EDGE Application Database Backup EDGE Application Database Backup Country of presence DC1 DC2 Regional hub 9
  • 10. Дешево-сердито vs Дорого-богато vs Голос разума • А давайте возьмем Open Source и сделаем Enterprise • Но есть проблема OpenSource + DevOps = T x $$$ Limited OpenSource + Devops = $ + T x $ Non-OpenSource + DevOps = $$$ + T x $ + = 10
  • 11. Технологический стек • Terraform/Packer/Ansible/AWX • Consul – discovery service • Nomad – планировщик • Vault – хранилище секретов • Docker – контейнеризация • Jenkins – CI/CD • Nginx • PostgreSQL/Pgbouncer/Patroni • Zabbix/ElasticSearch/Fluentd/Grafana/Kibana • JumpCloud – LDAP • Cisco VPN • OpsGenie – тревоги и предупреждение • JFROG artifactory – хранение docker образов OpenSource Не OpenSource 11
  • 12. ● Георассредоточенность ● 2 дата центра в одной стране ● Высокая доступность ● Синхронная реплика ● Автоматический failover ● Защита от второго мастера в кластере. Fencing 12 Задачи для PostgreSQL
  • 13. ● PostgreSQL ● pgbounсer - пулер соединений ● Patroni - как механизм управления кластером ● HashiCorp Consul ● Хранит информацию о состоянии кластера ● Хранит текущую конфигурацию кластера ● Consul Templates ● HashiCorp Nomad ● Автоматически поднимает контейнеры при их падении ● HashiCorp Vault - хранение секретов: статические и динамические роли 13 Шестеренки
  • 15. ● PostgreSQL из коробки не имеет решения для автоматического фейловера ● Демон запущенный рядом с PostgreSQL ● Он взаимодействует с DCS ● Демон Patroni принимает решение о promotion/demotion ● Конфиг в виде YAML ● patronictl - удобный инструмент не только для DBA 15 PostgreSQL: Patroni
  • 16. ● Минусы ● Нельзя так просто взять и остановить контейнер ● В некоторых “особенных” случаях контейнер срубается в неожиданном месте 16 ● Плюсы ● Единое место для управления контейнерами ● Декларативный подход ● Удобное выделение ресурсов для контейнера PostgreSQL: Nomad
  • 17. update { max_parallel = 1 min_healthy_time = "10s" healthy_deadline = "3m" progress_deadline = "10m" auto_revert = false canary = 0 } … resources { cpu = ${NOMAD_RESOURCES_CPU} memory = ${NOMAD_RESOURCES_MEM} network { mbits = 1 port "${NOMAD_POSTGRES_SERVICE_NAME}" { static = “${NOMAD_POSTGRES_PORT}" … 17 Nomad.TemplateFile port_map { ${NOMAD_PATRONI_SERVICE_NAME} = “$ {NOMAD_PATRONI_PORT}" } port_map { ${NOMAD_POSTGRES_SERVICE_NAME} = “$ {NOMAD_POSTGRES_PORT}” } mounts = [ { type = "bind" source = "/etc/patroni/patroni.yml" target = "/home/postgres/.config/patroni/patroni.yml" readonly = true },
  • 18. 18 ● Persistent Storage для файлов базы ● Облегчение образа с помощью мульти-стейдж сборки ● ~70-90 мб образ ● Как следствие ускорение доставки до региона ● Прекрасно живется, если не падает контейнер ● Практически никакого оверхеда PostgreSQL: Docker
  • 19. 19 PostgreSQL: HashiCorp Vault Vault PostgreSQLUser/Application ● Хранит статические секреты ● Позволяет обслуживать статические роли ● Соблюдает политику обновления паролей ● Может создавать динамические роли ● Такие роли создаются на заданное время при запросе к Vault ● Обладают необходимыми правами ● Удаляются после истечения срока жизни 1. GET Creds 2. CREATE ROLE 3. SEND Creds 4. Login
  • 20. 20 ● Слоты включены по умолчанию. Но не нужно забывать про wal_keep_segments ● Особенности синхронной репликации: ● Узкое место - сеть ● synchronous mode ● maximum_lag_on_failover: 1048576 (1M) PostgreSQL: Репликация
  • 21. 21 ● pg_probackup ● Валидация ● Логирование и мониторинг ● Индивидуальные политики хранения для клиентов ● Особенности двух DC: ● Двойной WAL архив ● Двойной бекап архив PostgreSQL: Резервное копирование
  • 22. 22 PostgreSQL: Резервное копирование DC1 DB Master Backup DC2 DB StandBy Backup WAL push WAL Archive Backup storage WAL Archive Backup storage Backup Fetch
  • 23. 23 • По умолчанию реплика создается с помощью утилиты pg_basebackup • Это поведение можно переопределить параметром ‘create_replica_methods’ postgresql: create_replica_methods: - probackup - basebackup probackup: command: "ssh [email protected] ‘bash /var/backup/pg_restore.sh'" no_params: True basebackup: max-rate: '100M' PostgreSQL: Резервное копирование
  • 24. 24 ● Возможность восстановиться из бекапа на любую точку по: ● Времени ● Id транзакции (xid) ● LSN транзакционной записи в журнале ● Редкое явление при синхронной реплике, но подготовиться надо: bootstrap: method: probackup probackup: command: ssh dbbackup@backup 'bash /var/backup/pg_restore.sh' keep_existing_recovery_conf: false recovery_conf: recovery_target_timeline: latest restore_command: pg_probackup archive-get -B /var/backup --instance db-mt --remote-user=dbbackup --wal-file-path %p -- wal-file-name %f —remote-host=255.255.255.255 PostgreSQL: восстановление кластера
  • 25. 25 ● Docker образ для минимального запуска ● Скрипт восстановления из бекапа ● Минимальный postgresql.conf для старта ● Проверяем успешность запуска ● docker exec pgvalid pg_dump -h localhost -U postgres > /dev/null ● Служебная таблица для сравнения данных до и после бекапа ● amcheck ● CREATE EXTENSION amcheck ● pg_probackup checkdb —amcheck —heapallindexed ● Логируем и мониторим каждое действие и его (не)успешность PostgreSQL: Валидация
  • 26. ● Все что связано с Consul-ом: ● Сетевые проблемы в одном из DC ● Недоступен из обоих DC ● Проблемы с репликацией и HA. Частые переключения при перебоях в сети ● Неожиданный рестарт контейнера Troubleshooting
  • 28. Troubleshooting: Аудит • Personally identifiable information в логах • Pgaudit - не хватает • Собственный API – хранимые процедуры • Ограничение доступа • Даем права только для тех, кому это необходимо • Выбираем датацентры которые сертифицированы (PCI DSS)
  • 29. Команда проекта • Architecture team • Developer team • DevOps • CloudOps/DevOps • SRE • Monitoring Team • DBA Team • Security Team • Application Security team • QA and Performance testing team • NOC, SOC Всё. Осталось вкрутить лампочку. 29
  • 30. Роль DBA • Роль DBA • Немного Архитектор • Немного DevOps • Немного SecOps • Немного Monitoring • Немного QA&Perf • Немного Developer • Linux Administrator 30