Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация. Инициализация с сохранением данных подписчика.  [new]
Иван Федорович
Guest
Здравствуйте.
Столкнулся с некоторой проблемой следующего рода.
Есть настроенная репликация транзакций.

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

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

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

Можно ли в такой ситуации, по возможности используя инициализацию из бэкапа, обновить информацию о статьях и одновременно сохранить информацию на подписчике.
Буду благодарен за помощь, потому как в вопросах репликации совсем не силён.
20 июл 12, 22:39    [12895461]     Ответить | Цитировать Сообщить модератору
 Re: Репликация. Инициализация с сохранением данных подписчика.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Покажите результат
select @@version
20 июл 12, 23:10    [12895572]     Ответить | Цитировать Сообщить модератору
 Re: Репликация. Инициализация с сохранением данных подписчика.  [new]
Иван Федорович
Guest
2005 SP2 CU 8 это публикация
2012 CU1 это подписчик

точно @@version сейчас не могу сказать - нет доступа
20 июл 12, 23:20    [12895606]     Ответить | Цитировать Сообщить модератору
 Re: Репликация. Инициализация с сохранением данных подписчика.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Иван Федорович,

1. Генерацию снепшота можно делать в неблокирующем режиме.
2. Добавление, удаление и изменение статей не требует полной реинициализации подписчика.
3. Инициализация подписки из бекапа означает восстановление БД издателя на подписчике. Соответственно, ни о каком автоматическом сохранении данных подписчика речи быть не может.
4. Если вы изначально не создавали статьи с горизонтальным фильтром, то вам не удастся проинициализировать из снепшота подписку целиком или отдельную статью, сохранив при этом локальные данные подписчика.

Резюме:
1. Хотите вы этого или нет, но придется использовать инициализацию снепшотом.
2. Вам придется постатейно модифицировать публикацию -- удалить подписку на статью -> удалить саму статью -> создать статью заново, с указанием горизонтального и вертикального фильтров -> добавить подписку на статью.

Конечно, все это сначала надо будет проделать в тестовом окружении.
21 июл 12, 00:07    [12895754]     Ответить | Цитировать Сообщить модератору
 Re: Репликация. Инициализация с сохранением данных подписчика.  [new]
Иван Федорович
Guest
ivm,
Итого, если я вас правильно понял:
1) неблокирующий режим меня не пугает, пугает сама генерация снапшота, так как есть проблемі с дисковой подсистемой и I/O. Умирает хранилище, но это уже второй вопрос. Генерация снапшота, соответсвенно, создаёт очень высокую нагрузку, из-за этого пришлось отказаться от её использования.
2) В моем конкретном случае изменённые/добавленные статьи перестали/не появились на подписчике. С чем это связанно - пытаюсь выяснить. Остальные статьи продолжают реплицироваться.
3) Можете объяснить физику процесса либо ткнуть линком ? Если бэкапы свежие и различие в данных небольшое, остальное доганяется транзакциями, почему не может быть сохранение данных именно подписчика?
4)да, статьи были без фильтров, т.к. назначение подписчика довольно специфическое - обновляться непосредственно на нем будут только таблицы, которые имеют столбцы типа Identity, так что просто identity seed было увеличено на достаточно большое значение.
Могли бы указать линк, где почитать про работу фильтров и сохранение данных подписчика ?


По инициализации снапшотом я понял.
По поводу постепенной модификации публикации - только полное удаление и воссоздание даёт возможность без реинициализации передавать её на подписчик ? Это зависит только от публикации или от так же от настроек подписчика ?

Спасибо большое за информацию.
21 июл 12, 00:48    [12895848]     Ответить | Цитировать Сообщить модератору
 Re: Репликация. Инициализация с сохранением данных подписчика.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Иван Федорович
1) неблокирующий режим меня не пугает, пугает сама генерация снапшота, так как есть проблемі с дисковой подсистемой и I/O. Умирает хранилище, но это уже второй вопрос. Генерация снапшота, соответсвенно, создаёт очень высокую нагрузку, из-за этого пришлось отказаться от её использования.
После изменений в публикации, снепшот будет сгенерирован только для добавленных статей.
Иван Федорович
2) В моем конкретном случае изменённые/добавленные статьи перестали/не появились на подписчике. С чем это связанно - пытаюсь выяснить. Остальные статьи продолжают реплицироваться.
После изменений/добавлений статей нужно вызывать на издателе sp_refreshsubscriptions.
Иван Федорович
3) Можете объяснить физику процесса либо ткнуть линком ? Если бэкапы свежие и различие в данных небольшое, остальное доганяется транзакциями, почему не может быть сохранение данных именно подписчика?
БД из резервной копии восстанавливается на уровне файлов, а не данных в них. Если какие-то данные необходимо сохранить, то нужно их выгрузить, а потом накатить.
Иван Федорович
4)да, статьи были без фильтров, т.к. назначение подписчика довольно специфическое - обновляться непосредственно на нем будут только таблицы, которые имеют столбцы типа Identity, так что просто identity seed было увеличено на достаточно большое значение.
Могли бы указать линк, где почитать про работу фильтров и сохранение данных подписчика ?
Для фильтрованных статей нужно для параметра @pre_creation_cmd процедуры sp_addarticle указывать значение delete, тогда на подписчике, при применении снепшота, из целевой таблицы будут удалены только данные, соответствующие фильтру. Подробности в документации -- http://msdn.microsoft.com/ru-ru/library/ms173857.aspx
Иван Федорович
По поводу постепенной модификации публикации - только полное удаление и воссоздание даёт возможность без реинициализации передавать её на подписчик ? Это зависит только от публикации или от так же от настроек подписчика ?
Не понял ваших вопросов.

Ну и было бы очень неплохо, накатить на издателя последний SP и последний CU для этого SP.
21 июл 12, 10:44    [12896289]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить