2009-01-12 2 views
12

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


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

ответ

7

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

+0

Для записи вы можете создавать моментальные снимки на зеркале и использовать их для создания отчетов: http://technet.microsoft.com/en-us/library/ms175511.aspx –

5

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

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

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

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

+2

Зеркалирование в MS-SQL - это * не * репликация master-master. Одновременно может быть записана только одна из двух баз данных, и эти вставки/обновления/удаления транзакций также привязаны к журналу другого сервера. –

7

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

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

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

Настоящий документ MS, Providing High Availability using Database Mirroring, охватывает ряд сценариев.

Возможно, вы должны прочитать эту статью TechNet, Database Mirroring Best Practices and Performance Considerations.

Смежные вопросы