Назад
DevOps
PostgreSQL+1C на Ubuntu Linux RemoteApp Tool — пошаговая настройка RDP-доступа к приложениям Автозапуск 1С при подключении к ТС на Windows Server 2016 Автоматизация установки 1С Автоматическое создание резервной копии настроек Mikrotik с отправкой на почту и FTP Авторизация баз 1С в SQL через локальную учетную запись Базовая настройка Unifi контроллера Базовая настройка Windows Server 2019 Базовая настройка маршрутизаторов MikroTik на примере RB2011 Восстановление базы PostgreSQL 1С из резервной копии Восстановление базы данных 1С на SQL сервере Восстановление кластера MySQL Восстановление почтовой базы данных Exchange Server 2013/2016 Восстановление системы Windows Server 2019 Восстановление файла данных Outlook (.pst) Делегирование полномочий пользователю конфигурации узла сеансов удаленных рабочих столов Windows Server 2012-2019 Диагностика компонентов Exchange 2016 Добавление второго контроллера домена в существующий домен Добавление диска LVM Добавление нового сотрудника в систему Sigur Запрет запуска программ Windows Изменение максимального размера вложений в Exchange и Outlook Изменение пароля на удаленном рабочем столе Инструкция добавления нового сотрудника в Biosmart Studio 5 + просмотр отчетов Интеграция облачной инфраструктуры с локальной ИТ-инфраструктурой Использование DNS challenge для выпуска SSL-сертификатов Lets Encrypt Как обновить платформу 1С на сервере Как опубликовать базы 1С на веб-сервере Windows и Linux Как организовать ИТ-поддержку клиентов Как организовать удаленную работу с клиент-банком Как передать файл с клиента на сервер 1С 8.3 Как перенести базу 1С в облако Как подключить COM-объект Excel в 1C Как подключиться удаленно к 1С Как устранить ошибку подключения по RDP Win 7 -> Win Server Миграция Active Directory с Windows Server 2016 на Windows Server 2022 Нагрузочное тестирование 1С:ERP+тест-центр Нагрузочное тестирование сервера на Linux Настройка AlwaysOn MS SQL Настройка Juniper Virtual Chassis QFX5100 Настройка PostgreSQL на Centos Настройка PostgreSQL на Windows Настройка QoS для ISCSi Настройка RemoteApp на Windows Server 2019 Настройка SMS-оповещения в системе СКУД SIGUR Настройка SNMP на MikroTik Настройка VLAN в Proxmox VE Настройка VPN-сервера на Windows Server 2016 Настройка ZFS в Proxmox VE Настройка веб-публикации 1С, подключение кассового оборудования Настройка внутренней фильтрации содержимого в Exchange Server 2016 Настройка графика доступности в Zabbix: мониторинг ping-ответов Настройка групповой политики на Windows Server 2016 Настройка групповых политик Windows Server 2019 Настройка зеркалирования MS SQL 2019 Настройка кластера Asterisk с использованием VRRP Настройка кластера HAproxy при помощи VRRP Настройка коммутатора D-link SmartPro серии DES/DGS Настройка контроллера домена Windows Server 2019 Настройка подключения к удаленному рабочему столу на iOS Настройка резервирования интернет-канала (Mikrotik) Настройка репликации типа Master-Master на MySQL (MariaDB) Настройка сервера лицензирования Windows Server 2019 Настройка сервера лицензирования СЛК Настройка сетей Hyper-V Настройка сети в Proxmox 7 Настройка терминального сервера Windows 2012 R2 Настройка терминального сервера Windows Server 2016 Настройка терминального сервера на базе Windows Server 2022 Настройка файлового сервера Windows Server 2019 Настройка формата и оптимизация журнала регистрации 1С Настройка шифрованной телефонии на базе Asterisk Настройка экстренного отключения удаленного сервера Windows Некорректно отображается изображение при подключении к удалённому серверу через RDP Обновление оборудования Juniper Обновление тонкого клиента 1С при веб-публикации Ограничение доступа к веб-серверу по странам Отказоустойчивый FTP через HAproxy Отключение обновлений Windows Server через групповые политики Очистка кэша 1С Ошибка 1069 на сервере 1С Ошибка http при обращении к серверу 1C Ошибка «Не удается войти в учетную запись» в ОС Windows Ошибка в 1С при получении характеристик принтера Ошибка при обновлении SQL Server — MSSQLSERVER.INACTIVE Перенос TempDB на отдельный диск Перенос баз 1С Перенос журнала регистраций 1С (srvinfo) на другой диск Перенос ключей КриптоПро Перенос писем с помощью .pst в Microsoft Exchange Перенос почтовых ящиков Exchange на другой сервер Перенос файлов с помощью Robocopy Подключение iSCSI в Proxmox VE Подключение аппаратного USB-ключа лицензии 1С на удаленный сервер Подключение к облачному серверу 1C по OpenVPN на ipad / iphone Подключение к удаленному рабочему столу Windows через MacOS Подключение модуля расширения веб-сервера в 1С Подключение по RDP с Linux систем Подключение сетевого принтера на Windows 10 Поиск наиболее нагруженных баз MSSQL при работе с 1С Почтовый переезд средствами IMAP Проброс диска в Proxmox 7 Проброс портов на MikroTik Проверка актуальности учетных данных в документации ИТ-объекта Разворачиваем отказоустойчивый кластер MS SQL Server 2012 на Windows Server 2016 Разделение трафика TCP и HTTP в HAProxy Резервное копирование 1С на MSSQL Резервное копирование PostgreSQL Резервное копирование на Proxmox VE Решение ошибки Proxmox VE — error 0 occurred while receiving the document Решение проблемы: агент сервера 1С:Предприятие останавливается Решение проблемы: недостаточно памяти на сервере 1С Решение проблемы: ошибка 500 на веб-сервере IIS 1С Сброс пароля в Windows Сеанс удаленного рабочего стола или удаленного приложения не прекращается из-за splwow64.exe процесса Сервер хранилища конфигураций 1C на Linux Сжатие базы данных MySQL и MariaDB Смена истекшего пароля с помощью Windows RDS Смена рабочего места в базах 1С Создание mesh сети Wi-Fi на базе Ubiquiti Unifi 6 Создание и отзыв сертификатов OpenVPN Создание отказоустойчивого кластера 1С Создание резервных копий SQL Postgres на S3-хранилище Создание резервных копий БД SQL на серверы объектного хранилища S3 Создание шифрованых дисков с помощью PGP Сохранение конфигурации Juniper Схема действий в форс-мажорных ситуациях (IT) Тюнинг сервера для 1С: процессор Удаление агента сервера 1С Удаление базы 1С из кластера Удаление пользователя из 1С Удаление сеанса пользователя в 1С Удаление терминальных лицензий (RDS CAL) Установка 1С:Предприятие на Mac OS Установка Astra Linux Common Edition на VirtualBox Установка Bareos Установка COM-компонента в 1С Установка Exchange Server 2016 Установка Exchange Server 2019 Установка KVM на ubuntu Установка MariaDB на CentOS 7 Установка Proxmox 7 на Debian 11 Установка Proxmox Mail Gateway 7 Установка RabbitMQ (Windows) Установка Ubuntu на Proxmox 7 Установка Windows Server 2019 на Proxmox Установка Windows Server 2022 на виртуальную машину Hyper-V Установка драйвера принтера на терминальный сервер Windows Server 2019 Установка и базовая настройка MS SQL 2019 для 1С Установка и базовая настройка OpenMediaVault Установка и настройка DHCP на Windows Server 2019 Установка и настройка TrueNAS CORE Установка и настройка Zabbix, настройка агента и уведомлений Установка и настройка Zimbra на CentOS 7 Установка и настройка контроллера домена Active Directory Domain Установка и настройка СУБД Postgres Pro для 1С Установка квоты каталогов в Windows Servers Установка нескольких версий сервера 1С Установка сервера 1С и MS SQL с настройкой для оптимизации 1С Установка сервера 1С на Ubuntu + PostgreSQL Установка сервера 1С:Предприятие в связке с CentOS 7 и PostgreSQL Установка терминального сервера Windows Server 2019 Устранение ошибки 0x800700DF в WebDAV Устранение ошибки «удаленный хост разорвал существующее подключение 1С» Устранение ошибки проверки подлинности RDP Устранение ошибки службы Active Directory сейчас недоступны (не печатает принтер на Windows 10) Устранение проблемы несоответствия версий 1С Фильтрация писем в Exchange (Outlook web) Что делать, если сервер 1С:Предприятие не обнаружен

