Чи можна поліпшити стійкість до збоїв у системі SQL Server?


20

У нас є ПК, на яких працює SQL Server (SP4 2008 та SP1 2016), які регулярно втрачають силу. Очевидно, це іноді призводить до (індексу) пошкодження бази даних SQL Server, яку нам потрібно відновити згодом.

Мені відомо, що SQL Server не розроблений для подібних сценаріїв, і правильне рішення - це виправити причину втрати електроенергії (детальніше про це нижче, якщо вам цікаво). Тим не менш, чи є параметри настройки в SQL Server, які я можу встановити, щоб зменшити ризик пошкодження бази даних при втраті електроенергії ?


Передумови: "ПК" - це планшетний ПК Windows, встановлений на навантажувачі. Коли користувач вимикає навантажувач, планшет втрачає потужність. Ми намагалися навчити користувачів правильно вимикати Windows перед вимкненням навантажувача, але не вдалося (можливо, тому що саме його вимкнення «працює» більшу частину часу). Зараз ми також досліджуємо інші варіанти, такі як додавання ДБЖ, що сигналізує планшету про вимкнення втрати електроенергії.

Відповіді:


28

Мені відомо, що SQL Server не розроблений для таких сценаріїв, і правильним рішенням є виправлення причини втрати електроенергії […]

Насправді він розроблений для боротьби з втратами живлення, тому є такі речі, як запис вперед (WAL) запису і відновлення після аварійного запуску (або як би ви хотіли це назвати). Один із способів цього зробити, це вибрати, щоб не кешувати записи, які, здається, це те, що робить планшет, отже, корупція.

Тим не менш, чи є параметри настройки в SQL Server, які я можу встановити, щоб зменшити ризик пошкодження бази даних при втраті електроенергії?

Ні, SQL Server робить все, що повинен. Ви повинні шукати або поза SQL Server (налаштування Windows для кешування диска [який SQL хоче вимкнути, але ми не можемо вас змусити], оновлення апаратного / програмного забезпечення тощо), або, як сказав Ерік, придбати зовнішній блок живлення відносно дешевий, який міг би вирішити симптоми (фактична проблема, ймовірно, є якийсь тип кешування або резервне копіювання батареї, яке насправді не підтримується).



1
Я досить гадаю, яка установка є винуватцем, якщо це проблема ОС . (хоча, мабуть, це одна із старих вбудованих ОС, якщо я б здогадався, ніколи не перевіряв, чи є у них і ця настройка). І тоді, принаймні, більшість жорстких дисків споживача безсоромно брешуть про те, що вони завершили написання з "причин оптимізації продуктивності", тому в основному на них немає жодної надії.
Voo

26

Якщо планшетний ПК має працюючий акумулятор , ви можете налаштувати Windows, щоб він вимикався, коли енергія акумулятора низька .

Якщо планшетний ПК має непрацюючий акумулятор , подумайте про його заміну. (У мене були такі ноутбуки - ви здивуєтеся, як недорогі акумуляторні батареї можуть бути на eBay. Вони працюють не так добре, як OEM, але ей, нічого кращого, ніж нічого в цій ситуації.)

Якщо планшетний ПК взагалі не має можливостей акумулятора , подумайте про додавання невеликого джерела безперебійного живлення (UPS) з USB-виходами, які можуть спілкуватися з Windows, щоб повідомити, коли він працює від акумулятора. (Наприклад, у мене є власний робочий стіл, налаштований на вимкнення, коли у КБС мало енергії батареї - таким чином він вимкнеться від відключення живлення, навіть якщо я не вдома.)

Якщо жоден із них не є варіантом, вам щось не пощастило. Це стара книга, але основи вводу / виводу SQL Server 2000 від Microsoft в основному пояснює, що вам потрібна підсистема вводу / виводу, яка може витончено справлятися з відключенням електроенергії.

Існують варіанти, які можна використовувати для збільшення ризику - наприклад, затримка міцності або таблиці, що не мають довготривалої пам'яті (але не довговічні) - але за замовчуванням SQL Server уже робить все можливе для досягнення максимальної надійності при кожному записі в журнал транзакцій. Якщо навіть запис журналу транзакцій не може бути гарантований через випадкові відключення електроенергії, витратьте 100 доларів на батарею ДБЖ.


6

Якщо припустити, що у вас локальний БД на автонавантажувачі, а не на сервері через плямисті бездротові з'єднання? Очевидно, що найкращим рішенням буде відключення SQL від навантажувача.

У будь-якому випадку, як запропонував Брент, встановіть, щоб планшетний ПК вимкнувся самостійно через хвилин заряду батареї або за подібними критеріями.

Якщо цього не вдасться, то, мабуть, найкращим у цьому випадку стане невелике ДБЖ, яке може ініціювати нормальне відключення. Покладаючись на користувачів таких речей, просять провалити помилку.


1
"Якщо припустити, що у вас локальний БД на автонавантажувачі, а не на сервері через плямисті бездротові з'єднання?" Так, саме так. Програма підтримує синхронізацію локальних БД та сервера БД, що дозволяє автонавантажувачам залишати область, охоплену WLAN, і все ще використовувати додаток.
Хайнці

2

Основний ОС повинен гарантувати успішне записування або повернення помилки. Ос, в свою чергу, покладається на драйвери, які, в свою чергу, покладаються на прошивку, яка покладається на апаратне забезпечення Якщо або драйвери, програмне забезпечення іншого обладнання не лежать, нічого Windows або sql сервер не можуть з цим зробити.

Ось чому вам потрібно звернутися до виробника драйвера / прошивки / обладнання.

Крім того, замовлення на запис має бути гарантоване для всіх шарів, щоб це також потрібно було перевірити.

Навіть кеші, що підтримуються батареями, можуть вийти з ладу, наприклад, під час штормів у Нью-Йорку деякі центри обробки даних були недоступними днями, і батареї закінчилися, потенційно втрачаючи змінені записи

https://www.postgresql.org/docs/devel/static/wal-reliability.html

https://brad.livejournal.com/2116715.html

http://rhaas.blogspot.com/2010/10/wal-reliability.html?m=1


1

Щоб розширити інші відповіді:

По-перше, спробуйте зняти SQL з навантажувача, якщо це взагалі можливо. Подумайте, що відновити втрату електроенергії погано, спробуйте зробити це після того, як ноутбук перебіг 7000 фунтів. Маючи години складської діяльності на ньому, не підкріплені ...

По-друге, механізм автоматичного відключення ноутбука після закінчення часу на батареї повинен бути встановлений.

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

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