Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенести работающую базу на другой сервер / 17 сообщений из 17, страница 1 из 1
13.07.2018, 01:05
    #39673447
JMLabs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Передо мной стоит задача перенести базу данных на другой сервер и минимизировать время простоя сервиса. База не маленькая - 12Гб, в ней есть хранимые процедуры и вьюшки. Самое простое - сделать бекап и развернуть на новом месте не подойдет из-за длительного времени простоя. При создании репликации я сталкиваюсь с предупреждением о том что view и процедуры нужно переносить руками. В результате я не совсем понимаю как быть? Можно ли сделать бекап рабочей базы, развернуть его на новом месте а уже потом настроить репликацию чтобы дореплицировалось только то что появилось за время переноса бекапа?
В идеале бы я хотел иметь 2 синхронные базы с которыми я бы мог работать одновременно, т.е. изменения в любой транслируются в другую базу. Помогите, пожалуйста, советом.
...
Рейтинг: 0 / 0
13.07.2018, 01:09
    #39673448
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
JMLabs База не маленькая - 12Гб,Маленькая
JMLabs Самое простое - сделать бекап и развернуть на новом месте не подойдет из-за длительного времени простоя.Сделать полный бакап, а в момент Х сделать дифференциальный и накатить. Бакапчик будет маленький, быстро сделается, быстро скопируется и быстро накатится.
За репликацию не скажу. Двунаправленная репликация зло, чреватое конфликтами
...
Рейтинг: 0 / 0
13.07.2018, 02:07
    #39673452
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Mirroring, Log Shipping - не предлагать?
...
Рейтинг: 0 / 0
13.07.2018, 09:30
    #39673528
JMLabs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
SERG1257Сделать полный бакап, а в момент Х сделать дифференциальный и накатить.
Спасибо за идею, я раньше так не пробовал делать.

Relic HunterMirroring, Log Shipping - не предлагать?
Насколько я знаю Mirroring держит базу приемник в состоянии недоступном для чтения. Чтобы она стала рабочей, нужно разорвать зеркалирование. Вероятно это тоже путь. Про Log Shipping ничего сказать не могу, т.к. ни разу не делал.

Мне не хватает опыта практического применения технологий, которые есть в арсенале SQL. Понятно, что та или иная репликация или зеркалирование может решить мою задачу, но возникает масса подводных камней, а у меня только 1 попытка все сделать правильно. Например с зеркалированием, судя по отзывам, именно оно позволяет универсально транслировать любую базу (а для репликации нужно готовить базу), но у меня был неудачный опыт когда из-за небольшого сбоя сети начинал непомерно расти лог, который заполнял диск и все падало. Знаю, что зеркалирование отлично работает в случае если сервера стоят рядом, но у меня сервера на разных площадках и связь через интернет.
...
Рейтинг: 0 / 0
13.07.2018, 09:50
    #39673537
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
JMLabsПонятно, что та или иная репликация или зеркалирование может решить мою задачу, но возникает масса подводных камней, а у меня только 1 попытка все сделать правильно.Да, самый простой путь - полный бакап, потом непосредственно перед переключением снять и накатить дифф бакап, как уже предложил SERG1257.
Можно даже 2 раза с дифф бакапом - пользователей отключать после первого раза, и быстро сделать, копировать и накатывать второй дифф. И потом сразу включить пользователей. Для надёжности провести тренировки.
...
Рейтинг: 0 / 0
13.07.2018, 16:46
    #39673821
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Настраивать Mirroring для одномоментной акции это "из пушки по воробьям", особенно для новичка
Log Shipping уже лучше. По сути заменив diff бакап log бакапом мы его и реализуем в ручном режиме.

JMLabs а у меня только 1 попытка все сделать правильноНа самом деле ничего сложного нет, если убрать суровое требование "2 синхронные базы с которыми я бы мог работать одновременно, т.е. изменения в любой транслируются в другую базу".
Базу источник сразу после бакапа надо перевести в offline, чтобы те, кто не обновил строку подключения, получали ошибку.
...
Рейтинг: 0 / 0
13.07.2018, 17:43
    #39673846
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
SERG1257Настраивать Mirroring для одномоментной акции это "из пушки по воробьям", особенно для новичка
Log Shipping уже лучше. По сути заменив diff бакап log бакапом мы его и реализуем в ручном режиме.

JMLabs а у меня только 1 попытка все сделать правильноНа самом деле ничего сложного нет, если убрать суровое требование "2 синхронные базы с которыми я бы мог работать одновременно, т.е. изменения в любой транслируются в другую базу".
Базу источник сразу после бакапа надо перевести в offline, чтобы те, кто не обновил строку подключения, получали ошибку.Направильно. После полного бэкапа базу-исчтоник надо перевести в ReadOnly, чтобы исключить дальнейшую модификацию, и сделать после этого бэкап лога (который так же надо будет восстановить). Потом уже оффлайнить.
...
Рейтинг: 0 / 0
13.07.2018, 18:07
    #39673859
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Если у автора полная модель восстановления, то достаточно бэкапа журнала к бэкапу базы. Перед этим выгнать всех пользователей (отключить IP протокол, например, в настройках соединения или иным способом) и остановить SQL Agent.
...
Рейтинг: 0 / 0
13.07.2018, 18:51
    #39673875
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Владислав КолосовЕсли у автора полная модель восстановления, то достаточно бэкапа журнала к бэкапу базы. Перед этим выгнать всех пользователей (отключить IP протокол, например, в настройках соединения или иным способом) и остановить SQL Agent.Чтобы исчключить модификацию данных есть способ гораздо проще и надежней.
...
Рейтинг: 0 / 0
14.07.2018, 01:03
    #39673924