Настройка зеркалирования MS SQL 2019

В данной инструкции рассмотрим возможности MS SQL Server по обеспечению отказоустойчивости баз данных. Основными технологиями для этого являются зеркалирование (mirroring), а также создание групп высокой доступности AlwaysOn. Но группы высокой доступности требуют приобретение лицензий редакции Enterprise, что во многих случаях экономически нецелесообразно. Остановимся подробней на возможностях зеркалирования и его настройке.

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

Режимы зеркалирования

В Microsoft SQL Server на текущий момент есть три режима зеркалирования:

Асинхронный

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

Синхронный без автоматического восстановления

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

Синхронный с автоматическим восстановлением

Для работы в синхронном режиме с автоматическим восстановлением требуется три сервера: главный (principal), зеркальный (mirror) и свидетель (witness). Основное отличие от предыдущего режима в наличии третьего сервера-свидетеля, который обеспечивает кворум и автоматическое переключение в случае отказа главного сервера без стороннего вмешательства.

Настройка серверов

Мы будем настраивать зеркалирование в синхронном режиме без автоматического восстановления, что потребует развертывания только одного дополнительного сервера. Версия MS SQL Server 2019 на главном и зеркальном серверах должна быть одинаковая. Начинаем с создания сертификатов. На обоих серверах создаём локальный каталог, в нашем примере он находится по пути C:\certs

