본문 바로가기

DBMS/MS-SQL

[MS-SQL] master 데이터베이스 복원

반응형

개요

master 데이터베이스가  손상을 입었거나, 손실하였을 경우에는 데이터베이스를 복구는 방법에 대해서 설명한다. 

구성환경

SQL Server 2019 / Windows Server 2016

 

Master 데이터베이스 복구 절차

1. 시스템데이터베이스 다시 작성

- 시스템데이터베이스를 다시 작성(Rebuild) 하면 master 뿐 아니라, msdb, model 데이터베이스도 다시 작성된다.

SQL Server 미디어 또는 로컬 서버의 setup.exe( SQL Server 2019일 경우 C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQLServer2019) 파일이 있는 위치로 변경

C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019>setup.exe /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=hoya\administrator /SAPWD=sapassword
SQL Server 2019에서는 설치 환경에 대한 정보뿐만 아니라 기타 사용량 현황 및 성능 데이터를 제품 개선에 도움을 주기 위해 Microsoft에 전송합니다. SQL Server 2019 데이터 처리 및 개인 정보 관리에 대해 알아보려면 개인정보처리방침을(를) 참조하세요.

C:\Program Files\Microsoft SQL Server\150\Setup Bootstrap\SQL2019>

/INSTANCE : SQL Server인스턴스의 이름입니다. 기본 인스턴스의 경우 MSSQLSERVER를 입력합니다.

/SQLSYSADMINACCOUNTS : 윈도우즈 그룹또는 개별 계정 지정

/SAPWD : SQL Server sa 계정의 암호를 지정합니다. 해당 인스턴스에서 혼합 인증(SQL Server 및 Windows 인증) 모드를 사용할 경우 이 매개 변수가 필요합니다.

 

2. SQL Server Service 관리자에서 시작 매개 변수에 -m 옵션을 추가하여 단일 사용자 모드로 시작

- SQL Server 구성 관리자 > 인스턴스 > 속성 > 시작 매개 변수

 

3. T-SQL 에서 master 데이터베이스 복원

 3.1 백업 받은 파일을 이용하여 master 데이터베이스 복원

CMD> sqlcmd  -E
1> restore database master from disk = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\master.bck' with replace
2> go
파일 1에서 데이터베이스 'master', 파일 'master'에 대해 512개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'master', 파일 'mastlog'에 대해 2개의 페이지를 처리했습니다 .
master 데이터베이스가 복원되었습니다. SQL Server를 종료합니다.
SQL Server가 이 프로세스를 종료합니다.

** 명명된 인스턴스에 접속시에는 sqlcmd -E -s serviceName 형식 사용

 3.2 master 데이터베이스가 복원 되면 SQL Server 프로세스는 자동 종료됨

 3.3 -m 옵션을 제거후 SQL Server 서비스  시작

 

4. 기타 시스템 데이터베이스(msdb, model) 복구

 4.1 msdb 데이터베이스 복구

- SQL Server 에이전트 서비스가 구동중일 경우 복구시 오류가 발생할 수 있음으로, SQL Server 에이전트 서비스 중지 후 복원한다. 이후 복원 완료후에 에이전트를 시작한다.

CMD> sqlcmd -E 
1> restore database msdb from disk = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\msdb.bck'
2> go
메시지 3101, 수준 16, 상태 1, 서버 SQLCL-01, 줄 1
데이터베이스가 사용 중이어서 배타적으로 액세스할 수 없습니다.
메시지 3013, 수준 16, 상태 1, 서버 SQLCL-01, 줄 1
RESTORE DATABASE이(가) 비정상적으로 종료됩니다.
1>
2> === SQL Server 에이전트 서비스 종료 ===
3>
4> restore database msdb from disk = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\msdb.bck'
5> go
파일 1에서 데이터베이스 'msdb', 파일 'MSDBData'에 대해 1848개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'msdb', 파일 'MSDBLog'에 대해 2개의 페이지를 처리했습니다 .
RESTORE DATABASE이(가) 1850개의 페이지를 2.136초 동안 처리했습니다(6.764MB/초).
1>

 4.2 model 데이터베이스 복구

1> restore database model from disk = 'G:\MSSQL15.MSSQLSERVER\MSSQL\Backup\model.bck'
2> go
파일 1에서 데이터베이스 'model', 파일 'modeldev'에 대해 352개의 페이지를 처리했습니다 .
파일 1에서 데이터베이스 'model', 파일 'modellog'에 대해 2개의 페이지를 처리했습니다 .
RESTORE DATABASE이(가) 354개의 페이지를 0.380초 동안 처리했습니다(7.267MB/초).
1>

 

클러스터형 설치에 대한 참고 사항

1. SQL Server 리소스를 오프라인 상태로 만듭니다.

 1.1 SQL Server 리소스 중지

 1.2 리소스가 사용하는 디스크는 온라인 상태로 전환

2. 디스크를 소유한 노드에서 시스템 데이터 베이스 다시 작성( 1. 항목 참조 )

3. 이 그룹의 현재 소유자 노드에서 명령 프롬프트를 열고
    net start MSSQLSERVER /m 명령을 실행합니다.

4. master 데이터베이스 복원( 3.1 항목 참조 )

5. 클러스터 관리자 또는 장애 조치(failover) 클러스터 관리 콘솔에서 SQL Server 리소스 시작

6. msdb 데이터베이스 복원( 4.1 항목 참조 )

7. model 데이터베이스 복원( 4.2 항목 참조 )

 

 

반응형