Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Репликация большой базы  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1475
Есть задача копирования данных. Настроена реплиакация большой базы больше 20 млн записей. Начальный снепшот занимает час! И на это время база блокируется. Как можно избежать этой задержки? Например, можно ли сделать полный бекап, восстановить на репликационном сервере и пустить репликацию?

С уважением, Князев Константин
26 фев 06, 13:17    [2390659]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
BigNik
Member

Откуда: Красноярск\Москва
Сообщений: 226
Зачем полную репликацию делаешь, попробуй merge, может для твоих нужд он лучше подайдет
26 фев 06, 13:29    [2390739]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
2BigNik: закачка начального снапшота на подписчика не означает, что это снапшот-репликация.

2Zelius:
Initializing a Merge Subscription Without a Snapshot
Initializing a Transactional Subscription Without a Snapshot
26 фев 06, 13:40    [2390808]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1475
2GreenSunrise
Хмм... Вообще-то, это то что нужно, но похоже что работает только для MSSQL 2005. Я правильно понял?

С уважением, Князев Константин
26 фев 06, 15:32    [2391322]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Правильно. Вы же в вопросе не указали ни версию сиквела, ни тип репликации.
26 фев 06, 16:02    [2391454]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1475
Конфуз! Прошу прощения. MSSQL 2000, транзакционная репликация.

С уважением, Князев Константин
26 фев 06, 17:14    [2391759]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Можно попробовать тот же принцип. Только сначала на тестовых серверах.
26 фев 06, 17:40    [2391872]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1475
В 2000ом нет поля allow_initialize_from_backup. Хотя конечно проще попробовать на примере...

С уважением, Князев Константин
26 фев 06, 17:52    [2391928]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Аналогичную статью для 2000 мне не удалось найти.

Можно попробовать обходной вариант: делаем бэкап базы паблишера, потом восстанавливаем на подписчике, потом создаем подписку, выбирая опцию "Subscriber already has schema and data". Но у меня есть подозрение, что в этом случае надо запретить всю работу с базой паблишера с момента бэкапа до момента настройки подписки, иначе изменения, сделанные в этот период, могут на подписчика и не попасть. В общем, тестировать надо.
26 фев 06, 18:04    [2392000]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
andsm
Member

Откуда: Москва
Сообщений: 1319
Блог
Zelius
Есть задача копирования данных. Настроена реплиакация большой базы больше 20 млн записей. Начальный снепшот занимает час! И на это время база блокируется. Как можно избежать этой задержки? Например, можно ли сделать полный бекап, восстановить на репликационном сервере и пустить репликацию?

С уважением, Князев Константин

Если транзакционная репликация -
Использользовать снапшот с опцией @sync_type = 'concurrent' или 'character_c'. Быть готовым к тому что первое применение такого снапшота не получится из-за баги в SQL2k. Эта бага вероятно есть во всех сервис-паках. Тестировал на SP4, там бага есть. После того как снапшот создан и, если при применении снапшота на подписчик увидите ошибки о 'variable @cxx must be declared', ошибку надо фиксить. Эта ошибка возникает только на при создании снапшота транзакционной репликации на серверах находящихся под нагрузкой. Если увидели эту ошибку, то надо убирать 2-ой бит в option_schema, который говорит что нужно создавать хранимые процедуры репликации. Сгенерить их самому, с использованием процедуры sp_createcustomreplprocs (как-то так называется). Затем, дополнительно, сгенерить процедуры c такими же именами и сигнатурой, но с дополнительным постфиксом ';2'. В них, в 'sp_MSInsTablename;2' реализовать логику - проверять что такая запись, с таким значением первичного ключа, существует. Если существует, обновлять ее, иначе вставлять. При малом количестве таблиц можно эти процедуры написать руками, иначе нужно писать генератор.
26 фев 06, 18:36    [2392155]     Ответить | Цитировать Сообщить модератору
 Re: Репликация большой базы  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1475
Спасибо, нашел эту галку в свойствах публикации и это решило проблему! Ошибок не выскакивало, все прошло гладко! Спасибо!

С уважением, Князев Константин
26 фев 06, 20:07    [2392406]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить