Prerequisites
Before implementing your AlwaysOn Availability Group (AG), make sure you have everything in your environment ready to go. There are several prerequisites that need to be addressed to ensure a successful deployment.
Windows
- Do not install AlwaysOn on a domain controller
- The operating system must be Windows 2012 or later
- Install all available Windows hotfixes on every server (replica)
- Windows Server Failover Cluster (WSFC) must be installed on every replica
SQL Server
- Each server (replica) must be a node in the WSFC
- No replica can run Active Directory services
- Each replica must run on comparable hardware that can handle identical workloads
- Each instance must run the same version of SQL Server, and have the same SQL Server collation
- The account that runs SQL Services should be a domain account
Network
It is recommended to use the same network links for communication between WSFC nodes and AlwaysOn replicas
Databases in the AG
- user databases (no system databases)
- read/write
- multi-user
- AUTO_CLOSE disabled
- full recovery mode
- not configured for database mirroring
For a complete and detailed explanation of prerequisites, go here: https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/prereqs-restrictions-recommendations-always-on-availability?view=sql-server-ver15
Prepare a Disaster Recovery Plan Document
A documented plan is your first point of resolution during a disaster recovery of your SQL Server. This will prevent a lot of guesswork as well making sure to reach RPO and RTO. Below is a list of things that need to be documented. This list is not the holy grail, and more relevant information can be added to it as needed.
- Full System architecture – integration overview of the database and application
- Identify system’s SLAs and select appropriate technology solution.
- Identify and document all systems involved.
- Document all assets for the system like server drives, operating systems, IP Addresses, file locations, and more.
- Document security information like logins, certificates, jobs/schedule information, and SQL Server configurations.
- Document contact information of all stakeholders of the system like DBAs, developers, network administrators, and etc.
- Document step by step instructions with estimated timelines on recovery of the SQL Server based on identified disaster scenarios.
- Involve all parties and review the document for complete consensus before finalizing it.
- Set up a change management process to allow any updates to be reflected in this DRP document.
- Finally, test the document in a dry run to ensure everything is covered as much as possible.
Conclusion
To conclude, Business Continuity can be achieved via both HA and DR solutions, and in several scenarios, both complement each other. You will need to determine the better HA and DR solutions to meet business requirements, and here are the key items to take home with you.
- Remember to have a Scheduled backup solution in place for both User and System databases.
- Ensure the backups are in a restorable state by verifying them regularly.
- Identify a better High Availability solution for your critical applications to reduce the downtime for Planned Maintenances.
- Whether you have a High Availability solution implemented or not, identify, test and implement a DR plan for Unplanned Outages.
Having a complete HA and DR plan in place will help you recover from any scenarios. In case of any database corruption, to meet RLO, try recovering the corrupted database or database backup using the command. Another option is to use a third-party product like Stellar SQL Recovery Software which is a great tool that can quickly fix database corruption and maintain consistency of the data. Find out more in the review done by Grant Fritchey (Data Platform, MVP) here.
Знакомимся с MS SQL 2016
Новая версия разрабатывалась воистину ударными темпами. Не успели познакомиться с версией 2014 (вышла 1 апреля 2014 года), как буквально через год, в мае 2015-го, на конференции Ignite был представлен очередной релиз, а для загрузки выложили сразу Community Technology Preview 2. Финальная версия вышла 1 июня 2016 года. В новом релизе MS, очевидно, сделала шаг в направлении общей кодовой базы SQL Server и Azure SQL Database, что довольно логично. Функции, ранее появившиеся в Azure SQL DB (вроде Row-Level Security и Dynamic Data Masking), теперь доступны и для локального сервера.
Вместе с релизом SQL Server 2016 MS представила агрессивную программу перехода с СУБД лидера рынка Oracle (занимает примерно 40% против 21% у MS), включающую «бесплатную» лицензию (заплатить нужно будет за подписку на Software Assurance), инструменты для миграции и обучение персонала. При построении БД с нуля СУБД от Miсrosoft обойдется на порядок дешевле. Предлагаются две лицензии: одна основана на вычислительных мощностях (Core-based), вторая — на количестве пользователей или устройств (Server + Client Access License). Oracle работает под Linux, и здесь у MS тоже есть сюрприз: анонсировано, что новая версия также будет работать под управлением этой ОС. Хотя сам релиз под Linux выйдет примерно в середине 2017 года.
Реализовано пять версий: Enterprise, Standard, Express, Developer и Web. Версия Developer Edition доступна бесплатно и обладает всеми возможностями Enterprise, но предназначена исключительно для разработки и тестирования, ее нельзя использовать в рабочих средах. Числовые показатели по сравнению с 2014 практически не изменились. Максимальный размер баз данных 524 Пбайт, у Express — 10 Гбайт. Максимальный объем используемой памяти на экземпляр: Express — до 1 Гбайт, Standard — 128 Гбайт, остальные ограничены возможностями ОС. Максимальное количество ядер: Express — до четырех, Standard — 24 (в 2014 — 16).
Как принято, новый релиз поддерживает минус одно поколение ОС. Из списка выпали Win7 и Win2k8. Возможна установка SQL Server на все x64-редакции Windows от 8 и Win2012, в том числе и урезанные Core и Nano. Особо отмечается, что процессоры x86 больше не поддерживаются.
С нового релиза SQL Server Management Studio (SSMS) поставляется отдельно, а сам он теперь управляет всеми редакциями SQL Server от 2008 (включая будущую SQL 2016 под Linux). То есть теперь не придется держать несколько SSMS для работы с разными релизами СУБД. Установка SSMS возможна на Win7SP1+/Win2k8+.
Выбор компонентов при установке MS SQL 2016
Другие статьи в выпуске:
Xakep #210. Краткий экскурс в Ethereum
- Содержание выпуска
- Подписка на «Хакер»-60%
В SSMS появилось несколько полезных возможностей. Например, Live Query Statistics позволяет наблюдать за ходом выполнения запроса. Полученные сведения (время, количество данных, процент выполнения) можно использовать для оптимизации. Активируется функция при помощи кнопки Include Live Query Statistics, в сессии должен быть включен сбор статистики (, ). Модуль PowerShell для работы с MS SQL sqlps, идущий в комплекте SQL 2016, поддерживает управление всеми версиями от SQL2k (конечно, в более ранних версиях сервера будут недоступны некоторые функции). Также изменения коснулись набора дополнений к Visual Studio — SQL Server Data Tools для Visual Studio. Раньше были доступны две версии: собственно SSDT и SSDT-BI (Business Intelligence), теперь они объединены в один пакет.
В документе SQL Server 2016 and Windows Server 2016 Better Together разработчики приводят примеры, почему только сочетание MS Server 2016 и SQL Server 2016 обеспечит максимальную безопасность и производительность. Например, Win2016 поддерживает технологию энергонезависимой памяти Storage Class Memory (SCM), в том числе и NVDIMM — они заменяют обычные DIMM-модули памяти, но умеют хранить информацию при потере питания. Применяя их, можно добиться существенного прироста производительности. С помощью технологии Storage Spaces Direct на основе стандартных серверов с локальным хранилищем можно создать высокодоступное и масштабируемое хранилище данных.
Еще две технологии — Just-In-Time (JIT) и Just Enough Administration (JEA) — позволяют ограничить администратора в правах по времени или при помощи PowerShell делегировать пользователю ровно те права, которые ему нужны, чтобы выполнять работу.
В SSMS теперь можно следить за ходом запроса
Новое в T-SQL
Язык T-SQL также получил несколько новых функций, как больших, так и мелких. Рассмотрим лишь некоторые из них.
JSON — популярный формат текстовых данных для хранения неструктурированных данных и для обмена информацией в REST веб-службах. Некоторые сервисы Azure также используют JSON. До версии 2016 все задачи обработки JSON ложились на плечи разработчика, теперь разбор и хранение, импорт и экспорт данных, преобразование и форматирование запросов обеспечивает сам движок. Приложения и инструменты не видят разницы между значениями, взятыми из скалярных столбцов таблицы, и значениями, взятыми из столбцов в формате JSON.
Можно использовать значения из JSON-текста в любой части T-SQL-запроса (включая пункты WHERE, ORDER BY, GROUP BY). Отдельного типа данных не предусмотрено, для хранения используются стандартные varchar или nvarchar. Для работы с JSON реализовано несколько новых функций:
- ISJSON — проверка, является ли строка JSON;
- JSON_VALUE — извлечение скалярного значения;
- JSON_QUERY — извлечение объекта или массива;
- JSON_MODIFY — изменение части JSON-текста.
Функция OPENJSON преобразует массив JSON-объектов в таблицу, пригодную для импорта JSON-данных в SQL Server, в которой каждый объект представлен в виде одной строки, а пара ключ/значение возвращается в виде ячеек. Чтобы из реляционных данных сгенерировать JSON, следует использовать функцию , поддерживающую два варианта форматирования и . Дополнительная опция создает JSON без квадратных скобок. По умолчанию параметры, имеющие значение NULL, не будут включены в вывод. Если они нужны, следует в вызове FOR JSON использовать параметр .
При тестировании, да и в работе очень часто приходится многократно удалять и создавать объекты в базе данных. Чтобы скрипт отработал нормально, приходится проверять наличие/отсутствие объекта. До SQL 2016 эта процедура была полностью на разработчике:
Новая функция теперь позволяет очень просто проверить наличие объекта и упрощает написание кода:
поддерживается практически для всех объектов (баз данных, процедур, таблиц, индексов).
Две функции и обеспечивают встроенную поддержку Gzip. На входе они могут принимать несколько типов данных, на выходе .
В добавили возможность работы с отдельными секциями, а не только над всей таблицей. В можно использовать произвольную маску. Новая опция для позволит добавлять и удалять столбцы в режиме онлайн. При этом данные останутся доступны для чтения, а блокировка будет в конце операции. Процедура позволяет выполнять сценарии в SQL Server на другом языке. В настоящее время поддерживается только R.
HA/DR Terminologies
Before diving into the discussion about High Availability or Disaster Recovery solutions, everyone should be familiar with the terminology.
Planned Maintenance
Planned maintenance is a coordinated/scheduled downtime after informing all required personnel to perform Maintenance activities like
- Application patching or upgrading
- Applying Windows OS patches or security fixes
- Performing hardware upgrades or firmware patches
- Test DR solutions implemented in the organization
Unplanned Outages
An unplanned outage is a non-coordinated downtime and can happen out of any scenarios below
- Application-level issues
- Infrastructure level issues (VM, OS, server or storage issues)
- Catastrophically natural disasters
- Storage or database level corruptions
Recovery Time Objective (RTO)
RTO is the acceptable downtime for the application, whether from planned maintenance or unplanned outages. If the RTO for a particular application is 12 Hours, then the maximum downtime for that application can be 12 Hours, and the application should be back working in 12 Hours.
Recovery Point Objective (RPO)
RPO is the acceptable limit of data loss that the organization/system can afford to lose, often measured by time. RPO varies from database to database or application to application. For example, a production database may have a recovery point of minutes, while a test or development database can afford to lose days to weeks of data.
Recovery Level Objective (RLO)
RLO defines the level of granularity required to recover data which might be at an instance, database, or table level. Recovering from database level corruption is an excellent example of this.
SQL Server High Availability
The primary goal of high availability is to ensure service availability by minimizing the impact of downtime from either planned or unplanned activities. Almost all high availability techniques will have their infrastructure placed in a single geographic location and have the option to switch over automatically.
SQL Server supports these high availability techniques
- Windows Failover Cluster Instance (within single datacenter) – Till SQL Server 2008 R2
- Transactional Replication
- Log Shipping (within or nearby datacenter with fast data transfer options)
- Database Mirroring (Synchronous)
- Always On Failover Cluster Instance (within single datacenter) – Available from SQL Server 2012 onwards
- Always On Availability Groups (within or nearby datacenter with fast data transfer options)
Полезные функции
В любой организации постепенно накапливается приличный объем данных, часть из которых нужна лишь изредка, отправить в архив их нельзя, и большее время они просто занимают ресурсы. Технология Stretch Database позволяет динамически размещать локальные базы данных на Azure. То есть мы можем у себя оставить таблицы, к которым обращаются часто, а «холодные» переместить в облако, приложения по-прежнему будут иметь к ним доступ как к локальным. В итоге увеличится производительность локального сервера и сократится время резервного копирования, поскольку оно касается только «горячих» данных. Если поместить «холодные» данные в отдельную таблицу, можно перенести всю таблицу, иначе используется фильтр, позволяющий отобрать нужные записи. При необходимости миграцию можно остановить или ограничить. Функция не требует изменений локального приложения.
Перед включением следует запустить Stretch Database Advisor, который поможет определить потенциальные таблицы и выявить проблемы. Включить Stretch Database можно при помощи Transact-SQL или в SSMS, выбрав Tasks -> Stretch -> Enable, после чего запустится специальный визард. Не поддерживаются некоторые типы столбцов (, , , ) и функций (вычисляемые столбцы, XML-индексы, полнотекстовые индексы).
Stretch Database позволяет динамически размещать локальные БД на Azure
Источники данных сегодня самые разнообразные, и организациям приходится иметь дело с несколькими типами данных, анализ которых становится проблемой. PolyBase — новый движок, дающий возможность управлять реляционными и нереляционными данными, хранящимися в Hadoop/HDFS или Azure Blob Storage, при помощи обычных T-SQL-запросов. До сих пор был частью SQL Server Parallel Data Warehouse, появившегося для SQL 2008 R2, но теперь встроен в основную функциональность. Внешне обращение к HDFS выглядит так, как будто информация находится на локальном SQL-сервере, используется тот же синтаксис. Все остальное PolyBase берет на себя. Кроме собственно запросов, возможен экспорт и импорт данных. Для работы требует JRE 7.