SQL Server'ın çökme esnekliği geliştirilebilir mi?


20

SQL Server (2008 SP4 ve 2016 SP1) çalıştıran ve düzenli olarak güç kaybeden bilgisayarlarımız var. Açıkçası, bu bazen daha sonra geri yüklememiz gereken SQL Server veritabanının (dizin) bozulmasına yol açar.

SQL Server'ın bu tür senaryolar için tasarlanmadığının farkındayım ve doğru çözüm, güç kaybının nedenini düzeltmektir (merak ediyorsanız, aşağıda daha fazlası). Yine de, SQL Server'da güç kaybında veritabanı bozulması riskini azaltmak için ayarlayabileceğim bir ayar seçeneği var mı?


Arka plan: "PC" forklift üzerine monte edilmiş bir Windows tablettir. Kullanıcı forklifti kapattığında, tablet güç kaybeder. Kullanıcılara, forklifti kapatmadan önce Windows'u düzgün bir şekilde kapatmayı öğretmeye çalıştık, ancak başarısız oldu (muhtemelen sadece kapatılması çoğu zaman "çalışıyor" olduğu için). Ayrıca, şu anda tableti güç kaybını durdurmak için sinyal veren bir UPS eklemek gibi diğer seçenekleri de araştırıyoruz.

Yanıtlar:


28

SQL Server gibi senaryolar için tasarlanmamış olduğunu ve doğru çözüm güç kaybının nedenini düzeltmek olduğunu biliyorum […]

Aslında güç kaybıyla başa çıkmak için tasarlandı, bu yüzden başlangıçta yazma (WAL) ve başlangıçta çökme kurtarma (ya da ne demek istersen) gibi şeyler var. Bunun yapılma yollarından biri, tabletin ne yaptığı, dolayısıyla yolsuzluk gibi görünen yazıları önbelleğe almamayı seçmektir.

Yine de, SQL Server'da güç kaybında veritabanı bozulması riskini azaltmak için ayarlayabileceğim bir ayar seçeneği var mı?

Hayır, SQL Server ne gerekiyorsa yapıyor. SQL Server'ın dışına (SQL'in kapalı olmasını istediği ancak sizi zorlayamayacağımız sürücü önbellek ayarları, donanım / bellenim güncellemeleri vb.) Veya Eric'in söylediği gibi nispeten harici bir güç kaynağı satın almalısınız. belirtileri çözebilecek ucuz (asıl mesele, aslında desteklenmeyen bir tür önbellekleme veya pil destekli yazmadır).



1
Bir OS sorunu varsa hangi ayar suçlu olduğunu oldukça iyi bir tahmin var . (Her ne kadar tahmin edersem bu muhtemelen eski gömülü işletim sistemlerinden biri olsa da, bu ayarlara sahip olup olmadıklarını da hiç kontrol etmedim). Ve sonra, en azından tüketici sınıfı sabit disklerin çoğu, "performans optimizasyonu nedenleriyle" yazmayı bitirmekten utanmadan yalan söylüyorlar, bu yüzden bunlarda temelde umut yok.
Voo

26

Tabletin çalışan bir pili varsa, Windows'u pil gücü düşük olduğunda kapanacak şekilde yapılandırabilirsiniz .

