Я работаю с SQL-сервером, начиная с SQL Server 6.5, и старый совет, который до сих пор звучит в моей голове, никогда не состоял в обновлении на месте.
В настоящее время я модернизирую свои системы DEV R2 и TEST 2008 R2 до SQL Server 2012, и мне нужно использовать то же оборудование. Мысль о том, что мне не нужно восстанавливать конфигурацию моих служб отчетов, очень привлекательна, и я действительно настроен против стены. Там нет задействованных служб анализа или чего-то необычного или нестандартного - только ядро базы данных и службы отчетов установлены.
Кто-нибудь испытывал серьезные проблемы с обновлениями на месте? Или я должен переоценить свою позицию относительно обновлений на месте?
sql-server
sql-server-2012
migration
upgrade
ssrs
Поврежденные товары
источник
источник
Ответы:
Действительно короткий ответ - на месте все в порядке. После этого вы можете просмотреть свою конфигурацию и внедрить лучшие практики для SQL Server 2012.
Более длинный ответ на обновления / миграции SQL Server
Так что это вопрос мнений, и нет обязательно неправильного или правильного ответа, но я предпочитаю обновления стиля миграции по месту по многим причинам. При этом у некоторых моих клиентов по разным причинам не было иного выбора, кроме как сделать их на месте, и действительно, начиная с SQL Server 2005, обновления на месте не были такими плохими, как раньше.
Почему я предпочитаю переход на обновление на месте
Имейте в виду, я не говорю, что вы должны сделать это как миграцию. In-Place работает и работает хорошо, если вы не планируете покупать новое оборудование в своем бюджете и не можете сделать это для этого обновления. Поддержка в процессе обновления намного лучше, чем была за 6,5 дней, поэтому вы не ставите себя в плохое положение, делая это.
Если вы планируете делать на месте для dev / test, но хотите выполнить миграцию для рабочей среды, вы можете рассмотреть возможность выполнения хотя бы одной миграции перед производством. Таким образом, вы можете заранее составить свой контрольный список и решить любые потенциальные проблемы, о которых вы не задумывались.
Присоединение / Открепление или Резервное копирование / Восстановление для Миграций
Если вы решите использовать миграционный подход, есть еще одно решение, о котором вы все еще можете спорить, и именно так вы перенесете свою базу данных в новую среду. Вы можете либо отсоединить свою базу данных от старого сервера и прикрепить ее к новому, либо создать резервную копию и восстановить ее там.
Я предпочитаю резервное копирование / восстановление. Самое большое преимущество, которое я слышу о detach / attach - это то, что это экономит время. Для меня резервное копирование / восстановление выигрывает по нескольким причинам:
Если вы решили выполнить резервное копирование / восстановление - это означает, что ваша старая исходная база данных все еще будет в сети. Мне нравится переводить эту базу данных в автономный режим после создания резервной копии. Иногда я захожу на шаг дальше и отключаю весь экземпляр SQL после того, как написал сценарий безопасности, заданий, связанного сервера, сертификатов, настроек почты базы данных и другой информации, относящейся ко всему экземпляру. Это позволяет избежать проблем во время тестирования, когда кто-то говорит: «Все выглядит отлично!» только через день или два понял, что они разговаривали со старой базой данных на старом сервере. Перевод этих баз данных в автономный режим или отключение всего экземпляра позволяет предотвратить ложные срабатывания и беспорядок, который они создают.
Как сделать миграционный подход быстрее
Вы можете минимизировать время простоя, необходимое для перехода со старой на новую среду для загруженной производственной среды с небольшим временем простоя, используя модель полного восстановления. По сути - подготовьте среду, в которую вы переходите, восстановив последнюю полную резервную копию, указав
NORECOVERY
все разностные резервные копии и все уже сделанные резервные копии журналов, - тогда все, что вам нужно будет сделать для окончательного сокращения, - это восстановить резервные копии журналов, которые еще не были восстановлены, и окончательная резервная копия журнала, которую вы хотите восстановить, указавWITH RECOVERY
. Таким образом, для большой базы данных фактическое окно простоя может быть существенно минимизировано путем оплаты стоимости полного, разностного восстановления и восстановления большинства журналов до времени простоя. Спасибо Тао за то, что указал на это в комментариях!Как сделать обновление на месте более безопасным
Несколько вещей, которые вы можете сделать, чтобы улучшить свой опыт и результаты при выборе подхода на месте.
Важность контрольных списков обновления или миграции
Если вы решили выполнить обновление (на месте или при переносе), вам следует серьезно подумать о создании контрольного списка и использовании этого контрольного списка в каждой среде. Вы должны включить кучу вещей в этот контрольный список, не в последнюю очередь из которых:
Затем попросите человека, который будет выполнять модернизацию производства, следовать контрольному списку в какой-либо среде, отличной от производственной, особенно закрывающаяся, если это возможно, напоминает производственную (например, «К югу от производства») и отмечать любые проблемы или моменты. где они должны были отклониться от контрольного списка или импровизировать из-за отсутствия контрольного списка. Затем объедините изменения и повеселитесь с производственными изменениями.
Я не могу переоценить важность тщательного тестирования после перенастройки или апгрейда и до того, как вы перейдете к миграции. Решение об откате в процессе обновления должно быть простым, особенно во время миграции. Если есть что-то неудобное, откатитесь и выясните это, если вы не можете эффективно и надежно устранить неполадки в разгар миграции. Если вы живете в этой новой среде и пользователи подключаются, откат становится сложной задачей. Вы не можете восстановить базу данных SQL Server до более ранней версии. Это означает ручную работу и миграцию данных. Я всегда жду пару недель, чтобы убить старую среду, но вы должны сделать все возможное, чтобы избежать необходимости в этой старой среде, найти все свои проблемы, прежде чем ваши живые пользователи когда-либо коснутся новой среды. Желательно, прежде чем вы даже начать обновление / миграцию.
Краткое примечание о миграции / обновлении служб отчетов SQL Server. Миграция установки SSRS - не такая уж и сложная задача, как многие думают. Эта техническая / книжная онлайн-статья на самом деле очень удобна . Одним из наиболее важных указаний в этой статье является «Резервное копирование ключей шифрования», особенно если у вас много сохраненной конфиденциальной информации, такой как запланированные адреса электронной почты получателя отчета, информация о соединении для множества соединений и т. Д. Вы Я могу спросить одного из моих клиентов с недавнего времени, насколько это важно. Они знают, потому что я испортил этот шаг и потратил довольно много времени на изменение расписаний отчетов и разрешений строки подключения.
источник
По моему опыту, процесс принятия решений должен быть таким же, как и раньше. AFAIK Не было никаких «преобразователей мира» с установкой SQL Server, в самом продукте MS SQL Server, и с потенциальными проблемами, возникающими при развертывании программного обеспечения с миллионами строк кода. Может случиться что-то плохое, и теперь вы застряли без опции «ROLLBACK».
Однако у вас есть другие альтернативы. Вы можете сделать снимок системы, восстановить в другом месте, выполнить обновление и посмотреть, что произойдет. Этот тест должен дать вам много комфорта, но он не гарантирует, что на коробке с продуктом проблем не возникнет. Однако этот параметр недоступен в SQL 6.5 дней.
Я бы просто предположил худший вариант развития событий. Вы делаете обновление на месте, и оно терпит неудачу. Затем вы должны оправиться от этого в RTO и RCO. Понимает ли бизнес риски и есть ли у вас планы по его снижению?
Если с этим не все в порядке, то не советую.
источник
Если ваши серверы работают в виртуальной среде, вы можете сделать моментальный снимок для клона, а затем применить обновление на месте и протестировать экземпляр, чтобы убедиться, что обновление прошло успешно. Если это работает, вы можете применить снимок и сделать клон производственным сервером. Если он работает плохо, вы можете удалить снимок и вернуться к образу перед обновлением, чтобы повторить попытку, или удалить клон и выполнить полную миграцию.
источник
Из-за больших вложений в оборудование нам потребовалось обновить только ОС, сохранив текущую версию SQL Server (2012, 3 сервера, 22 экземпляра, ~ 300 баз данных). Нет сложных настроек, таких как зеркалирование и т. Д.
Этот пример не соответствует вопросу точно, так как SQL Server не обновляется. Я думаю, что это все еще хороший ответ, потому что показанные шаги были бы на самом деле проще, чем истинная миграция на месте.
Обзор: внешний диск был подключен для полного резервного копирования, главным образом, в качестве меры предосторожности. Только модель и msdb будут фактически восстановлены с внешнего диска. Ldf / mdf были оставлены на месте для открепления / прикрепления. Некоторые локальные учетные записи были указаны в БД. После того, как они были воссозданы в ОС, ссылки в БД были воссозданы (поскольку SID могут измениться).
Тогда вот шаги, которые работали для нас:
1) Запомните настройки уровня сервера, которые будут восстановлены в шагах 12 (Роли сервера) и с 18 по 23.
2) Исправление SQL Server 2012 с пакетом обновления 3 (требуется согласованность, если мы хотим восстановить какие-либо системные БД).
3) Проверьте соответствие версий на каждом экземпляре. «Выберите @@ версию»
4) Сгенерируйте эти 6 сценариев, запустив этот сценарий. Redgate SQL Multiscript позволяет сэкономить много времени, если имеется много экземпляров (установите Максимальные значения инструментов -> Параметры => Длина строки (8192), а затем используйте вывод текста).
Привязать пользователей к логинам
5) Запустите скрипт для резервного копирования всех БД, включая систему (master, msdb, модель), на внешний диск.
6) Запустите скрипт, чтобы отсоединить все БД
7) C диск будет переформатирован. Сохраните LDF / MDF, если они НЕ были на C.
8) Windows Server 2012 установлен на C
9) Переместите LDF / MDF для оригинальных системных файлов, если их не было на диске C.
10) SQL Server 2012 будет переустановлен и исправлен до SP3 a. Пересоздать системные учетные записи пользователей / групп
11) Резервное копирование системных БД в новое место или имя файла (будьте осторожны, чтобы не перезаписать оригиналы!).
12) Запустить воссоздание ролей ролей. Что-то вроде:
13) Запустить сценарий повторного входа в систему (ничего не делает, если логины были восстановлены)
14) Стоп SQL АГЕНТ.
(Могли восстановить Мастера здесь, мы скушались).
15) Присоедините mdf / ldf, используя скрипт сверху. а. В случае неудачи восстановите вручную из bak, используя скрипт сверху.
16) Попытка восстановления модели
17) Убедитесь, что агент SQL остановлен. Восстановить MSDB (ссылка) a. Если не получится, нужно заново создать рабочие места + план обслуживания + настройки почты + операторы
18) Скрипт Open User To Login ...
19) Включите компонент Service Broker, чтобы он соответствовал исходному значению SELECT name, is_broker_enabled FROM sys.databases;
20) Запустите агент SQL
21) Установите порог параллелизма на исходное значение
22) Настройте любые параметры базы данных на исходные значения:
23) Проверьте право собственности на работу:
Если бы версия SQL Server также была обновлена, я не верю, что базы данных модели и базы данных msdb могли быть восстановлены, поэтому задания могли быть потеряны из-за https://support.microsoft.com/en-us/kb/264474.
Чего не хватает:
источник
Нет ничего плохого в любом подходе как таковом - я сделал оба, и оба результата, как правило, хороши.
Если есть проблема с миграционным подходом, это не техническая проблема: это лень. Слишком часто я обнаруживаю, что причина, по которой компания еще не полностью перешла на версию xxxx, заключается в том, что они выбрали свинг-миграцию и никогда не удосужились выполнить тяжелую работу, чтобы полностью перейти. Теперь у них есть два или более набора серверов вместо одного.
источник