Назад | Перейти на главную страницу

MySQl, сравнение репликации Postgresql

Одна из основных проблем репликации MySQL заключается в том, что ведомое устройство является однопоточным. Это может вызвать задержку репликации.

Как Postgresql обрабатывает репликацию? Разрешает ли он (или надстройка, такая как slony-I) многопоточные ведомые устройства?

В общем, каковы плюсы и минусы репликации MySQl и Postgresql? Я часто слышу, что репликация MySQL лучше репликации postgresql. Это справедливое заявление? Чем именно лучше?

Вся известная мне репликация Mysql и Postgres является однопоточной. Многопоточная репликация - очень сложная проблема для решения, потому что вы должны убедиться, что обновления, не соответствующие порядку, не повлияют на окончательные данные.

На сегодняшний день последняя версия MySQL GA (MySQL-5.6) doSQL-5.6 в том смысле, что параллелизм происходит по базе данных. Это означает, что у вас будет только один поток, работающий с одной базой данных. Чтобы включить эту функцию, вам нужно будет установить параметр --slave-parallel-workers.

Следующая версия MySQL 5.7, которая еще не является GA, поддерживает больше многопоточности. Это означает, что вы можете иметь несколько потоков, работающих с одной базой данных в 5.7. В 5.7 вы можете выбрать политику многопоточности, используя опцию --slave-parallel-type.

Вы можете найти подробную информацию об этих параметрах в документации: Параметры и переменные ведомого репликации

Помимо этого, есть множество других вещей, которые вы можете найти в MySQL-5.7, а именно: улучшенная полусинхронная репликация, репликация из нескольких источников, групповая репликация (функция лаборатории) и т. Д. Вы можете подробно рассмотреть все это на странице блоги, написанные инженерами здесь: http://mysqlhighavailability.com/

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