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

Я не специалист в администрировании баз данных, но вчера столкнулся с таким термином, как потоковая репликация. Что такое репликация, я знаю. Но какой смысл добавляется ей словом потоковая. В интернете ничего более-менее внятного не нашел.
Также хотелось бы узнать как соотносятся между собой понятия «асинхронная репликация» и «потоковая репликация».
Заранее спасибо.
  • Вопрос задан
  • 5942 просмотра
Пригласить эксперта
Ответы на вопрос 2
@tsabir
Я тоже не спец, но попробую пояснить.

Потоковая репликация так названа в противовес не-потоковой репликации. В Постгресе ведется лог изменений в БД (как и во многоих других СУБД) — Write Ahead Log (WAL). WAL нужен для буквы D в акрониме ACID.

Так вот этот лог можно использовать для репликации. Теперь вопрос, как это реализовать? Можно копировать файлы логов на соседний хост, и проигрывать их там, дождавшись, пока постгрес наполнит и закроет файл (обычно 16Мб) и сделает ротацию текущего файла логов. Таким образом получаем непотоковую репликацию.

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

А теперь представим ситуацию: вы хотите закрыть транзакцию, посылаете команду SQL COMMIT, и в ответ ждете от Постгреса подтверждение, что COMMIT прошел успешно. Если Постгрес дождался попадания данных в лог + еще и дождался репликации данных текущей транзакции на реплику, то это уже синхронная потоковая репликация.

Синхронность/асинхронность репликации текущей транзакции можно указать перед началом транзакции, насколько я знаю, но это уже тонкости.
Ответ написан
Комментировать
RedOctoberCZ
@RedOctoberCZ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы