|
Актуализация базы
|
|||
---|---|---|---|
#18+
Добрый день. Прошу помочь определить оптимальную схему репликации. Есть два сервера СУБД - условно прод и тест. Нужно несколько раз в день получать все изменения с прода и обновлять тест (желательно минимизировать время восстановления). При этом после обновления в тесте базы должны быть online и данные доступны для изменения. Пользователи проводят тестирование выделенное время, далее цикл повторяется - внесенные изменения в тесте откатываются/удаляются и выполняется обновление данными прода. Базы ~2ТБ, полное восстановление занимает 16 часов. За сутки в проде обновляется ~5% записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2021, 22:41 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok, Используйте возможности схд ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2021, 23:02 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
решение "в лоб" имеем две базы RESTORING и DEV при том что RESTORING будет восстановлена с NORECOVERY, а DEV с RECOVERY Меняем DEV как хотим. Далее переводим RESTORING в STANDBY и затем в OFFLINE Переводим DEV в OFFLINE Перезаписываем файлы данных (mdf) и файл лога (ldf) на тот что из RESTORING Тут надо померить будет ли выгода по времени по сравнению с восстановлением открываем обе базы в онлайн Накатываем логи на RESTORING Другой вопрос можно ли разбить большие таблицы на текущие данные (в PRIMARY файловой группе) и архивные (в READ_ONLY файловой группе). Тогда архивную файловую группу можно будет пропустить. Это имеет смысл сделать даже вне контекста "Актуализации базы" чисто для ускорения бакапа и восстановления ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 01:13 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok, для тестирования, как правило, не требуются " все изменения с прода", а если требуются, то такая частая загрузка не нужна. Надо у вас что-то в консерватории тестировщиков подправить... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 10:53 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok, как идея - можно попробовать Transactional replication и snapshot. С прода в тест настроить репликацию. В нужный момент её останавливать и делать снэпшот базы. Проводить тестирование и восстанавливать базу в исходное состояние из снэпшота. Запускать репликацию для синхронизации с продом (тут надо проверить, сработает ли). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 11:19 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
Критик huttorok, Используйте возможности схд Все остальные предложенные варианты предполагают в каком то виде копирование данных, и очень быстро это сделать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 20:47 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok Добрый день. Прошу помочь определить оптимальную схему репликации. Есть два сервера СУБД - условно прод и тест. Нужно несколько раз в день получать все изменения с прода и обновлять тест (желательно минимизировать время восстановления). При этом после обновления в тесте базы должны быть online и данные доступны для изменения. Пользователи проводят тестирование выделенное время, далее цикл повторяется - внесенные изменения в тесте откатываются/удаляются и выполняется обновление данными прода. Базы ~2ТБ, полное восстановление занимает 16 часов. За сутки в проде обновляется ~5% записей. Восстановление 2-х ТБ базы за 16 часов - что-то долго. Можно попробовать сделать следующее - после восстановления базы на Тесте устанавливаем GoldenGate for SQL Server на Проде и на Тесте, настраиваем и запускаем репликацию с Прода на Тест. Перед тем как начинается тестирование останавливаем репликацию на Тесте, снимаем Database snapshot, и отдаем базу на тестирование. По завершении тестирования восстанавливаем базу из snapshot и вновь запускаем GoldenGate репликацию. Сам так не делал, но вполне возможно что сработает. Ради интереса завтра попробую сделать такое между двумя серверами на Тесте. Надо иметь ввиду что GoldenGate стоит денег. Преимущество в том что GG читает данные из transaction log файла, его можно остановить в любой момент и продолжить с той же точки, на которой остановился. Небольшое сомнение вызывает восстановление из snapshot, но это я проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 21:49 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
Спасибо за ответы. В целом какой-то "серебряной пули" для решения задачи я так понял нет. Буду думать в направлении разделения больших таблиц на текущие данные и архивные. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 21:54 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
flexgen, вроде по описанию что-то похожее можно сделать и на репликации слиянием. Но возникают вопросы - на сколько она вообще эффективна. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2021, 22:04 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok, серебряная пуля есть - это сделать менее ... экзотическим процесс тестирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 10:53 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok В целом какой-то "серебряной пули" для решения задачи я так понял нет. Но недешёвая пуля, не серебряная :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 18:43 |
|
Актуализация базы
|
|||
---|---|---|---|
#18+
huttorok вроде по описанию что-то похожее можно сделать и на репликации слиянием. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2021, 18:46 |
|
|
start [/forum/topic.php?fid=46&msg=40110840&tid=1684116]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
130ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 225ms |
0 / 0 |