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


Я не знаю SQL Server 2005, но для общего использования SQL я всегда предпочитаю репликацию. Вы должны разделить чтение / запись в своем приложении (для MySQL есть MySQL Proxy, который может сделать это за вас), но получите масштабируемую систему. (читает ведомому (-ым), записывает ведущему)
Зеркальное отображение означает репликацию мастер-мастер, которая приводит к проблемам с параллелизмом / транзакциями. Даже в сценариях мастер-мастер вы должны НИКОГДА отправлять запросы записи на разные серверы. В зависимости от размера вашего проекта следующими шагами будет добавление дополнительных ведомых устройств, а затем добавление еще одного ведущего + его ведомые устройства для резервирования.
master --- master
| |
slave slave
| |
slave slave
| |
slave slave
Даже в этом случае вы отправляете запросы на запись только одному мастеру, но в случае отказа мастера вы можете автоматически продвигать второй мастер к своей новой цели запроса записи.
Это зависит от требуемого уровня готовности к работе в режиме ожидания (горячий, теплый, холодный).
Various mechanisms in SQL Server provide database-level redundancy, such as backup/restore, log shipping, and database mirroring (in SQL Server 2005 and later). Database mirroring is the only mechanism that provides a real-time, exact copy of the protected database with the guarantee of zero data loss (when the mirror is synchronized).
Зеркальное отображение базы данных работает в синхронном или асинхронном режиме. В асинхронном режиме транзакции фиксируются, не дожидаясь, пока зеркальный сервер запишет журнал на диск, что обеспечивает максимальную производительность.
Этот технический документ MS, Обеспечение высокой доступности с помощью зеркального отображения базы данных, охватывает ряд сценариев.
Вам, вероятно, следует прочитать эту статью TechNet, Рекомендации по зеркалированию базы данных и соображения производительности.
Оказывается, зеркальное отображение базы данных предотвращает прямой доступ к данным, зеркальные данные доступны только через моментальный снимок базы данных, поэтому отчеты по данным моментального снимка не будут актуальными, поэтому я буду использовать репликацию транзакций базы данных для обеспечения высокой доступности и балансировки нагрузки.
Для записи вы можете создавать снимки на зеркале и использовать их для отчетов: technet.microsoft.com/en-us/library/ms175511.aspx
Зеркальное отображение в MS-SQL - это репликация мастер-мастер нет. Только одна из двух баз данных может быть записана одновременно, и эти транзакции вставки / обновления / удаления также фиксируются в журнале другого сервера.