На главном сервере выполняем запрос по созданию сертификата. Пароль указываем свой:

USE MASTER
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.symmetric_keys 
	WHERE name = '##MS_DatabaseMasterKey##'
)
	CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'пароль'
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.databases 
	WHERE [is_master_key_encrypted_by_server] = 1
)
	ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.certificates 
	WHERE name = 'MainServer'
)
	CREATE CERTIFICATE MainServer
	WITH SUBJECT = 'Main Server Certificate', 
	START_DATE = '01/01/2024',
	EXPIRY_DATE = '01/01/2030';
GO
BACKUP CERTIFICATE MainServer
TO FILE = 'C:\certs\MainServer.cer'

Затем на зеркальном сервере создадим сертификат по аналогии:

USE MASTER
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.symmetric_keys 
	WHERE name = '##MS_DatabaseMasterKey##'
)
	CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'пароль'
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.databases 
	WHERE [is_master_key_encrypted_by_server] = 1
)
	ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY 
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.certificates 
	WHERE name = 'MirrorServer'
)
	CREATE CERTIFICATE MirrorServer
	WITH SUBJECT = 'Mirror Server Certificate',
	START_DATE = '01/01/2024',
	EXPIRY_DATE = '01/01/2030';
GO
BACKUP CERTIFICATE MirrorServer
TO FILE = 'C:\certs\MirrorServer.cer'

Копируем созданные сертификаты на оба сервера в папку C:\Certs. Cоздаем на каждой стороне точку прослушивания DBMirrorEndPoint, слушающей порт TCP 5022. Данный порт должен быть открыт на сетевых экранах. На основном сервере:

USE MASTER
GO
IF NOT EXISTS (
SELECT * FROM sys.endpoints WHERE type = 4
)
CREATE ENDPOINT DBMirrorEndPoint
STATE = STARTED AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE MainServer, 
ENCRYPTION = REQUIRED, 
ROLE = ALL
)

И на зеркальном:

USE MASTER
GO
IF NOT EXISTS (
SELECT * FROM sys.endpoints WHERE type = 4
)
CREATE ENDPOINT DBMirrorEndPoint
STATE = STARTED AS TCP (LISTENER_PORT = 5022)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE MirrorServer, 
ENCRYPTION = REQUIRED, 
ROLE = ALL
)

