Bisakah SQL Server meningkatkan ketahanan?

20

Kami memiliki PC yang menjalankan SQL Server (2008 SP4 dan 2016 SP1) yang secara teratur kehilangan daya. Jelas, ini kadang-kadang menyebabkan (indeks) korupsi database SQL Server, yang perlu kita pulihkan sesudahnya.

Saya menyadari bahwa SQL Server tidak dirancang untuk skenario seperti itu dan solusi yang tepat adalah untuk memperbaiki penyebab hilangnya daya (lebih lanjut tentang itu di bawah ini, jika Anda penasaran). Namun demikian, apakah ada opsi tuning di SQL Server yang dapat saya atur untuk mengurangi risiko korupsi database pada kehilangan daya ?


Latar Belakang: "PC" adalah tablet Windows yang dipasang pada forklift. Saat pengguna mematikan forklift, tablet kehilangan daya. Kami telah mencoba mengajari para pengguna untuk mematikan Windows dengan benar sebelum mematikan forklift, tetapi gagal (mungkin karena mematikannya "berfungsi" sebagian besar waktu). Kami juga sedang menyelidiki opsi lain, seperti menambahkan UPS yang memberi sinyal tablet untuk mematikan daya.

Heinzi
sumber

Jawaban:

28

Saya sadar bahwa SQL Server tidak dirancang untuk skenario seperti itu dan solusi yang tepat adalah untuk memperbaiki penyebab hilangnya daya [...]

Sebenarnya ini dirancang untuk mengatasi kehilangan daya, itu sebabnya ada hal-hal seperti write ahead logging (WAL) dan pemulihan kerusakan saat startup (atau apa pun yang Anda ingin menyebutnya). Salah satu cara ini dilakukan adalah dengan memilih untuk tidak menulis cache yang tampaknya adalah apa yang dilakukan tablet, maka korupsi.

Namun demikian, apakah ada opsi tuning di SQL Server yang dapat saya atur untuk mengurangi risiko korupsi database pada kehilangan daya?

Tidak, SQL Server melakukan apa yang seharusnya. Anda harus melihat di luar SQL Server (pengaturan windows untuk caching drive [yang ingin dimatikan SQL tetapi kami tidak dapat memaksa Anda], pembaruan perangkat keras / firmware, dll.) Atau seperti yang dikatakan Eric, beli catu daya eksternal dengan harga relatif murah yang bisa mengatasi gejala (masalah sebenarnya mungkin beberapa jenis caching atau baterai yang didukung tulis yang tidak benar-benar didukung).

Sean berkata Hapus Sara Chipps
sumber
2
Artikel bermanfaat: support.microsoft.com/en-us/help/234656/…
David Browne - Microsoft
1
Saya punya dugaan yang cukup bagus pengaturan mana yang menjadi pelakunya jika itu masalah OS . (walaupun ini mungkin salah satu dari OS yang tertanam jika saya menebak, tidak pernah memeriksa apakah mereka memiliki pengaturan itu juga). Dan kemudian setidaknya sebagian besar hard disk konsumen kelas tanpa malu-malu berbohong tentang telah menyelesaikan penulisan untuk "alasan optimasi kinerja", jadi pada dasarnya tidak ada harapan pada mereka.
Voo
26

Jika tablet memiliki baterai yang berfungsi , Anda dapat mengonfigurasi Windows untuk mati saat daya baterai rendah .

Jika tablet ini memiliki baterai yang tidak berfungsi , pertimbangkan untuk mengganti baterai. (Saya memiliki laptop seperti itu - Anda akan terkejut betapa murahnya baterai pengganti di eBay. Mereka tidak berfungsi sebaik OEM, tapi hei, segalanya lebih baik daripada tidak sama sekali dalam situasi ini.)

