KT ucloud 데이터베이스 (SQL SERVER) 미러링구성가이드 1
개정이력 개정일자 Version 개정사유개정내용 2013.02.15 1.0 싞규작성 2
목 차 1. 개 요... 4 1.1 데이터베이스미러링 (SQL SERVER) 개요... 4 2. UCLOUD 홖경에서데이터베이스 (SQL SERVER) 미러링... 5 2.1 사전구성... 6 2.1.1 컴퓨터이름변경... 6 2.1.2 Sql server 최신서비스팩설치... 6 2.1.3 Sql Server Express 설치 ( 무료 )... 6 2.2 데이터베이스미러링구성... 13 2.2.1 Host 파일변경하기... 13 2.2.2 주서버 DB 백업... 13 2.2.3 미러서버 DB 복원... 16 2.2.4 인증서파일생성... 21 2.2.5 로그인계정생성및 End Point 생성... 24 2.2.6 SQL Server 및 Windows 인증모드변경및 sysadmin 부여... 26 2.2.7 미러링마법사설정... 28 2.2.8 미러링동작확인... 36 3
1. 개요 본문서는 kt ucloud 상에서 SQL Server 데이터베이스미러링 ( 자동장애조치 ) 을구성하려는 사용자에게제공되는가이드문서이다. 1.1 데이터베이스미러링 (SQL SERVER) 개요 데이터베이스미러링은 SQL Server 데이터베이스엔진의서로다른서버인스턴스에있어야하는두개의단일데이터베이스복사본을유지관리합니다. 일반적으로두서버인스턴스는서로다른위치의컴퓨터에있습니다. 데이터베이스에서데이터베이스미러링을시작하면이러한서버인스턴스갂의관계 ( 데이터베이스미러링세션이라고함 ) 가시작됩니다. 한서버인스턴스는클라이언트에데이터베이스를제공하고 ( 주서버 ) 다른서버인스턴스는미러링세션의구성및상태에따라상시또는웜대기서버 ( 미러서버 ) 역할을합니다. 데이터베이스미러링세션을동기화하면데이터베이스미러링은커밋된트랜잭션에서데이터손실없이싞속한장애조치 (Failover) 를지원하는상시대기서버를제공합니다. 세션이동기화되지않은경우미러서버는일반적으로웜대기서버로사용할수있으며데이터가손실될수있습니다. 주서버와미러서버는데이터베이스미러링세션에서파트너로통싞하고협력합니다. 두파트너는세션에서서로보완하는주역할과미러역할을수행합니다. 언제든지한파트너는주역할을수행하고다른파트너는미러역할을수행합니다. 각파트너는현재역할을소유한다고표현합니다. 주역할을소유하는파트너를주서버라고하며주서버의데이터베이스복사본이현재의주데이터베이스입니다. 미러역할을소유하는파트너를미러서버라고하며미러서버의데이터베이스복사본이현재의미러데이터베이스입니다. 프로덕션홖경에데이터베이스미러링이구축된경우주데이터베이스가프로덕션데이터베이스가됩니다. 데이터베이스미러링은주데이터베이스에서발생한모든삽입, 업데이트및삭제작업을가능한한빨리미러데이터베이스에대해다시실행하는작업과관렦이있습니다. 다시실행은홗성트랜잭션로그레코드의스트림을미러서버로보내고, 미러서버에서가능한한빨리로그레코드를순서대로미러데이터베이스에적용함으로써이루어집니다. 논리적수준에서작동하는복제와달리데이터베이스미러링은물리적로그레코드수준에서작동합니다. SQL Server 2008 부터주서버는트랜잭션로그레코드의스트림을미러서버에보내기전에압축합니다. 이러한로그압축은모든미러링세션에서발생합니다. - 자동장애조치 (automatic failover) : 주서버를사용할수없게되면미러서버가주서버의 역할을맡고해당데이터베이스의복사본을온라인으로전홖하여주데이터베이스로사용하도록 하는프로세스입니다. 참고 : http://msdn.microsoft.com/ko-kr/library/ms189852.aspx 4
2. ucloud 홖경에서데이터베이스 (Sql server) 미러링 [ 데이터베이스미러링구성도 ] - 운영모드 : 자동장애조치방식의데이터베이스미러링 - OS : Window 2008 R2 또는 windows 2012 std - Mssql : MS SQL server 2008 R2 또는 2012 - 필수 VM 생성 : 총 3 개 Mssql DB 용 VM 2 개 (Mssql 포함, 데이터디스크제공 ) : 주서버, 미러서버용 [ 클라우드서버신청화면에서 Mssql OS 로생성 ] 5
모니터링서버용 VM 1 개 (Mssql 미포함, 데이터디스크미제공 ) : 기본 OS + 사용자가 Mssql Express( 무료 ) 다운로드및설치 2.1 사전구성 2.1.1 컴퓨터이름변경 - 대상 : 주서버, 미러서버 Mssql DB 용 VM : ex) MssqlA( 주서버 ), MssqlB( 미러서버 ) 모니터 VM : ex) MssqlMonitor( 모니터서버 ) - 변경후재부팅 2.1.2 Sql server 최신서비스팩설치 - 대상 : 주서버, 미러서버 SQL Server 2008 r2 sp2 : http://www.microsoft.com/ko-kr/download/details.aspx?id=30437 SQL Server 2012 sp1 : http://www.microsoft.com/ko-kr/download/details.aspx?id=35575 다운로드및설치 sql 버전확인쿼리 : select @@VERSION 2.1.3 Sql Server Express 설치 ( 무료 ) - 대상 : 모니터서버 sql server 2008 r2 sp2 Express 다운로드 : SQLEXPRWT_x64_KOR.exe(http://www.microsoft.com/ko-kr/download/details.aspx?id=30438) sql server 2012 sp1 Express 다운로드 : SQLEXPRWT_x86_KOR.exe(http://www.microsoft.com/ko-kr/download/details.aspx?id=35579) 6
- 새로설치선택 7
- 기본인스턴스선택 8
- 서비스계정 : SQL Server Database Engine 에서 NT AUTHORITY\SYSTEM 선택 9
10
- 설치완료 11
- 프로그램 > Microsoft SQL Server > 구성도구 > SQL Server 구성관리자 - Sql Server 네트워크구성 > TCP/IP 사용안함 을 사용 으로변경 - 사용 설정후 SQL Server 다시시작 12
2.2 데이터베이스미러링구성 2.2.1 Host 파일변경하기. - 대상 : 주서버, 미러서버, 모니터서버 - C:\Window s\system32\drivers\etc 에서 hosts 파일에각 VM 들의 IP 주소 / 이름추가 - 시작 > 실행 > cmd > ipconfig 로 IP Address 확인가능 2.2.2 주서버 DB 백업 - 대상 : 주서버 - 구성을위해데이터 DISK 를 E: 로설정및 E:\mssql\data 에샘플 DB 파일을위치 - 주서버 Mssql 로그인 - 백업전에현재 DB 의복구모델이 전체 인지확인 데이터베이스 > AdventureWorks2008R2( 샘플 DB) > 우클릭 > 속성 > 옵션 > 복구모델 > 전체 13
- 데이터베이스 > AdventureWorks2008R2( 샘플 DB) > 우클릭 > 태스크 > 백업 14
- 임의의백업경로 e:\mssql\backup\adventurework.bak 지정 - 확인 15
- 2.2.3 미러서버 DB 복원 - 대상 : 미러서버 - 복원전 Mssql 주서버에서생성한백업파일을미러서버로복사하여야한다. - ex) 주서버 e:\mssql\backup\adventurework.bak 를미러서버 e:\mssql\ backup \adventurework.bak 로복사 - 데이터베이스 > 데이터복원선택 16
- 복원에사용할원본 > 장치 >... 선택 - 파일 > 추가 > 백업파일경로추가 ex) e:\mssql\backup\adventurework.bak 17
18
- 데이터베이스선택 - 옵션 > 복구상태선택 > RESTORE WITH NORECOVERY 선택 19
- Sql Server 2012 는복구상태 > RESTORE WITH NORECOVERY 선택 - 복원완료 20
- 복원 DB 가복원중으로변경됨 2.2.4 인증서파일생성 - 대상 : 각주서버, 미러서버, 모니터서버 - 빨갂색글씨부분을사용자에맞게수정해서사용 - 새쿼리 > master 에서실행 ( 한단위씩실행 ) 대상 : 주서버 (db_a)----------- --마스터키인증비밀번호생성 create master key encryption by password ='P@ssw0rd' --인증서생성. 인증서이름과만료일을설정 create certificate db_a_cert with subject='db a certificate', start_date='2009/1/1', expiry_date='2100/12/31' --미러링을수행하기위한홖경을설정 create endpoint endpoint_mirroring state=started as tcp(listener_port=5022, listener_ip=all) for database_mirroring(authentication=certificate db_a_cert, encryption=required, role=all) --인증서를 C 드라이브에백업 backup certificate db_a_cert to file='c:\db_a_cert.cer' 21
대상 : 미러서버 (db_b)-------------- --마스터키인증비밀번호생성 create master key encryption by password ='P@ssw0rd' --인증서생성. 인증서이름과만료일을설정 create certificate db_b_cert with subject='db b certificate', start_date='2009/1/1', expiry_date='2100/12/31' --미러링을수행하기위한홖경을설정 create endpoint endpoint_mirroring state=started as tcp(listener_port=5022, listener_ip=all) for database_mirroring(authentication=certificate db_b_cert, encryption=required, role=all) --인증서를 C 드라이브에백업 backup certificate db_b_cert to file='c:\db_b_cert.cer' 대상 : 모니터서버 (db_c)-------------- -- 마스터키인증비밀번호생성 create master key encryption by password ='P@ssw0rd' --인증서생성. 인증서이름과만료일을설정 create certificate db_c_cert with subject='db c certificate', start_date='2009/1/1', expiry_date='2100/12/31' --미러링을수행하기위한홖경을설정 create endpoint endpoint_mirroring state=started as tcp(listener_port=5022, listener_ip=all) for database_mirroring(authentication=certificate db_c_cert, encryption=required, role=witness) --인증서를 C 드라이브에백업 backup certificate db_c_cert to file='c:\db_c_cert.cer' 22
ex) - 생성한인증서를각서버의 C:\ 에모두복사 모든서버에생성된 3 개의인증서가동일하게존재하여야한다. 23
2.2.5 로그인계정생성및 End Point 생성 - 대상 : 각주서버, 미러서버, 모니터서버 - 빨갂색글씨부분을사용자에맞게수정해서사용 - 새쿼리 > master 에서실행대상 : 주서버 (db_a)----------- --로그인을 administrator 이라는이름으로생성 create login administrator with password= P@ssw0rd' --사용자를 administrator 이라는이름으로생성 create user administrator from login administrator --미러서버의인증서에권한부여 create certificate db_b_cert authorization administrator from file='c:\db_b_cert.cer' --모니터서버의인증서에권한부여 create certificate db_c_cert authorization administrator from file='c:\db_c_cert.cer' --끝점연결허용 grant connect on endpoint::endpoint_mirroring to administrator 24
대상 : 미러서버 (db_b)-------------- --로그인을 administrator 이라는이름으로생성 create login administrator with password='p@ssw0rd' --사용자를 administrator 이라는이름으로생성 create user administrator from login administrator --주서버의인증서에권한부여 create certificate db_a_cert authorization administrator from file='c:\db_a_cert.cer' --모니터서버의인증서에권한부여 create certificate db_c_cert authorization administrator from file='c:\db_c_cert.cer' --끝점연결허용 grant connect on endpoint::endpoint_mirroring to administrator 대상 : 모니터서버 (db_c)-------------- --로그인을 administrator 이라는이름으로생성 create login administrator with password='p@ssw0rd' --사용자를 administrator 이라는이름으로생성 create user administrator from login administrator --주서버의인증서에권한부여 create certificate db_a_cert authorization administrator from file='c:\db_a_cert.cer' --미러서버의인증서에권한부여 create certificate db_b_cert authorization administrator from file='c:\db_b_cert.cer' --끝점연결허용 grant connect on endpoint::endpoint_mirroring to administrator 25
2.2.6 SQL Server 및 Windows 인증모드변경및 sysadmin 부여 - 대상 : 주서버, 미러서버, 모니터서버 - 미러링전각 SQL 서버의서버인증방식은 SQL Server 및 Windows 인증모드로변경 - 속성 > 보안 > SQL Server 및 Windows 인증모드선택 - SQL 서비스다시시작 - 3.1.5 에서생성한 administrator 계정에 sysadmin 권한부여 - 보안 > administrator 선택 > 속성 > 서버역할 26
- sysadmin 선택 27
2.2.7 미러링마법사설정 - 대상 : 주서버 - 서버에서 AdventureWorks2008Rs 선택 > 우클릭 > 태스크 > 미러선택 - 보안구성선택 > 미러링보안구성마법사실행 28
- 모니터링서버포함하여구성 29
- 미러링모니터서버인스턴스선택 - 주서버확인 30
- 미러서버등록 : 연결선택 > 계정등록 > SQL Server 인증 > 3.1.5 에서등록한계정으로로그인 - 미러서버등록 31
- 모니터링서버 (MSSQLMONITOR) 연결및등록 : - 빈칸 > 다음 32
33
- 미러링 시작안함 선택 - 자동장애조치선택확인후 > 미러링시작 34
- 아래와같이 DB 상태가변경된다. 주서버 : MSSQLA 미러서버 : MSSQLB 35
2.2.8 미러링동작확인 - DB 선택 > 테스크 > 미러 - 장애조치선택 36
- 예 선택 - 주서버였던 MSSQLA 는미러서버로변경확인 37
- 미러서버였던 MSSQLB 는주서버로변경확인 - 주서버를 reboot 했을때미러서버가주서버가되는지확인 38