Microsoft SQL Server를 호스팅하는 컴퓨터를 안전하게 다시 시작하려면 어떤 단계가 필요합니까?


23

MS SQL Server 인스턴스를 호스팅하는 서버를 다시 시작할 때 데이터 손상을 방지하기 위해 필요한 특별한 단계가 있습니까?

예를 들어, 최근에 SQL 서비스를 수동으로 중지하라는 권장 사항이있었습니다. 내 이해는 이것이 Windows shutdown프로세스에 의해 처리된다는 것입니다 .

방금 언급 한 것과 같이 개별 사람들이 권장 할 수있는 심각한 단계가 있다고 확신 합니다 . Microsoft 또는 광범위한 업계 표준의 권장 사항이 있습니까?


이 질문은 시스템을 재부팅하는 단기 절차와 관련이 있습니다. 기계를 영구적으로 중단하기 전에 기계를 사용하지 않는지 확인하는 장기 절차에 관한 또 다른 질문 이 있습니다 .


나는 "광범위한 산업 표준"을 요구하고 "개별 사람들이 권장 할 수있는 거대한 단계"를 원하지 않는 것으로 이해가되지 않습니다. 아마도 업계 표준에 대한 설명 일 것입니다. 이 두 가지 모두 유효한 질문처럼 보이지만 권위있는 출처는 Microsoft 기사의 링크입니다.
에반 캐롤

답변:


14

SQL Server를 다시 시작할 때 공상하거나 걱정하거나 두려워 할 필요가 없습니다.

오래 실행되는 트랜잭션이 없는지 확인하십시오. 비즈니스에 미치는 영향을 최소화하기 위해 유지 관리 기간이라고도하는 최소 / 최소 활동 기간 동안 콘솔 또는 종료 명령을 사용하여 SQL Server를 다시 시작하는 것이 가장 좋습니다.

DR 설정이 있고 다운되고 싶지 않은 경우 장애 조치를 수행 한 다음 수동 또는 보조 노드를 다시 시작하는 것이 가장 좋습니다.

다음과 같은 시나리오에서 Clean Shutdown SQL Server가 발생합니다.

  • 서비스 콘솔을 사용하여 SQL Server를 중지하십시오.
  • 서버 종료
  • SSMS에서 SHUTDOWN 명령 실행

위의 모든 상황에서 SQL Server는 모든 데이터베이스를 완전히 종료 한 다음 모든 트랜잭션을 커밋 또는 롤백하고 모든 더티 페이지를 디스크에 쓴 다음 항목을 트랜잭션 로그에 쓰는 서비스를 종료합니다.

SQL Server의 부적절한 종료 :

  • nowait로 종료
  • 서버에서 전원 케이블 연결 (액세스 권한이있는 경우)
  • 살인 sqlserver.exe를 작업 관리자에서
  • SQL Server 바이너리, exe, 시스템 데이터베이스가 상주하거나 Windows 시스템 드라이브 오류가 발생하는 디렉터리 오류입니다. 일반적으로 C : \ 드라이브입니다.
  • 서버가 과열되어 서버가 종료됩니다 (드물게 발생해야합니다 !!)

SQL Server는 위에서 설명한대로 부적절한 작업을 수행하지 않는 한 항상 완전히 종료하려고 시도합니다 .

복구 단계에서 뒤에서 일어나는 일에 대한 정말 좋은 독서 링크 :


큰 세부 사항, 감사합니다. "DR 설정"이란 무엇입니까?
모든 거래의 존

@JonofAllTrades 재해 복구 .. 예 : 로그 전달, 데이터베이스 미러링 또는 클러스터링과 같은 고 가용성을 생각할 수도 있습니다
Kin Shah

1
이 '부적절한'종료 시나리오 목록에 전적으로 동의하지만 Write-Ahead Logging 덕분에 데이터 손상이 발생하지 않아야합니다.
John Alan

5

이 페이지에서 모두 자세하게 설명합니다.

귀하의 질문에 "Microsoft가 권장하는 사항이 있습니까? "라는 질문 이 있기 때문에 여기서 논의하는 것은 비생산적이라고 생각합니다. 기사의 세부 사항

  • 중 하나를 사용하여
    • 명령 줄
    • 파워 쉘,
    • SQL Server Management Studio (GUI)
  • 2008 년, 2012 년, 2014 년, 2016 년
  • 어느 쪽이든
    • 데이터베이스 엔진
    • 또는 요원

그 단계가 만족 스러운지 아닌지는 내 의견 일 것입니다. 따라서 정답은 항상 최신 정보입니다.

전원을 끄기 전에 서비스 중지

SQL 서비스를 실행하는 서버를 종료하기 전에 수행해야합니다.

