При попытке настроить стандартную репликацию MS SQL Server для баз данных 1С многие системные администраторы сталкиваются с тем, что данные синхронизируются не полностью или процесс постоянно прерывается с ошибками. В этой статье мы подробно разберем, почему классические методы репликации (транзакционная или слиянием) плохо подходят для платформы 1С:Предприятие, и рассмотрим проверенные архитектурные решения для обеспечения отказоустойчивости и создания копий баз.
Давайте проанализируем ситуацию, в которой оказался автор темы. Стандартные механизмы Transactional Replication или Merge Replication, которые отлично работают для обычных приложений, "спотыкаются" о специфическую архитектуру 1С. Выясним основные причины:
Primary Key отсутствует с точки зрения SQL-сервера. В итоге такие таблицы просто игнорируются при настройке репликации, и часть данных "не доезжает" до второй ноды.rowguid. Платформа 1С, которая сама активно управляет уникальными идентификаторами (GUID) ссылок, может конфликтовать с этими системными полями, что приводит к непредсказуемому поведению при записи объектов.Рассмотрим наиболее современный и рекомендуемый способ — AlwaysOn Availability Groups (AG). В отличие от репликации отдельных таблиц, этот механизм работает на уровне всего журнала транзакций всей базы данных.
Разберем по шагам, почему это решение является приоритетным для 1С:
Cluster Quorum), и сеансы пользователей продолжают работу после автоматического переподключения.Важный нюанс: AlwaysOn требует редакции SQL Server Enterprise. Если вы используете редакцию Standard, вам доступны только Basic Availability Groups. Они ограничены одной базой на группу и не позволяют выполнять операции чтения на вторичном сервере, но отлично подходят для задач отказоустойчивости.
Начиная с версии платформы 8.3.14, разработчики 1С реализовали собственный механизм управления копиями. Давайте посмотрим, как это работает изнутри. Вместо того чтобы полагаться на средства СУБД, мы настраиваем копию прямо в консоли администрирования или средствами встроенного языка.
Проанализируем технологию Change Data Capture (CDC), которую использует 1С:
Data Accelerator.Посмотрим на пример того, как это выглядит в архитектуре: основная база работает в режиме записи, а тяжелые запросы из отчетов перенаправляются платформой на копию автоматически, если это настроено в параметрах запроса.
Если бюджет или версия SQL Server не позволяют настроить AlwaysOn, проанализируем проверенный временем Log Shipping. Это "репликация для бедных", которая, тем не менее, очень надежна.
Рассмотрим процесс настройки:
NORECOVERY или STANDBY).Плюсы: работает на любых редакциях SQL Server, включая Standard. Минусы: при аварии вы потеряете данные за последние несколько минут (те, что не успели уйти в последний бэкап лога).
Многие забывают, что база данных 1С — это не только таблицы в конкретной БД. Разберем, какие объекты живут "снаружи" и требуют отдельного внимания системного администратора:
master. Если вы настроили репликацию рабочей базы, но не перенесли логины, то при переключении на второй сервер 1С не сможет подключиться к базе, так как пользователь db_owner там просто не существует. Рекомендуется использовать скрипты для синхронизации логинов.msdb. Вам нужно вручную создать аналогичные задания на втором сервере и держать их в выключенном состоянии до момента активации резервного сервера.Подводя итог, проанализируем ситуацию еще раз: стандартная репликация таблиц в MSSQL для 1С — это путь, полный ошибок и потерь данных. Если перед вами стоит задача обеспечить надежность и актуальность данных на втором сервере, придерживайтесь следующего алгоритма:
Соблюдение этих архитектурных принципов позволит вам избежать ситуации, когда "на основном сервере все ОК, а на втором — пусто".