Какая база данных имеет наилучшую поддержку репликации

StackOverflow https://stackoverflow.com/questions/142068

Вопрос

Я довольно хорошо представляю, на что способна репликация MySQL.Мне интересно, какие другие базы данных поддерживают репликацию и как они сравниваются с MySQL и другими?

Вот несколько вопросов, которые у меня могли бы возникнуть::

  1. Встроена ли репликация или это надстройка / плагин?
  2. Как работает репликация (на высоком уровне)?MySQL обеспечивает репликацию на основе инструкций (и репликацию на основе строк в 5.1).Меня интересует, как сравниваются другие базы данных.Что отправляется по проводам?Как изменения применяются к репликам?
  3. Легко ли проверить согласованность между ведущим и ведомыми устройствами?
  4. Насколько легко восстановить синхронизацию сбойной реплики с мастером?
  5. Производительность?Одна вещь, которую я ненавижу в репликации MySQL, - это то, что она однопоточная, и репликам часто бывает трудно поддерживать ее в рабочем состоянии, поскольку мастер может запускать множество обновлений параллельно, но реплики должны запускать их последовательно.Есть ли какие-либо ошибки, подобные этой, в других базах данных?
  6. Любые другие интересные функции...
Это было полезно?

Решение

Репликация MySQL слаба, поскольку нужно пожертвовать другими функциональными возможностями, чтобы получить полную поддержку master / master (из-за ограничения на поддерживаемые серверные части).

Репликация PostgreSQL слаба, поскольку встроенная поддержка поддерживается только master / standby (с использованием доставки журналов);более мощные решения (такие как Slony или Londiste) требуют дополнительной функциональности.Сегменты архивного журнала отправляются по сети, это те же записи, которые используются для обеспечения работоспособности автономной базы данных при непротиворечивом запуске.Это то, что я использую в настоящее время, и у нас полностью автоматизирована повторная синхронизация (и настройка, и другие функциональные возможности).Ни один из этих подходов не является полностью синхронным.Более полная поддержка будет встроена начиная с версии PostgreSQL 8.5.Отправка журналов не позволяет базам данных выходить из синхронизации, поэтому процессам нет необходимости проверять состояние синхронизации;восстановление синхронизации двух баз данных включает в себя установку флага резервного копирования на главном устройстве, повторную синхронизацию с подчиненным устройством (при этом база данных все еще работает;это безопасно) и снятие флага резервного копирования (и перезапуск подчиненного процесса) при наличии архивных журналов, сгенерированных в процессе резервного копирования;в моем магазине этот процесс (как и все другие административные задачи) автоматизирован.Производительность не является проблемой, поскольку мастер все равно должен воспроизводить сегменты журнала внутренне в дополнение к выполнению другой работы;таким образом, подчиненные устройства всегда будут находиться под меньшей нагрузкой, чем ведущие.

RAC от Oracle (который не является репликацией должным образом, поскольку существует только один сервер хранения данных - но у вас есть несколько интерфейсов, разделяющих нагрузку, и вы можете создать избыточность в самом этом общем серверном хранилище, поэтому он заслуживает упоминания здесь) - это подход с несколькими мастерами, гораздо более комплексный, чем другие решения, но чрезвычайно дорого.Содержимое базы данных не "передается по сети".;вместо этого они хранятся в общем бэкэнде, доступ к которому имеют все задействованные системы.Поскольку существует только один серверный сервер, системы не могут выйти из синхронизации.