아니요, 필요하지 않습니다. Windows 커널이 신호를 종료하여 SQL Server로 보내면 안전한 방식으로 시스템이 종료되고 시스템은 신호가 완료 될 때까지 기다립니다. 일반적으로 안전하게 종료 할 수있는 기능 내장 아무것도 수동으로 종료 될 필요가 없습니다, 모든 Microsoft 응용 프로그램은 다음과 이유에 서 자신의 API 및 절차 로 묶는 PRESHUTDOWN, 또는 SHUTDOWN단계를. 에 PRESHUTDOWN사용중인 것으로 생각되는 에 대한 문서에서

시스템이 종료 될 것임을 서비스에 알립니다. 시스템 종료시 엄격한 시간 제한을 넘어서 정리 작업을 수행하는 데 추가 시간이 필요한 서비스는이 알림을 사용할 수 있습니다. 서비스 제어 관리자는 SERVICE_CONTROL_SHUTDOWN해당 알림에 등록 된 응용 프로그램에 알림을 보내기 전에이 알림을 등록한 응용 프로그램에 보냅니다 .

이 알림을 처리하는 서비스는 서비스가 중지되거나 지정된 종료 전 시간 초과 간격 SERVICE_PRESHUTDOWN_INFO이 만료 될 때까지 시스템 종료를 차단 합니다. 이는 사용자 환경에 영향을주기 때문에 서비스는 다음 시스템 시작시 데이터 손실 또는 상당한 복구 시간을 피해야하는 경우에만이 기능을 사용해야합니다 .

필요에 따라 SQL Server가 작동하는 방식이라고 가정합니다.


그건 거의 내가 묻고 있었는지. 이 문서는 SQL Server 엔진을 종료하는 방법을 설명하지만 SQL 서비스를 실행하는 서버를 종료하기 전에 필요한지 또는 권장되는지는 설명하지 않습니다.
모든 거래의 존

@JonofAllTrades가 다시 업데이트되었습니다.
Evan Carroll

3

DB 종료 및 종료와 관련하여 정확하게는 아닙니다. MS SQL Server는 매우 성숙한 제품이며 간단한 '종료'로 인해 손상 문제가 발생할 가능성이 가장 큰 시나리오입니다. CHECK DB를 실행하지 않거나 DB에 체크섬 유효성 검사를 설정하지 않으면 손상이 발생할 가능성이 훨씬 큽니다.

MDF / NDF / LDF 파일을 직접 만지는 외부 도구가 있으면 시스템 종료 사이에 파일을 '이동'시키거나 시스템 종료 중에 일부 소프트웨어가 파일을 잠그는 등의 문제가 발생할 수 있습니다. DB 파일을 호스팅하는 디스크가 가득 찼을 때 Windows 클러스터링이 망가졌지만 특별히 'DB 손상'을 유발하지는 않습니다.

원활한 종료 또는 페일 오버를 보장하려면 체크 포인트를 실행하고 DBCC CHECKDB를 자주 실행하고 (백업에서 손상된 데이터를 복구 할 수있을만큼 충분한 시간) 외부 종속성이 있는지 확인하십시오. 미러링과 같은 관리.

전문가들이 다른 '모범 사례'를 갖고 있다면 전문가들의 의견을 듣고 싶지만 지난 몇 년 동안 블로그와 온라인 리소스를 ing이 뒤져서 데이터 손상과 간단한 '종료 / 재시작'을 보지 못했습니다.


-1

내가하는 방법 : 1) 모든 작업을 비활성화하십시오. 2) 현재 실행중인 작업이 없는지 확인하십시오. 3) 활동을 확인하기 위해 SP_Who3을 자주 실행하고 자세한 내용을 보려면 sp_whoisactive를 실행하십시오. 4) 활동이없고 현재 표시되는 유일한 sp_who3 쿼리 인 경우 5) DB를 오프라인으로 전환 6) 데이터베이스 상단을 마우스 오른쪽 단추로 클릭하고 중지를 클릭하십시오. 7) services.msc에서 서비스가 중지 된 상태인지 확인하십시오. 8 ) 완료

추신. SP_Who3에 PAGEIOLATCH / IOCOMPLETION 또는 기타 활동이있는 경우 데이터베이스를 복구 모드로 만들 수 있으므로 위의 작업을 수행하지 마십시오.


대부분의 사람들이 데이터베이스에 대한 모든 트래픽을 중지하는 것이 실현 가능하거나 가치가 거의 없습니다 . 또한 모든 데이터베이스를 오프라인 상태로 만드는 것이 어떤 이점이 있는지 잘 알고 있습니다. 프로세스에 시간이 더 걸릴뿐입니다.
LowlyDBA

이것은 좋은 조언이 아닙니다. db를 오프라인으로 만드는 것이 좋은 이유-db가 HADR에있는 경우 (예 : 미러링 또는 AG)이를 수행 할 수 없습니다.
킨 샤
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.