Пошаговое развертывание AlwaysOn - MS SQL 2012
До появления Microsoft SQL Server 2012 и механизма AlwaysOn, администраторы БД имели только одну не совсем удобную технолонию зеркалирования баз данных в SQL Server от Microsoft (Database Mirroring). Причем (как показала практика тестирования, и об этом не написано в документации) - это НЕ синхронная репликация базы и логов транзакций.
Если вкратце - то мы изучали поведение базы данных при интенсивной записи и различных неисправностях. Какие сбои мы смотрели:
- Штатное выключение мастер-сервера без уведомления зеркального сервера.
- Нештатное выключение мастер-сервера.
Как ни странно, именно штатное выключение показало, что есть некоторое различие между зеркалируемыми базами.
Поэтому я бы не советовал использовать Database Mirroring в продуктивных решениях, а обратил бы внимание на технологию AlwaysOn.
Вкратце об AlwaysOn
SQL 2012 AlwaysOn - удобное решение, обеспечивающее отказоустойчивость базы данных без необходимости иметь Shared Storage. Настройка AlwaysOn достаточно проста, и на самом деле большая часть работы заключается в настройке Failover Cluster на базе Windows 2008 R2/2012. Ведь именно с этих операционных систем появилась возможно строить кластеры с сетевой папкой (Witness Share) для обеспечения кворума.
Аналогичное решение вы уже могли попробовать при работе с Exchange 2010/2013/2016 - Database Availability Group (DAG). Как видите, даже название намекает (AlwaysOn Availability Group) - по сути, это одно и то же.
Обратите внимание на требования для работы AlwaysOn:
- Вам будет нужна редакция SQL Server 2012 Enterprise.
- Windows Server Failover Cluster (WSFC) - решение работает на базовой функции Windows Server.
- Одинаковая кодировка на уровне SQL-сервера для всех участников группы доступности.
Устанавливаем Failover Cluster для SQL 2012 AlwaysOn
- В первую очередь, надо установить компонент для операционной системы - WSFC (Windows Server Failover Cluster). Ничего сложного нет, идем в обычную оснастку Server Manager и устанавливаем эту Feature. Никаких подводных камней или особенностей тут нет. Эту службу устанавливаем на оба сервера.
- Настраиваем теперь сам кластер. Запустите Failover Cluster Manager из консоли Server Manager.
- В оснастке Failover Cluster Manager нажмите ссылку\кнопку Validate Configuration… (она есть в разных местах - точно найдете).
- На шаге мастера Select Servers or a Cluster добавляем два наших сервера, которые мы будем конфигурировать как реплики.
- На шаге Testing Options выбираем Run all tests (recommended).
В результатах тестирования вы скорее всего получите предупреждения касательно сетевых настроек и разделяемого хранилища. Предупреждение о сетевых настройках говорит о том, что у вас нет выделенных интерфейсов для работы кластера. В принципе, ничего страшного здесь нет. По поводу разделяемого хранилища (Shared Storage) - тоже не стоит беспокоиться, т.к. мы будем использовать сетевую папку. - На шаге Access Point for Administering the Cluster указываем имя и IP-адрес для кластера.
Имя кластера, которое вы тут укажете, НЕ нужно самостоятельно прописывать в DNS. Мастер настройки сделает это самостоятельно, а также самостоятельно создаст объект компьютера в Active Directory. Если вы сделаете это заранее вручную - то получите ошибку при создании кластера. - На шаге Confirmation снимите чекбокс Add all eligible storage to the cluster и нажмите Next.
После создания кластера вы увидите еще одно предупреждение о том, что для кластера не настроен диск-свидетель. Ничего страшного, мы совсем скоро настроим сетевую папку в качестве свидетеля для кворума. - Приступаем к настройке свидетеля. Запускаем Failover Cluster Manager, открываем наш новый кластер, выбираем More Actions и далее выбираем Configure Cluster Quorum Settings….
- Запускается мастер Configure Cluster Quorum. Жмем Select the quorum witness.
- Выбираем тип свидетеля - сетевая папка.
- Указываем путь к нашей папке. Тут надо отдельно сказать о том, что папку вы должны создать самостоятельно. Папка должна находится на 3-м сервере, который не является членом кластера.
Сетевые разрешения выставляем такие: Everyone - Full Access.
Разрешения NTFS должны включать: пользователя, который запустил мастер настройки кластера, а также объекты компьютеров - кластера и его членов. В нашем случае это: alwayson-tst-1, alwayson-tst-2, alwayson-tst-cl. - Проверьте настройки на шаге Confirmation и нажмите Next.
Поздравляю, кластер создан, свидетели настроены. Можете просмотреть настройки и статус, убедиться, что все зелененькое.
Далее переходим к созданию группы доступности AlwaysOn.
Создание AlwaysOn Availability Group
Перед тем как мы начнем, вы конечно установите MS SQL Server 2012. Обязательно убедитесь, что для служб SQL-сервера на каждом сервере созданы отдельные служебные учетные записи и службы работают от имени этих учетных записей. Если вы уже установили сервера и они работают из-под системных учетных записей (System), то придется переделывать. Легче всего - переустановить. Если это невозможно, обратите внимание на мою статью об этой задаче: Изменение сервисной учетной записи для MS SQL Server 2012 и последующие трудности.
Если вы этого не сделаете, то на шаге 5 (Specify Replicas) вы получите вот такое предупреждение:
А если вы нажмете Yes, то на этапе создания группы и добавления базы данных в группу, получите ошибку присоединения базы: "Joining <availability database> to availability group <availability group> at <replica>.".
Что ж, начем.
- Включаем поддержку AlwaysOn на SQL-серверах. Открываем SQL Server Configuration Manager, и в свойствах службы сервера выбираем чекбокс Enable AlwaysOn Availability Groups. После этого перезагружаем службы SQL.
- Открываем SQL Server Management Studio, подключаемся к одному из наших SQL-серверов. В Object Exporer идем в папку AlwaysOn High Availability. Щелкаем правой кнопкой на Availability Groups и выбираем New Availability Group Wizard…. Запускается мастер создания группы доступности.
- На шаге Specify Availability Group Name указываем имя группы. Выбираем любое удобное для нас имя. Это исключительно имя объекта, ни на что в дальнейшем влиять не будет.
- На шаге Select Databases выбираем базу данных, которая будет добавлена в группу доступности.
- На шаге Specify Replicas выполняем несколько действий. На вкладке Replicas добавляем второй SQL-сервер в конфигурацию. Automatic Failover - указываем по желанию (я в моем случае отключил). Synchronous Commit - лучше указать, т.к. именно это указывает на синхронный режим репликации, т.к. наиболее безопасный способ репликации с точки зрения защищенности данных от сбоя.
- Вторая необходимая вкладка на шаге Specify Replicas - это Listener. Тут мы создаем точку доступа к нашей группе доступности. Именно по этому адресу наши приложения будут получать доступ к базам данных из Availability Group.
- На шаге Select Initial Data Synchronization указываем Full и указываем папку для первичной репликации базы данных между серверами. Доступ к сетевой папке должны иметь учетные записи, под которыми запущены и работают службы SQL-серверов.
- Дальнейшие шаги мастера New Availability Group не требуют вмешательства. В результате вы должны получить новую работающую группу AlwaysOn.
На этом будем считать нашу задачу выполненной. За вами - дальнейшие тесты по работоспособности вашего нового кластера.
windows server (ru), windows server 2012 (ru), ms sql server (ru), sql 2012 (ru)
- Просмотров: 18943
У меня вопрос.
Имеется два сервера SQL_server1 и SQL_server2.
На SQL_server1 уже долгое время находятся много баз.
на SQL_server2 только установил SQL.
Нужно ли перекидывать базы на пустой SQL сервер?
Или после настройки синхронизируется всё?
Здравствуйте!
Насколько я помню, перекидывать не надо. Настройка always on подразумевает синхронизацию.