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

В этом документе предоставляется пошаговая инструкция по настройке потоковой репликации между двумя серверами PostgreSQL. Потоковая репликация — это лишь один из множества методов поддержки оперативного режима базы данных PostgreSQL, но другие методы в этом документе не рассматриваются.

Примечание. В этом документе не описывается процесс установки PostgreSQL или Acronis Access, а только настройка потоковой репликации.

Потоковая репликация

Процесс потоковой репликации основан на сегменте журнала опережающей записи (WAL). WAL является стандартным методом обеспечения целостности данных. Основной принцип WAL состоит в том, что изменения в файлах данных (где расположены таблицы и индексы) применяются только после фиксации этих изменений в журнале, т. е. после того, как записи журнала, описывающие изменения, сбрасываются в постоянное хранилище. Если следовать этой процедуре, то не потребуется сбрасывать страницы данных на диск после каждой фиксации транзакции, поскольку в случае аварии можно будет восстановить базу данных с помощью журнала, т. е. все изменения, не примененные к страницам данных, можно будет сделать на основе записей журнала.

Использование WAL значительно сокращает количество операций записи на диск, поскольку для гарантированной фиксации транзакций на диск достаточно сбрасывать только журнал, а не каждый измененный транзакцией файл данных. Файл журнала записывается последовательно, поэтому стоимость синхронизации журнала намного меньше стоимости сохранения страниц данных на диск.

WAL также обеспечивает поддержку резервного копирования в онлайн-хранилище, восстановления на определенный момент времени и репликации. Потоковая репликация представляет собой непрерывную отправку записей WAL через соединение TCP/IP между основным и резервным серверами по протоколу walsender через подключения репликации. Хотя потоковая репликация может быть синхронной, учитывая ресурсы, необходимые для синхронного процесса и его влияние на производительность, мы решили рассматривать в качестве действенного сценария только асинхронную потоковую репликацию.

Требования