Tabletin çalışmayan bir pili varsa , pili değiştirmeyi düşünün. (Böyle dizüstü bilgisayarlarım oldu - eBay'de ucuz yedek pillerin nasıl olabileceğine şaşıracaksınız. OEM kadar iyi çalışmıyorlar, ancak hey, bu durumda hiçbir şeyden daha iyi bir şey yok.)

Tabletin pil kapasitesi yoksa , pil gücüyle çalışırken Windows ile iletişim kurabilen USB çıkışlarına sahip küçük bir kesintisiz güç kaynağı (UPS) eklemeyi düşünün. (Örneğin, UPS akü gücü düşük olduğunda kendi masaüstüm kapanacak şekilde yapılandırıldım - bu şekilde evde olmasam bile elektrik kesintisinde kapanacak.)

Bunların hiçbiri bir seçenek değilse, şanssızsınız demektir. Bu eski bir teknik incelemedir, ancak Microsoft'un SQL Server 2000 I / O Temelleri temel olarak elektrik kesintilerini zarif bir şekilde ele alabilen bir I / O alt sistemine ihtiyacınız olduğunu açıklar.

Gecikmeli Dayanıklılık veya yalnızca bellek (dayanıklı olmayan) tablolar gibi riski artırmak için kullanabileceğiniz seçenekler vardır, ancak SQL Server varsayılan olarak, işlem günlüğüne yapılan her yazmada güvenilirliği en üst düzeye çıkarmak için elinden gelenin en iyisini yapmaktadır. Rastgele güç kesintileri nedeniyle işlem günlüğü yazma işlemleri bile garanti edilemiyorsa, 100 $ 'lık bir UPS aküsünde harcayın.


6

Sivilceli kablosuz bağlantılar nedeniyle forklift yerine yerel bir DB'niz olduğunu mu düşünüyorsunuz? Açıkçası forkliftin SQL'den çıkarılması tercih edilen çözüm olacaktır.

Her neyse, Brent'in önerdiği gibi, tableti pil gücüyle veya benzer kriterlerle x dakika sonra kendi kendine kapanacak şekilde ayarlayın.

Bunu yapmazsanız, normal bir kapatmayı başlatabilecek küçük bir UPS muhtemelen bu durumda en iyi bahsiniz olacaktır. Bunun gibi şeyler için kullanıcılara güvenmek başarısız olmayı ister.


1
"Sivilceli kablosuz bağlantılar nedeniyle bir forklift yerine yerel bir DB'niz olduğunu mu düşünüyorsunuz?" Evet, durum tam olarak bu. Uygulama, yerel DB'leri ve sunucu DB'sini senkronize tutar, bu da forkliftlerin WLAN kapsamındaki alanı terk etmesine ve uygulamayı kullanmaya devam etmesine olanak tanır.
Heinzi

2

Temel alınan işletim sistemi, başarılı bir yazma veya bir hata döndürüldüğünü garanti etmelidir. İşletim sistemi sırayla donanıma dayanan bellenime güvenen sürücülere dayanır Sürücüler, bellenim donanım donanımı ya pencereler ya da sql sunucusunun bu konuda yapabileceği hiçbir şey yoktur.

Bu nedenle sürücü / ürün yazılımı / donanım üreticisine danışmanız gerekir.

Ayrıca tüm katmanlarda yazma sırası garanti edilmelidir, böylece kontrol edilmesi gerekir.

Batarya destekli önbellekler bile başarısız olabilir, örneğin New York fırtınaları sırasında bazı veri merkezlerine günlerce erişilemezdi ve bataryalar tükenirdi, potansiyel olarak değişmiş yazıları kaybedebilirdi

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

Diğer cevapları genişletmek için:

İlk olarak, mümkünse SQL'i forkliftten çıkarmayı deneyin. Bir güç kaybından kurtulmanın kötü olduğunu düşünün, dizüstü bilgisayar 7.000+ lbs bittiğinde bunu deneyin. Üzerinde depolanmış saatler süren depo faaliyeti ile ...

İkincisi, dizüstü bilgisayarda pil üzerinde x süre geçtikten sonra otomatik kapanma mekanizması bulunmalıdır.

Üçüncüsü, dizüstü bilgisayarı forklift üzerindeki anahtarsız bir güç kaynağına bağlamak bir seçenek olabilir mi? Güvenlik düzenlemelerini (çevre, forklift anahtarıyla her şeyi gerektirebilir) ve makinenin pilini tüketmemek için forkliftin kullanımlar arasında ne kadar süre kaldığını (özellikle hafta sonları ve tatil günleri) dikkate aldığınızdan emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.