Jika tablet tidak memiliki kemampuan baterai sama sekali , pertimbangkan untuk menambahkan catu daya kecil tanpa gangguan (UPS) dengan output USB yang dapat berkomunikasi dengan Windows untuk memberi tahu kapan tablet menggunakan daya baterai. (Misalnya, saya memiliki desktop sendiri yang dikonfigurasi untuk dimatikan ketika UPS kekurangan daya baterai - dengan cara itu akan mematikan pemadaman listrik bahkan jika saya tidak di rumah.)

Jika tidak ada yang merupakan opsi, Anda agak kurang beruntung. Ini adalah kertas putih lama, tetapi Dasar-Dasar I / O SQL Server 2000 dari Microsoft pada dasarnya menjelaskan bahwa Anda memerlukan subsistem I / O yang dapat menangani pemadaman listrik dengan anggun.

Ada beberapa opsi yang dapat Anda gunakan untuk meningkatkan risiko - seperti Delayed Durability atau hanya memori (tidak tahan lama) tabel - tetapi secara default, SQL Server sudah melakukan yang terbaik untuk memaksimalkan keandalan dengan setiap penulisan ke log transaksi. Jika bahkan log transaksi menulis tidak dapat dijamin karena pemadaman listrik acak, belanjakan $ 100 pada baterai UPS.

Brent Ozar
sumber
6

Dengan asumsi Anda memiliki DB lokal di forklift daripada server karena koneksi nirkabel jerawatan? Jelas mendapatkan SQL dari forklift akan menjadi solusi yang lebih baik.

Bagaimanapun, seperti yang disarankan Brent, atur tablet agar mati sendiri setelah x menit dengan daya baterai atau kriteria serupa.

Jika gagal, UPS kecil yang dapat melakukan shutdown normal mungkin akan menjadi taruhan terbaik Anda dalam kasus itu. Mengandalkan pengguna untuk hal-hal seperti itu meminta gagal.

Marbry Hardin
sumber
1
"Dengan asumsi Anda memiliki DB lokal di forklift daripada server karena koneksi nirkabel yang rumit?" Ya, itulah masalahnya. Aplikasi menyimpan DB lokal dan DB server dalam sinkronisasi, yang memungkinkan forklift meninggalkan area yang dicakup oleh WLAN dan masih menggunakan aplikasi tersebut.
Heinzi
2

OS yang mendasarinya harus menjamin bahwa penulisan yang berhasil atau kesalahan dikembalikan. Os pada gilirannya bergantung pada driver yang pada gilirannya bergantung pada firmware yang bergantung pada perangkat keras. Jika salah satu driver, firmware atau perangkat keras terletak tidak ada windows atau sql server dapat melakukan hal itu.

Inilah sebabnya mengapa Anda perlu memeriksa dengan driver / firmware / produsen perangkat keras.

Juga menulis pemesanan harus dijamin di semua lapisan sehingga perlu diperiksa juga.

Bahkan cache yang didukung oleh baterai dapat gagal misalnya selama badai New York beberapa pusat data tidak dapat diakses selama berhari-hari dan baterai akan habis, berpotensi kehilangan pengulangan yang ditulis

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

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

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

David Williams
sumber
1

Untuk memperluas jawaban lain:

Pertama, coba turunkan SQL dari forklift jika memungkinkan. Berpikir pulih dari kehilangan daya adalah hal yang buruk, coba lakukan setelah laptop tertabrak 7.000+ lbs. Dengan jam aktivitas gudang di atasnya, tidak didukung ...

Kedua, mekanisme untuk laptop melakukan shutdown otomatis setelah waktu x pada baterai harus tetap ada.

Ketiga, apakah menghubungkan laptop ke feed daya non-switched pada forklift menjadi pilihan? Pastikan untuk mempertimbangkan peraturan keselamatan (lingkungan mungkin mengharuskan semuanya dengan kunci forklift), dan berapa lama forklift berada di antara penggunaan (khususnya selama akhir pekan dan hari libur) untuk menghindari pengeringan baterai mesin.

GB540
sumber