Какая база данных имеет лучшую поддержку для репликации - PullRequest
12 голосов
/ 27 сентября 2008

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

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

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

Ответы [ 10 ]

8 голосов
/ 27 сентября 2008

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

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

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

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

5 голосов
/ 06 октября 2008

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

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

Встроенный

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

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

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

Что-то, чего я никогда не делал ...

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

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

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

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

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

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

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

4 голосов
/ 23 октября 2008

Просто добавление параметров в SQL Server (особенно в SQL 2008, который теперь имеет функции отслеживания изменений). Стоит обратить внимание на Sync Framework от Microsoft. Там есть несколько вариантов, от базовой архитектуры Hub-and-Speak, которая хороша, если у вас есть один центральный сервер и иногда подключенные клиенты, вплоть до одноранговой синхронизации, которая дает вам возможность выполнять гораздо более сложные задачи. синхронизация с несколькими «основными» базами данных.

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

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

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

4 голосов
/ 06 октября 2008

Попробуйте Sybase SQL Anywhere

3 голосов
/ 27 сентября 2008

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

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

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

2 голосов
/ 01 октября 2008

Есть много разных вещей, которые базы данных CALL репликации. Не все из них на самом деле включают репликацию, а те, которые работают совершенно по-разному. Некоторые базы данных поддерживают несколько различных типов.

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

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

1 голос
/ 27 сентября 2008

Немного не по теме, но вы можете проверить Maatkit на наличие инструментов для репликации MySQL.

0 голосов
/ 09 января 2009

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

0 голосов
/ 27 сентября 2008

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

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

0 голосов
/ 27 сентября 2008

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

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

...