Создаем пользователей SQL сервера и назначаем права для возможности подключения. На главном сервере:

 
USE MASTER
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.syslogins WHERE name = 'MirrorServerUser'
)
	CREATE LOGIN MirrorServerUser WITH PASSWORD = 'пароль'
IF NOT EXISTS (
	SELECT 1 FROM sys.sysusers WHERE name = 'MirrorServerUser'
)
	CREATE USER MirrorServerUser;
IF NOT EXISTS (
	SELECT 1 FROM sys.certificates WHERE name = 'MirrorDBCertPub'
)
	CREATE CERTIFICATE MirrorDBCertPub 
	AUTHORIZATION MirrorServerUser
	FROM FILE = 'C:\certs\MirrorServer.cer'
	GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint 
	TO MirrorServerUser
GO

И на зеркале:

USE MASTER
GO
IF NOT EXISTS (
	SELECT 1 FROM sys.syslogins WHERE name = 'MainServerUser'
)
	CREATE LOGIN MainServerUser WITH PASSWORD = 'пароль'
IF NOT EXISTS (
	SELECT 1 FROM sys.sysusers WHERE name = 'MainlServerUser'
)
	CREATE USER MainServerUser;
IF NOT EXISTS (
	SELECT 1 FROM sys.certificates WHERE name = 'MainDBCertPub'
)
	CREATE CERTIFICATE MainDBCertPub 
	AUTHORIZATION MainServerUser
	FROM FILE = 'C:\certs\MainServer.cer'
	GRANT CONNECT ON ENDPOINT::DBMirrorEndPoint 
	TO MainServerUser
GO

На этом начальную настройку серверов можно считать законченной.

Создание зеркала базы данных

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

В нашем примере будем использовать базу mirror_test. Делаем полный бэкап базы данных плюс бэкап лога транзакций:

BACKUP DATABASE [mirror_test] 
TO DISK = N'\\backup_share\mirror_test.bak' WITH FORMAT, 
INIT, NAME = N'mirror_test-Full',STATS = 10

BACKUP LOG [mirror_test]  
TO DISK = N'\\backup_share\mirror_test.trn'

Восстанавливаем бэкап в режиме NORECOVERY на зеркальном сервере, указав актуальные пути к файлам бэкапа и расположения БД:

RESTORE DATABASE [mirror_test] 
FROM  DISK = N'\\backup_share\mirror_test.bak' WITH  FILE = 1,  
NORECOVERY,  NOUNLOAD,  STATS = 10,
MOVE N'mirror_test' 
TO N'S:\SQL_Bases\mirror_test.mdf',
MOVE N'mirror_test_log' 
TO N'E:\SQL_Log\mirror_test_log.ldf'

RESTORE LOG [mirror_test] 
FROM  DISK = N'\\backup_share\mirror_test.trn' WITH  FILE = 1,  
NORECOVERY,  NOUNLOAD,  STATS = 10

Настраиваем репликацию тестовой БД через ранее созданные точки прослушивания. Выполняем на зеркальном сервере подключение:

ALTER DATABASE mirror_test SET PARTNER = 'TCP://MAINSERVER_IP:5022'

Затем на главном:

ALTER DATABASE mirror_test SET PARTNER = 'TCP://MIRRORSERVER_IP:5022'


Зеркалирование настроено. В случае возникновения ошибок на этом этапе наиболее вероятно, что бэкап журналов сильно отстает от актуального состояния рабочей базы. Выполните повторный бэкап журнала и его восстановление на зеркале в режиме NORECOVERY. После этого повторите попытку подключения. Рассмотрим полезные команды в случае возникновения сбоев на главном сервере. Если необходимо переключить главную реплику:

ALTER DATABASE mirror_test SET PARTNER FAILOVER

Если повредилась основная база, то пробуем принудительную активацию зеркала с возможной потерей транзакций:

ALTER DATABASE mirror_test SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

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

ALTER DATABASE mirror_test SET PARTNER RESUME

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

Нужна помощь? Администрирование MS SQL для 1С мы осуществляем в рамках услуги аренда сервера.

Дата публикации: 1 марта 2024
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.