Зеркальное отображение и репликация - PullRequest
13 голосов
/ 12 января 2009

Как решить, выбрать ли репликацию или зеркальное отображение в SQL Server 2005, чтобы обеспечить доступность и производительность данных одновременно.


Если говорить более конкретно об архитектуре моего сервера SQL, у меня есть активный / активный кластер из 2 узлов, которые используются для балансировки нагрузки, и у меня есть другой сервер для репликации, который будет использоваться только для отчетов, я хочу сделать Вы уверены, какая технология лучше всего обеспечивает доступность и производительность, репликацию транзакций или зеркальное отображение базы данных?

Ответы [ 3 ]

7 голосов
/ 18 января 2009

Это зависит от требуемого уровня готовности (горячая, теплая, холодная).

Различные механизмы в SQL Server обеспечить избыточность на уровне базы данных, такие как резервное копирование / восстановление, доставка журналов, и зеркальное отображение базы данных (в SQL Server 2005 и позже). Зеркальное отображение базы данных единственный механизм, который обеспечивает точная копия защищенного в режиме реального времени база данных с гарантией нуля потеря данных (когда зеркало синхронизирован).

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

В этом официальном документе MS , обеспечивающем высокую доступность с помощью зеркального отображения базы данных , рассматриваются различные сценарии.

Вероятно, вам следует прочитать эту статью TechNet, Рекомендации по зеркалированию баз данных и рекомендации по производительности .

7 голосов
/ 20 января 2009

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

5 голосов
/ 12 января 2009

Я не знаю SQL Server 2005, но для общего использования SQL я бы всегда предпочел репликацию. Вы должны разделить чтение / запись в вашем приложении (для MySQL есть MySQL Proxy, который может сделать это для вас по доверенности), но получить масштабируемую систему. (читает рабу (-ам), пишет мастеру)

Зеркальное отображение означает репликацию мастер-мастер, что приводит к проблемам параллелизма / транзакций. Даже в сценариях мастер-мастер вы должны НИКОГДА отправлять запросы на запись на разные серверы. В зависимости от размера вашего проекта на следующих этапах будет добавлено больше ведомых устройств, а затем добавлен еще один ведущий + его ведомые для резервирования.

master --- master
  |          |
slave       slave
  |          |
slave       slave
  |          |
slave       slave

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...