시스템 데이터베이스인 master/model/msdb 이 손상을 입었을 경우 복원을 진행해합니다.
이번 시간에는 기존에 사용하고 있는 데이터베이스를 다른 서버로 이전할 경우 시스템 디비를 복원 방법에 대해서 기록합니다.
시스템 DB의 역할
master : 디스크 공간, 시스템 전체의 구성 정보, 계정 정보, 사용자 데이터베이스에 대한 정보 등 중요한 목록이 포함되어 있습니다.
model : 사용자 데이터베이스를 생성할 때 기본 모델이 되는 데이터베이스 입니다.
msdb : SQL Server 에이전트가 사용하는 데이터베이스로 예약된 작업등의 내용이 들어있습니다.
구성환경
SQL Server 2016 / Windows Server 2016
사전 검증 사항
1. SQL 서버 버전확인
신규 서버에 설치될 SQL 서버의 버전이 동일해야 시스템 디비가 복원이 가능하다.
--버전확인
SELECT @@VERSION
2. 데이터베이스 기본 위치 확인(C or D or 기타 다른 드라이브)
디비 우클릭 후 [속성] - [데이터베이스 설정] - 페이지 우측하단 데이터베이스 기본위치에서 확인 후 신규 서버에 설치시 경로를 맞춰준다.
시스템 디비복원(복구)
1. 시스템 데이터 베이스인 master/model/msdb 백업을 진행하여 .bak 파일로 만들어둔다
2. 동일한 버전과, 동일한 데이터베이스 기본 위치에 SQL Sever를 설치한다.
3. 단일 모드로 SQL 서버를 시작한다.
SQL Server 구성 관리자 > 인스턴스 > 속성 > 시작 매개 변수 로 가서 -m 변수를 추가 후 다일 모드로 시작
4. master 데이터베이스 복원
CMD 창을 열고 단일 모드의 디비로 접속해서 백업해둔 master.bak 파일로 master 데이터베이스를 복원합니다.
복원 후 SQL Server 프로세스는 자동으로 종료됩니다. 이후 -m 옵션 주었던 것을 제거 후 서비스를 다시 시작합니다.
CMD>sqlcmd -E or sqlcmd -U sa -P 패스워드
restore database master from disk = 'C:\BACKUP\master.bak' with replace
5. model 데이터베이스 복원
--master 디비를 복원했기 때문에 SQL인증이 불가능하니 sa 계정으로 접속합니다.
CMD>sqlcmd -U sa -P 패스워드
restore database model from disk = 'C:\BCAKUP\model.bak'
6. msdb 데이터베이스 복원
msdb는 SQL Server 에이전트인 스케줄러 작업과 관련된 데이터베이스 입니다. 따라서 복원전에 서비스를 중지 하고 복원을 진행합니다.
--master 디비를 복원했기 때문에 SQL인증이 불가능하니 sa 계정으로 접속합니다.
CMD>sqlcmd -U sa -P 패스워드
restore database msdb from disk = 'C:\BACKUP\msdb.bak'
시스템 데이터 베이스 복원이 완료 되었습니다.
이제 SQL 서버로 로그인하여 복원된 디비를 확인하세요.
나머지 DATA 영역의 .mdf .ldf 파일들은 동일한 경로에 넣어주고 오프라인된 DB를 온라인으로 변경해주시면 됩니다.
(만약 권한이 없다면 윈도우 서버에서 해당 폴더에 접근 권한(쓰기)을 추가해 주어야 온라인으로 변경이 가능합니다.)
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] 복원중 표시 오류 해결방법 / RESTORE (0) | 2022.01.14 |
---|---|
[MSSQL] 배치잡(SQL Server 에이전트) 작업스케줄러 생성일 확인 (0) | 2022.01.12 |
[MSSQL] hash, merge, Nested loop Join 실행계획 설명 (0) | 2021.07.28 |
[MSSQL] FOREIGN KEY 연결된 테이블,키 찾기 (FOREIGN KEY 제약 조건에서 참조하므로 삭제할 수 없습니다) (1) | 2021.06.16 |
[MSSQL] 데이터베이스 확장 속성 조회 및 추가(sp_msforeachdb) (0) | 2021.06.16 |
댓글