Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Потоковая репликация в PostgreSQL (Теория)


 

Потоковая репликация в PostgreSQL (Теория)

 

В продолжение к практической статье теперь немного теории

Практическая статья:

http://snakeproject.ru/rubric/article.php?art=freebsd_postgresql_master_slave_replication_19.06.18

 

REDO журнал в PostgreSQL:

REDO журнал - история "последних" изменений

Изменения записываются в REDO журнал

REDO журнал используется:
При аварийном восстановлении
При резервном копировании
При репликации

REDO журнал имеет имя - WAL (Write Ahead Log)

WAL гарантирует: информация об изменениях будет зафиксирована ДО реальных изменений

Принцип работы:
LSN (log sequence number) – кладет записи внутрь WAL
Страницы маркируются LSN
Перед записью страницы на диск проверяется, что LSN уже записан в журнал

 

WAL Receiver процесс:

Определяет, с какого места начать прием WAL

Подключяется к MASTER и отправляет LSN отметки

Принимает WAL и записывает на диск

Обновляет особую переменную в shared memory

Отправляет статистику на мастер

 

Startup процесс:

Использует особую переменную, чтобы воспроизвести WAL до указанного места

 

WAL Sender процесс:

Для каждого SLAVE создается backend-процесс

Запускает репликацию

Отправляет WAL журнал SLAVE

Спит, если нет новых журналов

 

Схема работы репликации:

Реплика -> Мастер
Проверка источника XLOG
Запуск WAL receiver
Вычисление стартовой позиции
Подключение к мастеру, отправка  
позиции

Мастер -> Реплика
Запуск WAL sender и получение позиции
Проверка наличия журнала
Отправка журнала

Реплика -> Мастер
Запись журнала на диск
Обновление "отметки"
Отправка статистики
Воспроизведение журнала

Мастер -> Реплика
Обновление статистики

 

Мониторинг и поиск проблем:
pg_stat_replication — логи репликации
pg_stat_activity — запросы на реплике
pg_current_xlog_location(), pg_xlog_location_diff()

 

Варианты бэкапов:
pg_basebackup + WAL архив
Утилита pgBarman или pgBackRest

 

 
 

Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект