데이터베이스 미러링

구성에 필요한 서버들

1) 주(Principal) 서버

주 서버가 장애가 발생했을 경우 주 서버의 역할을 담당할 서버, 즉 미러 서버를 두기 위해 미러링을 한다.

동기화 과정

처음 동기화 : 주 서버의 데이터베이스를 미러 서버에 백업을 받아 복원하는 과정으로 이루어진다

그 이후 : 이후의 데이터 변경은 트랜잭션 로그를 미러 서버로 전달해 복원하는 과정으로 동기화가 유지된다

 

2) 미러(Mirror) 서버

주 서버 데이터베이스와 동기화된 데이터베이스 복사본을 갖는다

평상시에는 미러 서버의 데이터베이스에 사용자가 접근 할 수 없다

 

3) 모니터링 서버

자동 복구 모드를 사용하기 위해 필요하다

 

데이터베이스 미러링 구성

사전준비

1) 로그인 계정과 끝점 생성

미러링에 사용될 끝점(End Point)를 각 서버에 생성 후 이 끝점에 대한 연결 권한이 미러링에 포함된 모든 서버의 SQL Server 서비스 계정에게 주어져야 한다. 마법사를 사용하면 쉽다

 

2) 데이터베이스 복구 모델 변경

복구모델 = 전체(Full)

 

3) 데이터베이스 백업과 복원

주 서버에서 전체 백업과 로그 백업을 받아 미러 서버에 마지막 NORECOVERY 옵션을 사용해 복원해서 데이터베이스를 복구 중 상태로 두어야 한다

DB를 새로 구축하는 단계에서 이중화 구성을 하는 거라면 DB구축을 스크립트로 2대 다 하고 주 서버에서 로그백업만 받아서 미러 서버로 NORECOVERY로 복구하여 복원 중... 상태로 놓으려고 했지만, 전체백업을 하지 않으면 로그백업이 안되기 때문에 이 방법은 나만의 상상으로 끝나게 되었다.

 

4) 서버 단위의 자원 복사

미러링은 DB만 미러링이 되기 때문에 그 이외의 자원은 별도로 복사해야 한다

EX> 로그인 계정

 

본격적인 구성

1) 주 서버의 데이터베이스 복구 모델 → 전체(Full) 로 변경

ALTER DATABASE AdventureWorks2008 
SET RECOVERY FULL

2) 주 서버의 원본 데이터베이스 백업

-- 전체 백업
BACKUP DATABASE AdventureWorks2008
TO DISK = 'D:\BACKUP\AdventureWorks2008.bak'
WITH INIT -- 백업할때마다 덮어쓰는 옵션
GO

-- 로그 백업
BACKUP LOG AdventureWorks2008
TO DISK = 'D:\BACKUP\AdventureWorks2008_Log.bak'
WITH INIT
GO

3) 데이터베이스 복원 (미러 서버에서)

USE Master GO RESTORE DATABASE AdventureWorks2008     FROM DISK = 'D:\BACKUP\AdventureWorks2008.bak'     WITH MOVE 'AdventureWorks2008_DATA' TO 'D:\SmartData\AdventureWorks2008.mdf',     -- 본인은 한대의 컴퓨터에서 진행해서 경로가 겹쳐서 이동시킴         MOVE 'AdventureWorks2008_Log' TO 'D:\SmartLog\AdventureWorks2008_Log.ldf',         NORECOVERY -- 복원 중이 되도록 하는 옵션 지정 GO RESTORE LOG AdventureWorks2008     FROM DISK = 'D:\BACKUP\AdventureWorks2008_Log.bak'     WITH NORECOVERY -- 복원 중이 되도록 하는 옵션 지정 GO

이 과정을 마치면 본인계정\SMART 인스턴스에서 (복원 중...)인 상태의 미러링 된 DB가 보여진다.

 

4) 데이터베이스 미러링 구성

① 미러링 구성을 위해 미러링에 포함된 주 서버, 미러 서버, 모니터 서버에 끝점(End Point)을 만들고, 이들 SQL Servier의 서비스 계정(?)이 이 끝점을 사용할 수 있도록 권한을 설정해 주어야 한다.

주 서버의 AdventureWorks2008를 우클릭 후 [태스크] - [미러] 를 선택 - [보안구성] 선택

 

② 안내 페이지가 나오는데 다음

 

③ 미러링 모니터 서버 포함 여부 선택(자신에게 맞게 사용)