Continuent предлагает стороннее решение, которое выполняет полностью синхронную репликацию на уровне инструкций с поддержкой всех трех вышеперечисленных баз данных;однако коммерчески поддерживаемая версия их продукта не особенно дешева (хотя и значительно дешевле.В прошлый раз, когда я вводил его, решение Continuent требовало ручного вмешательства для восстановления синхронизации кластера.

Другие советы

У меня есть некоторый опыт работы с MS-SQL 2005 (издатель) и SQLEXPRESS (подписчики) с зарубежной репликацией слиянием.Вот мои комментарии:

1 - Встроена ли репликация или это надстройка / плагин?

Встроенный

2 - Как работает репликация (на высоком уровне)?

Различные способы репликации, от моментального снимка (предоставление статических данных на уровне подписчика) до репликации транзакций (каждая инструкция INSERT / DELETE / UPDATE выполняется на всех серверах).Репликация слиянием реплицирует только окончательные изменения (последующие ОБНОВЛЕНИЯ одной и той же записи будут производиться сразу во время репликации).

3 . Легко ли проверить согласованность между ведущим и ведомыми устройствами?

То , чего я никогда не делал ...

4 . Насколько легко синхронизировать сбойную реплику с мастером?

Основной процесс повторной синхронизации - это просто двойной щелчок мышью ....Но если у вас есть 4Go данных для повторной инициализации через 64-килобайтное соединение, это будет длительный процесс, если вы не настроите его.

5 - Производительность?

Что ж ...Конечно, где-то у вас будет узкое место, будь то производительность вашего соединения, объем данных или, наконец, производительность вашего сервера.В моей конфигурации пользователи пишут только подписчикам, которые все реплицируются с основной базой данных = publisher.Таким образом, этот сервер никогда не используется конечными пользователями, а его центральный процессор строго выделен для репликации данных (на несколько серверов) и резервного копирования.Подписчики предназначены для клиентов и одна репликация (для издателя), что дает очень интересный результат с точки зрения доступности данных для конечных пользователей.Репликации между издателем и подписчиками могут запускаться совместно.

6 - Любые другие интересные функции...

С некоторым опережением можно продолжать разработку базы данных, даже не останавливая процесс репликации .... таблицы (косвенным способом), поля и правила могут быть добавлены и реплицированы вашим подписчикам.

Конфигурации с основным издателем и несколькими подписчиками могут быть ОЧЕНЬ дешевыми (по сравнению с некоторыми другими ...), поскольку вы можете использовать бесплатный SQLEXPRESS на стороне подписчика даже при выполнении репликации слиянием или транзакциями

Просто добавляю к параметрам SQL Server (особенно SQL 2008, в котором теперь есть функции отслеживания изменений).Кое-что, что следует учитывать, это Платформа синхронизации от Microsoft.Там есть несколько вариантов, начиная с базовой архитектуры hub-and-spoke, которая хороша, если у вас есть один центральный сервер и иногда подключаемые клиенты, и заканчивая одноранговой синхронизацией, которая дает вам возможность выполнять гораздо более продвинутую синхронизацию с несколькими "основными" базами данных.

Причина, по которой вы, возможно, захотите рассмотреть это вместо традиционной репликации, заключается в том, что у вас гораздо больше контроля со стороны кода, например, вы можете получать события во время выполнения синхронизации для конфликтов Update / Обновление, Update / Удаление, Delete / Обновление, Insert / Вставка и решать, как их разрешить на основе бизнес-логики, и при необходимости сохранять данные проигравшего конфликта где-нибудь для ручной или автоматической обработки.Взгляните на это руководство чтобы помочь вам решить, что возможно с помощью различных методов репликации и / или синхронизации.

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

Моя команда только что выпустила большой проект, который включает в себя несколько баз данных SQL Express, синхронизирующих подмножества данных из центральной базы данных SQL Server через WAN и Интернет (в некоторых случаях медленное коммутируемое соединение) с большим успехом.

MS SQL 2005 Standard Edition и выше обладает превосходными возможностями и инструментами репликации.Взгляните на:

http://msdn.microsoft.com/en-us/library/ms151198 (SQL.90).aspx

Это довольно действенно.Вы даже можете использовать SQL Server Express в качестве подписчика только для чтения.

Существует много разных вещей, которые базы данных НАЗЫВАЮТ репликацией.Не все из них на самом деле связаны с репликацией, а те, которые действительно работают совершенно по-разному.Некоторые базы данных поддерживают несколько различных типов.

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

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

Немного не по теме, но вы, возможно, захотите проверить Maatkit на наличие инструментов, помогающих с репликацией MySQL.

Все основные коммерческие базы данных имеют достойную репликацию, но некоторые из них более достойны, чем другие.IBM Informix Dynamic Server (версия 11 и более поздних версий) особенно хорош.Фактически у него есть две системы - одна для обеспечения высокой доступности (HDR - репликация данных высокой доступности), а другая для распространения данных (ER - корпоративная репликация).Функции Mach 11 (RSS - удаленный автономный дополнительный сервер и SDS - дополнительный диск с общим доступом) также превосходны, вдвойне в 11.50, где вы можете выполнять запись либо на основной, либо на дополнительный сервер пары HDR.

(Полное раскрытие информации:Я работаю над Informix softare.)

Я сам этого не пробовал, но вы также можете заглянуть в OpenBaseSQL, в котором, кажется, есть несколько простых в использовании встроенных функций репликации.

Другой способ - работать в виртуализированной среде.Я подумал, что данные, приведенные в этой статье в блоге, были интересными

http://chucksblog.typepad.com/chucks_blog/2008/09/enterprise-apps.html

Это от руководителя EMC, поэтому очевидно, что он не является независимым, но эксперимент должен быть воспроизводимым

Вот данные, специфичные для Oracle

http://oraclestorageguy.typepad.com/oraclestorageguy/2008/09/to-rac-or-not-to-rac-reprise.html

Редактировать:Если вы запускаете виртуализацию, то есть способы заставить что-либо реплицироваться

http://chucksblog.typepad.com/chucks_blog/2008/05/vmwares-srm-cha.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top