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

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

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

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

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

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

Гавриленко Сергей АлексеевичЧтобы исчключить модификацию данных есть способ гораздо проще и надежней.
Как? Поделитесь пожКак я отмечал выше:
Код: sql
1.
alter database ... set read_only with rollback immediate
...
Рейтинг: 0 / 0
Перенести работающую базу на другой сервер
    #39673964
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JMLabsГде система берет информацию с какого момента нужно делать дифф бекап? Правильно ли я понимаю что SQL запоминает когда был сделан последний полный бекап и относительно него делает дифф бекап?В базе хранится битовая карта экстентов, изменённых после последнего полного бакапа. Любое изменение страниц меняет там биты. А дифф-бакап сканирует эту карту, делая бакап только изменённых страниц.
...
Рейтинг: 0 / 0
Перенести работающую базу на другой сервер
    #39674039
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
12 Тб может быть?
12Гб забекапить-скопировать-восстановить - это минут 10 отсилы.
...
Рейтинг: 0 / 0
Перенести работающую базу на другой сервер
    #39674208
JMLabs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster12 Тб может быть?
12Гб забекапить-скопировать-восстановить - это минут 10 отсилы.
Нет, у меня 12Гб, вообще сомнительная бравада - чтобы протолкнуть 12 Гб по сети нужна скорость 164 мегабит, в локальной сети возможно, но интернет - врядли. По факту у меня 10 минут только бекап делается.
...
Рейтинг: 0 / 0
Перенести работающую базу на другой сервер
    #39674215
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь версия позволяет делать сжатый бакап?
https://docs.microsoft.com/en-us/sql/relational-databases/backup-restore/backup-compression-sql-server?view=sql-server-2017
...
Рейтинг: 0 / 0
Перенести работающую базу на другой сервер
    #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
Перенести работающую базу на другой сервер
    #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
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перенести работающую базу на другой сервер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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