SQL Server의 충돌 복원력을 향상시킬 수 있습니까?


20

SQL Server (2008 SP4 및 2016 SP1)를 실행하는 PC에는 정기적으로 전원이 끊깁니다. 분명히 이것은 때때로 SQL Server 데이터베이스의 (인덱스) 손상을 초래하여 나중에 복원해야합니다.

SQL Server는 이러한 시나리오를 위해 설계되지 않았으며 올바른 해결책은 전력 손실의 원인을 해결하는 것입니다 (호기심이 많으면 아래에서 더 자세히 설명). 그럼에도 불구하고 SQL Server에는 전원 손실로 인한 데이터베이스 손상 위험을 줄이기 위해 설정할 수있는 튜닝 옵션이 있습니까?


배경 : "PC"는 지게차에 장착 된 Windows 태블릿입니다. 사용자가 지게차를 끄면 태블릿의 전원이 꺼집니다. 우리는 지게차를 끄기 전에 Windows를 올바르게 종료하도록 사용자에게 가르치려고했지만 실패했습니다 (아마도 대부분 "작동"하지 않기 때문에). 또한 태블릿에 전원 공급 중단을 알리는 UPS 신호를 추가하는 등의 다른 옵션도 조사 중입니다.

답변:


28

SQL Server가 이러한 시나리오를 위해 설계되지 않았으며 올바른 솔루션이 전원 손실의 원인을 해결하는 것임을 알고 있습니다 […]

실제로 전원 손실을 처리하도록 설계 되었기 때문에 WAL (Write Forward Logging) 및 시작시 충돌 복구 (또는 호출하려는 모든 것)와 같은 것이 있습니다. 이 작업을 수행하는 방법 중 하나는 쓰기 작업을 캐시하지 않도록 선택하는 것입니다. 태블릿이 수행하는 작업이므로 손상이 발생합니다.

그럼에도 불구하고 SQL Server에는 전원 손실로 인한 데이터베이스 손상의 위험을 줄이기 위해 설정할 수있는 튜닝 옵션이 있습니까?

아니요, SQL Server가해야 할 일을하고 있습니다. 에릭이 말한 것처럼 SQL Server 외부 (드라이브 캐싱을위한 Windows 설정 (SQL을 끄고 싶지만 강제로 할 수 없음), 하드웨어 / 펌웨어 업데이트 등)를 보거나 Eric이 말했듯이 상대적으로 외부 전원 공급 장치를 구입해야합니다 싸구려 증상을 해결할 수 있습니다 (실제 문제는 실제로 백업되지 않은 일부 유형의 캐싱 또는 배터리 백업 쓰기입니다).



1
OS 문제 인 경우 어떤 설정이 범인인지 꽤 잘 추측합니다 . (이것은 아마도 이전 임베디드 OS 중 하나 일지 모르지만 그 설정이 있는지 확인하지 마십시오). 그리고 최소한 대부분의 소비자 용 하드 디스크는 "성능 최적화 이유"에 대한 쓰기를 완료 한 것에 대해 뻔뻔하게 거짓말을하므로 기본적으로 희망은 없습니다.
Voo

26

태블릿에 작동 배터리가있는 경우 배터리 전원이 부족할 때 Windows가 종료되도록 구성 할 수 있습니다 .

태블릿에 작동하지 않는 배터리가있는 경우 배터리 를 교체하십시오. (이와 같은 랩톱이 있습니다. eBay에서 저렴한 교체 배터리를 사용할 수있는 방법에 놀랄 것입니다. OEM만큼 잘 작동하지는 않지만이 상황에서는 아무것도 아닌 것보다 낫습니다.)

태블릿에 배터리 기능이 전혀없는 경우 USB 전원으로 작은 UPS (무정전 전원 공급 장치)를 추가하여 Windows와 통신하여 배터리 전원으로 실행될 때 알릴 수 있습니다. (예를 들어, UPS의 배터리 전원이 부족할 때 자체 데스크탑을 구성하여 집에 있지 않더라도 정전시 시스템을 종료합니다.)

옵션이 없다면 운이 나쁘다. 이 백서는 오래된 백서이지만 Microsoft 의 SQL Server 2000 I / O 기본 사항 에서는 기본적으로 정전을 정상적으로 처리 할 수있는 I / O 하위 시스템이 필요하다고 설명합니다.

지연 내구성 또는 메모리 전용 (비 내구성) 테이블 과 같이 위험을 증가시키는 데 사용할 수있는 옵션이 있지만 기본적으로 SQL Server는 트랜잭션 로그에 쓸 때마다 안정성을 극대화하기 위해 이미 최선을 다하고 있습니다. 임의의 정전으로 인해 트랜잭션 로그 쓰기도 보장 할 수없는 경우 UPS 배터리에 $ 100를 소비하십시오.


6

드문 무선 연결로 인해 서버가 아닌 지게차에 로컬 DB가 있다고 가정합니까? 분명히 지게차에서 SQL을 제거하는 것이 선호되는 솔루션입니다.

어쨌든 브렌트가 제안한 것처럼 배터리 전원 또는 유사한 기준으로 x 분 후에 태블릿이 자체적으로 꺼 지도록 설정했습니다.

실패하면 정상적인 종료를 시작할 수있는 소형 UPS가 아마도 가장 좋은 방법 일 것입니다. 그런 것들에 대해 사용자에게 의존하는 것은 실패를 요구하고 있습니다.


1
"불규칙한 무선 연결로 인해 서버가 아닌 지게차에 로컬 DB가 있다고 가정합니까?" 네, 그렇습니다. 응용 프로그램은 로컬 DB와 서버 DB를 동기화 된 상태로 유지하므로 지게차는 WLAN으로 덮여있는 영역을 떠나 응용 프로그램을 계속 사용할 수 있습니다.
Heinzi

2

기본 os는 쓰기 성공 또는 오류 반환을 보장해야합니다. os는 차례로 하드웨어에 의존하는 펌웨어에 의존하는 드라이버에 의존합니다. 드라이버, 하드웨어 또는 하드웨어 중 하나가 거짓말을하면 윈도우 나 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을 해제하십시오. 정전에서 복구하는 것이 좋지 않다고 생각하고 노트북이 7,000 파운드 이상을 초과 한 후에 시도하십시오. 몇 시간의웨어 하우스 활동으로 백업되지 않았습니다.

둘째, 배터리 사용 후 x 시간 후에 랩톱이 자동 종료를 수행하는 메커니즘이 있어야합니다.

셋째, 랩톱을 지게차의 전환되지 않은 전원 공급 장치에 연결하는 것이 옵션입니까? 안전 규정 (환경에 지게차 키로 모든 것이 필요할 수 있음)과 지게차가 사용 시간 (주말 및 공휴일 등) 사이에 기계 배터리가 방전되지 않도록하는 기간을 고려해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.