JMLabs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
У меня simple модель.
По поводу дифф бекапа хотел спросить. Где система берет информацию с какого момента нужно делать дифф бекап? Правильно ли я понимаю что SQL запоминает когда был сделан последний полный бекап и относительно него делает дифф бекап?

Гавриленко Сергей АлексеевичЧтобы исчключить модификацию данных есть способ гораздо проще и надежней.
Как? Поделитесь пож
...
Рейтинг: 0 / 0
14.07.2018, 01:29
    #39673925
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
JMLabsУ меня simple модель.
По поводу дифф бекапа хотел спросить. Где система берет информацию с какого момента нужно делать дифф бекап? Правильно ли я понимаю что SQL запоминает когда был сделан последний полный бекап и относительно него делает дифф бекап?

Гавриленко Сергей АлексеевичЧтобы исчключить модификацию данных есть способ гораздо проще и надежней.
Как? Поделитесь пожКак я отмечал выше:
Код: sql
1.
alter database ... set read_only with rollback immediate
...
Рейтинг: 0 / 0
14.07.2018, 11:11
    #39673964
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
JMLabsГде система берет информацию с какого момента нужно делать дифф бекап? Правильно ли я понимаю что SQL запоминает когда был сделан последний полный бекап и относительно него делает дифф бекап?В базе хранится битовая карта экстентов, изменённых после последнего полного бакапа. Любое изменение страниц меняет там биты. А дифф-бакап сканирует эту карту, делая бакап только изменённых страниц.
...
Рейтинг: 0 / 0
14.07.2018, 19:03
    #39674039
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
12 Тб может быть?
12Гб забекапить-скопировать-восстановить - это минут 10 отсилы.
...
Рейтинг: 0 / 0
15.07.2018, 17:56
    #39674208
JMLabs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
uaggster12 Тб может быть?
12Гб забекапить-скопировать-восстановить - это минут 10 отсилы.
Нет, у меня 12Гб, вообще сомнительная бравада - чтобы протолкнуть 12 Гб по сети нужна скорость 164 мегабит, в локальной сети возможно, но интернет - врядли. По факту у меня 10 минут только бекап делается.
...
Рейтинг: 0 / 0
15.07.2018, 18:20
    #39674215
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Надеюсь версия позволяет делать сжатый бакап?
https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/backup-compression-sql-server?view=sql-server-2017
...
Рейтинг: 0 / 0
15.07.2018, 19:07
    #39674224
JMLabs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
SERG1257Надеюсь версия позволяет делать сжатый бакап?
https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/backup-compression-sql-server?view=sql-server-2017

Да, можно делать сжатый бекап. Я думаю реализовать идею с дифф бекапом, хочу понять, правильно ли я рассуждаю: после полного бекапа в базе хранится битовая карта экстентов, как написал alexeyvg, т.е. мои действия буквально:
1. снять полный бекап
2. мувнуть его на новую площадку
3. развернуть обычным способом
4. в нужный момент сделать дифф бекап (при этом в бекап сохранятся только изменения после полного бекапа)
5. мувнуть и накатить дифф бекап на новой площадке

Такой вопрос: а если на новой площадке поле разворота полного бекапа в базе будут изменения, как накатится дифф бекап? Или не накатится?
...
Рейтинг: 0 / 0
15.07.2018, 20:32
    #39674242
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенести работающую базу на другой сервер
Немного не так
На старом месте за час(два/три) до времени Ч делаете полный бакап
На новом месте восстанавливаете его с NORECOVERY
https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-2017#comparison-of-recovery-and-norecovery
База при этом будет недоступна, но на нее можно будет накатить дифф
В момент времени Ч переводите базу в read-only
Это нужно для того чтобы за время создания дифф (пусть короткое) никто ничего не записал в старую базу (чтобы значит наверняка)
Делаете дифф и переводите базу в оффлайн - теперь все будут получать отлуп
Восстанавливаете дифф с recovery - теперь база доступна, но все еще в read-only
Переводите ее в read_write
Все

Итого время простоя -
alter datatabase mybase set read_only with rollback immediate
дифф бакап
копирование на другой сервер
восстановление
alter datatabase mybase set read_write with rollback immediate

если пропустить переключения в read_only и назад
(только полный бакап дифф бакап и восстановления) можно проводить тесты, писать скрипты и замерять сколько точно это займет
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенести работающую базу на другой сервер / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]