자동 장애조치를 원하는 경우에는 모니터 서버를 포함시켜야 한다. 예를 누르자. 당장 안써도 나중에 추가 가능.

 

④ 구성할 서버 선택

필요한 경우 미러링 모니터에 서버에 대한 구성은 이후에 추가로 마법사나 쿼리문을 사용해 진행할 수 도 있다.
본인은 미러링 모니터 서버 인스턴스를 체크 해제(인스턴스가 2개뿐이라서ㅋ)

 

⑤ 주 서버 인스턴스 설정

포트가 기본적으로 5022 / 끝점 이름이 기본적으로 Mirroring [다음]

끝점으로 보내는 데이터 암호화는 체크 되어 있는 채로

 

⑥ 미러 서버 인스턴스 설정

대역\SMART 인스턴스로 설정하고 [연결] 클릭하여 연결한다.

포트 5023 (한대의 컴퓨터로 연습하는 경우 주 서버와 다르게 설정 / 실제로는 2대이상의 서버 이기 때문에 같게 해도 상관없다)

끝점이름 Mirroring

 

⑦ 모니터링 서버 인스턴스 설정

한 컴퓨터로 연습할 경우 포트만 1 높여준다

 

⑧ 서비스 계정 지정

각 서버의 SQL Server 서비스 계정은 미러링에 포함된 모든 서버의 미러링 관련 끝점을 사용할 수 있어야 한다. 즉, 주 서버의 SQL Server 서비스 계정이 미러 서버와 모니터 서버의 로그인 계정으로 등록되고 이들 서버의 끝점에 대한 사용 권한을 가져야 한다.

도메인 계정 : [도메인\서비스계정] 의 형태로

로컬 계정 : [서버이름\서비스계정] 의 형태로

 

대역에서는 대역내에서 쓰여지는 서비스계정이 있지만, 대역이 아닌 곳에서 서비스 계정을 설정하는 방법은 좀 다르다.

 

⑨ 마법사 완료

[마침]

성공 성공 뜨면 [닫기]

 

⑩ 미러링 시작 여부 확인

[미러링 시작]

현재 미러링을 구성하는 환경이 도메인이 아니면 정규화된 도메인 이름이 없다고 나온다. 그래도 [예] 버튼을 누르면 시작된다

 

⑪ 미러링 구성 완료

설정이 성공적으로 끝나면 데이터베이스 속성 - 미러링 - 아래쪽에 동기화됨: 데이터베이스가 완전히 동기화되었습니다. 라고 나온다

 

⑫ 데이터베이스 상태 확인

개체 탐색기에서

주 서버 : (주 서버, 동기화됨)

미러 서버 : (미러 서버, 동기화 됨 / 복원 중...)

이라고 뜬다

 

여기도 봅시다 : http://blog.daum.net/partsofmemory/26

by 짱구를꼭말려 2014. 3. 6. 14:10
데이터 파일의 위치 수정
USE [master]
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', FILENAME = 'F:\TempDB\tempdb.mdf', SIZE = 1024MB, FILEGROWTH = 100MB)
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', FILENAME = 'F:\TempDB\tempdb.ldf', SIZE = 1024MB, FILEGROWTH = 100MB)
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = 'F:\TempDB\tempdb2.ndf', SIZE = 1024MB, FILEGROWTH = 100MB)
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = 'F:\TempDB\tempdb3.ndf', SIZE = 1024MB, FILEGROWTH = 100MB)
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev4', FILENAME = 'F:\TempDB\tempdb4.ndf', SIZE = 1024MB, FILEGROWTH = 100MB)
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev5', FILENAME = 'F:\TempDB\tempdb5.ndf', SIZE = 1024MB, FILEGROWTH = 100MB)
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev6', FILENAME = 'F:\TempDB\tempdb6.ndf', SIZE = 1024MB, FILEGROWTH = 100MB)
GO

이렇게 데이터파일 및 로그파일을 수정하면 원래 쓰던 파일은 남아있다. 잘 변경되었나 확인 후 삭제하여도 된다.

 

 파일삭제

ALTER DATABASE [TEMPDB] REMOVE FILE TEMPDEV6

 

 

 현재 사용중인 데이터파일 확인

select file_id, name, type_desc, physical_name, size, is_percent_growth, growth, max_size 
from sys.database_files 
order by name;

또는

EXEC SP_HELPFILE

 

 



 

'MSSQL 2008 > 운영' 카테고리의 다른 글

데이터베이스 미러링  (0) 2014.03.06
by 짱구를꼭말려 2014. 2. 12. 10:56
| 1 |