MSSQL 미러링 – A/D 도메인 가입없이 인증서 기반 구성
1. Mirroring DB 사전 준비
Master Server 작업
마스터키 생성
USE master
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘yourpass’;
GO
# 암호화된 미러링 엔드포인트에 사용되는 서버 기반 인증서 생성
CREATE CERTIFICATE MYDBNAME1_Cert WITH SUBJECT = ‘MasterDB certificate for database mirroring’
# 마스터 서버 권한 인증을 위한 미러링 엔드포인트 DB 생성
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED
AS TCP(LISTENER_PORT = 5021, LISTENER_IP = ALL)
FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE MYDBNAME1_Cert,
ENCRYPTION = REQUIRED ALGORITHM AES, ROLE = ALL);
GO
BACKUP CERTIFICATE MYDBNAME1_Cert TO FILE = ‘D:\Cert\MYDBNAME1_Cert.cer’
GO
# 생성된 인증서 파일로 백업(반드시 인증서 파일을 미러링 서버로 카피할 것)
Slave Server 작업
Services.msc 에서 “SQL Server 계정 변경” administrator -> Local System 계정
-> 이 부분이 영향을 주는지 아닌지에 대한 테스트는 안해봤으나, 기존 현재 글과 유사한 방법으로 미러링 테스트시 안됐으므로 해주는걸로..
USE master
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘yourpass’;
GO
CREATE CERTIFICATE MYDBNAME2_Cert WITH SUBJECT = ‘MirrorDB certificate for database mirroring’
GO
CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED
AS TCP(LISTENER_PORT = 5021, LISTENER_IP = ALL)
FOR DATABASE_MIRRORING (AUTHENTICATION = CERTIFICATE MYDBNAME2_Cert,
ENCRYPTION = REQUIRED ALGORITHM AES, ROLE = ALL);
GO
BACKUP CERTIFICATE MYDBNAME2_Cert TO FILE = ‘ D:\Cert\MYDBNAME2_Cert.cer’;
GO
# 생성된 인증서 파일로 백업(반드시 인증서 파일을 마스터 서버로 카피할 것)
2. Mirroring 로그인 계정 생성
2.1 Master, Mirroring 서버 공통 작업
USE master
CREATE LOGIN youridname WITH PASSWORD = ‘yourpass’;
GO
로긴 사용자 생성
CREATE USER youridname FOR LOGIN youridname;
GO
2.2 인증서와 계정 연동
Master Server 작업
CREATE CERTIFICATE MYDBNAME2_Cert
AUTHORIZATION youridname
FROM FILE = ‘D:\Cert\MYDBNAME2_Cert.cer’;
GO
Slave Server 작업
CREATE CERTIFICATE MYDBNAME1_Cert
AUTHORIZATION youridname
FROM FILE = ‘D:\Cert\MYDBNAME1_Cert.cer’;
GO
2.3 위 연결 계정에 Connect 권한 부여(Master, Server 공통 작업)
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [youridname];
GO
3. DB 미러링 세션을 위한 서버 준비작업
3.1 마스터 서버에서의 백업
USE master
GO
BACKUP DATABASE DB명
TO DISK = N’D:\DB\backup\DB명.bak’
WITH NAME = N’Full Database Backup’,
INIT, STATS = 10
GO
BACKUP LOG DB명
TO DISK = N’D:\DB\backup\DB명.trn’
WITH NAME = N’Transaction Log Backup’,
STATS = 10
GO
위 백업 백업 파일들을 Slave(미러) 서버로 복사
3.2 Slave(미러) 서버에서의 위 백업 복원
RESTORE DATABASE DB명
FROM DISK = N’D:\DB\backup\DB명.bak’
WITH NORECOVERY
GO
RESTORE LOG DB명
FROM DISK = N’D:\DB\backup\DB명.trn’
WITH NORECOVERY
GO
3.3 Slave(미러) 서버에서 Master 서버로 TCP를 이용한 연결
USE master
GO
ALTER DATABASE DB명 SET PARTNER = ‘TCP://MasterDBIP:5021’;
GO
3.4 Master서버에서 Slave(미러) 서버로 TCP를 이용한 연결
ALTER DATABASE DB명 SET PARTNER = ‘TCP://MirrorDBIP:5021’;
GO
참조 url : https://mssqlnet.wordpress.com/2012/06/20/microsoft-sql-server-database-mirroring-in-a-workgroup-without-domain-with-certificate/