Схема схеми SQL Server 2014 змінюється в середовищі користувачів 24/7 для кількох користувачів


12

У нас встановлено SQL Server 2014 Enterprise для запуску бази даних, яка повинна бути доступною 24/7. Наша база даних величезна (200 Гбіт +). Також у нас є безліч сервісів, які щохвилини потрапляють у нашу базу даних для читання, оновлення або вставки нових даних. Ми хочемо надати «гарячу» функцію повторного використання для наших клієнтів та зробити наші щоденні оновлення (.net та оновлення схеми) прозорими для клієнтів. Ми знайшли рішення, засноване на кластері з балансиром завантаження, щоб оновити бінарні файли нашого додатка, але ми все ще маємо непорозуміння щодо процесу розгортання бази даних та які найкращі практики вирішити цю проблему.

Для змін схеми зведіть один сервер, застосуйте зміни схеми, поверніть їх назад, а потім застосуйте ті самі зміни до другої інстанції. Чи можна це досягти за допомогою інструментів SQL Server, і чи це загальний підхід? Як синхронізувати дані після резервного копіювання сервера? Або я повністю замислююся в неправильному напрямку і чи є кращі рішення?

Наша загальна схема зміни: додавання / випадання стовпця, додавання / видалення збереженої процедури


Який у вас поточний макет SQL? Скупчений? Завжди? Дзеркальним? Один екземпляр?
LowlyDBA

На сьогоднішній день у нас є одиничний екземпляр, але ми можемо змінити його відповідно до вимог, додати новий сервер тощо
Шмітов Михайло

4
Вам слід дотримуватися синьо-зеленого підходу, таким чином ви можете мати живу систему (зелену) та робити оновлення на інсценізації (синій), а потім перемикати ролі. Це те, що ми реалізували за допомогою AlwaysON, і це працює для нас - майже той самий сценарій. Це вимагає належного планування, впровадження та тестування.
Кін Шах

Чи можете ви дати мені, будь ласка, більш детальний сценарій, наприклад, для зміни схеми видалення стовпців?
Шмітов Михайло

Поясніть попередній коментар, я переключив первинні (S1) / вторинні (S2) вузли в інфраструктурі AlwaysOn, тоді я вирішив видалити кілька стовпців із схеми на Replica (S1, це було первинним перед перемиканням), але я все одно можу отримати деякі дані реплікації від S2 з цим стовпцем у таблиці .... як я можу впоратися з цим питанням?
Шмітов Михайло

Відповіді:


1

Нижче знадобиться трохи більше планування та тестування.


Синьо-зелена концепція:


Суть Blue-Green Concept полягає в тому, щоб розділити ваше виробництво на 2 середовища, і вони завжди однакові (синхронізація даних), де

  1. Синій (Поточний) матиме поточну версію схеми / збірки або продукту і буде вашим середовищем "LIVE".

  2. У той же час Green буде вашим середовищем для постановки / тестування, в якому ви будете модернізувати свою схему / збірку або продукт до випуску NEXT, пройдете повний тест регресії та підпишитесь на бізнес-користувачів. Коли ви щасливі, під час перерізного періоду ви просуватимете Зелене, щоб воно було вашим "LIVE" середовищем, і знищити Blue, щоб бути попередньою підготовкою / постановкою або тестуванням для наступного випуску.

Таким чином, у вас є дуже менший час простою, і ризик виходу з ладу в реальній системі (що знаходиться у вікні обслуговування, оскільки ви робите оновлення) буде зведений до мінімуму. Крім того, дотримуючись синьо-зеленого підходу, ви будете коливатися між LIVE та PRIVIOUS версією, яка буде стадією для наступної версії.

Знову ж таки, це потребує більшого обладнання / ліцензування, а також планування та тестування.

Більшість кроків можна автоматизувати за допомогою DACPAC і PowerShell. Крім того, якщо ви встановлюєте кілька екземплярів на одному сервері, переконайтесь, що перезбалансуйте параметри пам'яті при переключенні між синім та зеленим. Навколишнє середовище LIVE отримує більше пам'яті, ніж пасивне.

У моєму теперішньому середовищі ми впровадили синьо / зелену модель для розгортання кодового коду, яка дозволяє просувати код кожні 2 тижні з достатньою кількістю часу для тестування та виходу з бізнесу. Крім того, його легкий вітер відкатати, якщо щось піде жахливо не так. Ми автоматизували більшість матеріалів розгортання за допомогою Dacpacs та PowerShell.

введіть тут опис зображення (Джерело зображення)

Також дивіться статтю Гранта Фрітчі про усунення несправностей; Виклики та стратегії


0

Якщо ваша база даних не реплікується, стовпці для додавання та падіння будуть запускатися дуже швидко. Тому що додавання стовпця - це лише порожня позиція, яку створює SQL. Стовпчик "Drop" просто видалить посилання.

В іншому випадку, якщо на цьому є якесь обмеження або індекс, будьте обережні.

ADD/DELETEпроцедури якраз будуть впливати на сам виконати. Рекомендація - перед будь-якими змінами на ній запустіть рекомпіляцію

sp_recompile 'myproc'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.