SQL Server 2005 미 러 구축 매 뉴 얼(sql 2005 데이터베이스 동기 화 미 러 방안)

거울
1.소개
데이터베이스 미 러 는 데이터베이스 트 랜 잭 션 처 리 를 하나의 SQL Server 데이터베이스 에서 서로 다른 SQL Server 환경 에서 다른 SQL Server 데이터베이스 로 이동 하 는 것 입 니 다.미 러 는 직접 접근 할 수 없습니다.그것 은 오류 가 복 구 된 상태 에서 만 접근 할 수 있다.
데이터베이스 미 러 를 진행 하 는 데 필요 한 최소 수 요 는 두 개의 서로 다른 SQL Server 운영 환경 을 포함한다.홈 서버 는'호스트'라 고 불 리 며 두 번 째 서버 는'준비 기'라 고 불 린 다.호스트 데이터 베 이 스 는 당신 이 실제로 사용 하고 있 는 데이터베이스 입 니 다.미 러 데이터 베 이 스 는 데이터베이스 의 예비 복사 입 니 다.기본 서버 에 트 랜 잭 션 을 기록 할 때 도 미 러 데이터 베 이 스 를 전송 하고 기록 합 니 다.
기본 과 미 러 를 제외 하고'증거'라 는 또 다른 선택 가능 한 구성 요 소 를 도입 할 수 있 습 니 다.인증 서버 는 세 번 째 SQL Server 2005 실행 인 스 턴 스 입 니 다.오류 복 구 를 언제 할 지 판단 할 때 기본 과 미 러 간 내부 교류 에 사 용 됩 니 다.자동 오류 복 구 를 실현 하고 싶 을 때 만 이 옵션 을 사용 합 니 다.그것 은 2 대 1 투표 능력 을 실현 했다.내 구성 요소 가 도달 할 수 없 기 때문에 오류 복구 가 필요 할 때.인증 서버 는 자동 오류 복 구 를 실현 하려 면 사용 해 야 합 니 다.
2.장점
다음 표 는 SQL Server 가용성 공식 솔 루 션 의 대조 표 입 니 다.현재 우리 센터 에서 사용 하 는 복구 모델 은'콜 드 백업'중의'백업/복구'입 니 다.일반적으로'열 백업'은'콜 드 백업'보다 가용성 이 높 고 회복 이 빠 르 며 우리 센터 의 현재 실제 상황 에 더욱 적합 합 니 다.비용 을 고려 하지 않 으 면'열 백업'중의'고장 이전 클 러 스 터'의 가용성 이 가장 높 지만 고장 이전 클 러 스 터 는 디스크 배열 을 빌려 야 하고 건설 자체 의 복잡성 이 비교적 높다.데이터베이스 미 러 의 구축 은 하드웨어 요구 가 많 지 않 습 니 다.적어도'고장 이전 클 러 스 터'처럼 저장 소 를 공유 해 야 한 다 는 요구 가 없습니다.
2.단점
(1)SQL Server 는 인 스 턴 스 여러 데이터 베 이 스 를 사용 하 는 제품 이기 때문에 데이터 베이스 미 러 기술 은 데이터 베 이 스 를 기반 으로 하 는 것 이기 때문에 매번 메 인 데이터 베 이 스 를 추가 할 때마다 데이터 베 이 스 를 추가 하고 새로 추 가 된 데이터 베 이 스 를 위해 미 러 관 계 를 구축 해 야 한다.
(2)데이터베이스 의 로그 인 이름과 사용 자 는 master 데이터베이스 에 저 장 됩 니 다.master 데이터 베 이 스 는 미 러 를 만 들 수 없 기 때문에 데이터 베 이 스 를 조작 할 때마다 로그 인 이름과 사용자 도 한 부 더 유지 해 야 합 니 다.
(3)데이터베이스 작업 은 해당 하 는 유 지 를 받 을 수 없다.
(4)마이크로소프트 는 미 러 가 클 라 이언 트 가 고장 에 대해 투명 하 게 할 수 있다 고 주장 하지만 실제 테스트 에서 특정한 조건 을 만족 시 켜 야 투명 화 를 실현 할 수 있 고 클 라 이언 트 가 지원 해 야 가능 하 다 는 것 을 발견 했다(.net Framework 2.0 이상,Microsoft jdbc 구동 1.1 이상).
(5)크로스 데이터베이스 사무 와 분포 식 사 무 는 모두 데이터베이스 미 러 를 지원 하지 않 습 니 다.
다른 몇 가지 방식 을 살 펴 보면'열 백업'의'고장 이전 군집'만 이런 문제 가 없다.
1.주 준비 장치 설정 1.물리 적 연결
메 인 데이터 베 이 스 를 그림 과 같이 연결 합 니 다.
2.SQL Server 2005 데이터베이스 검사
SQL Server 2005 표준 판,기업 판,개발 판 만 데이터 미 러 를 만 들 수 있다.다른 버 전 은 Express 가 인증 서버 로 만 사용 할 수 있 습 니 다.어떤 버 전이 있 는 지 잘 모 르 면 다음 문 구 를 실행 합 니 다.
clip_image004
clip_image002

select @@version;
이 데이터 베 이 스 를 데이터베이스 미 러 링 하려 면 전체 복구 모드 로 변경 해 야 합 니 다.Transact-SQL 로 이 목적 을 실현 하려 면 ALTER DATABASE 문 구 를 사용 하 십시오.

 USE master;
 ALTER DATABASE <DatabaeName> 
 SET RECOVERY FULL;

2.주요 사례 가 서로 통한다.
상호 통 화 를 실현 하려 면 도 메 인 이나 인증 서 를 사용 하여 실현 할 수 있 고 실현 의 간단 함 을 고려 하여 다음 과 같은 인증 서 를 선택 하 는 방식 으로 이 루어 집 니 다.메모:'주 데이터베이스 인 스 턴 스 상호 연결'을 실현 하기 위해 서 는 한 번 만 해 야 합 니 다.예 를 들 어 두 개의 SQL Server 2005 인 스 턴 스 중의 5 개의 데이터 베 이 스 를 미 러 관계 로 만 들 기 위해 서 는 다음 과 같은 조작 만 하면 됩 니 다.또는 이렇게 이해 합 니 다.모든 메 인 인 인 스 턴 스(데이터베이스 가 아 닌)가 서로 연결 합 니 다.
1.인증 서 를 만 듭 니 다(주 준 비 를 병행 할 수 있 습 니 다)

--    :

USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' , 
START_DATE = '01/01/2008';

--    :

USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'killkill';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate', 
START_DATE = '01/01/2008';

2.연결 점 만 들 기(주 준비 병행 실행 가능)

--    :

CREATE ENDPOINT Endpoint_Mirroring 
STATE = STARTED 
AS 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
FOR 
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

--    :

CREATE ENDPOINT Endpoint_Mirroring 
STATE = STARTED 
AS 
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) 
FOR 
DATABASE_MIRRORING 
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );

3.상호 연결 을 위 한 백업 인증서(주 준비 병행 실행 가능)

--    :

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\SQLBackup\HOST_A_cert.cer';
 --    :

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\SQLBackup\HOST_B_cert.cer';

4.인증서 교환
D:\\SQLBackup\에 백업 한 인증 서 를 호 환 합 니 다.즉,HOSTA_cert.cer 를 준비 장치 의 D:\SQLBackup\로 복사 합 니 다.HOST_B_cert.cer 를 호스트 의 D:\SQLBackup\로 복사 합 니 다.
5.로그 인 이름,사용자 추가(주 준비 병행 가능)
다음 작업 은 명령 행 을 통 해서 만 실 행 될 수 있 으 며,그래 픽 인 터 페 이 스 를 통 해 수행 할 수 없습니다.(문서 작성 이 끝 날 때 까지 SQL Server 2005 의 부정 확 한 번 호 는 SP2 입 니 다)

--    :

CREATE LOGIN HOST_B_login WITH PASSWORD = 'killkill';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\SQLBackup\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

--    :

CREATE LOGIN HOST_A_login WITH PASSWORD = 'killkill';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\SQLBackup\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

3.미 러 관 계 를 구축한다.
다음 절 차 는 각 데이터 베 이 스 를 대상 으로 진행 되 는 것 이다.예 를 들 어 기 존 호스트 중 5 개의 데이터 베 이 스 를 다음 과 같은 과정 으로 5 번 수행 해 야 한다.
1.수 동 으로 로그 인 이름과 비밀 번 호 를 동기 화 합 니 다.
제1장 에서 언급 한 데이터베이스 미 러 의 단점 중 하 나 는 로그 인 이름 을 유지 할 수 없 기 때문에 수 동 으로 로그 인 을 유지 해 야 합 니 다.
일반적으로 데이터 베 이 스 는 데이터 베 이 스 를 방문 하 는 사용자 로 서 몇 명의 사용자 가 있 고 데이터 베 이 스 는 해당 하 는 로그 인 이름 이 있 지만 준비 장치 에 해당 하 는 로그 인 이름 이 부족 합 니 다.예 를 들 어 특정한 업무 시스템 은'my user'를 로그 인 이름 으로 데이터 베 이 스 를 방문 하지만 준비 장치 에'my user'라 는 로그 인 이름 이 없 기 때문에 메 인 으로 전환 하면비 즈 니스 시스템 은 데이터 베 이 스 를 로그 인 할 수 없습니다.이런 상황 을'고립 된 사용자'라 고 합 니 다.
주 데이터베이스 에서 다음 문장 을 실행 합 니 다:

USE master;
select sid,name from syslogins;

상기'my user'와 같은 사용자 이름과 sid 를 찾 습 니 다.
데이터베이스 에 다음 문장 을 실행 합 니 다:

USE master;
exec sp_addlogin 
@loginame = '<LoginName>', 
@passwd = '<Password>', 
@sid = <sid> ;

여기 있 는'LoginName'은 주 데이터베이스 의 로그 인 이름 입 니 다.sid 는 위 에서 SQL 문 구 를 통 해 찾 은 sid 입 니 다.
예 를 들 어 조 회 된 sid 와 name 은 다음 과 같다.
sid name
---------------------------------- -----------------
0x074477739DCA0E499C29394FFFC4ADE4 cz_account
로그 인 이름 의 SQL 문 구 를 만 듭 니 다:

USE master;
exec sp_addlogin 
@loginame = 'cz_account', 
@passwd = 'password', 
@sid = 0x074477739DCA0E499C29394FFFC4ADE4;

지금까지 예비 데이터베이스 의 환경 이 호스트 와 동기 화 되 었 고 데이터베이스 안의 데이터 가 동기 화 되 지 않 았 다 고 볼 수 있다.
2.준비 기기 데이터베이스
위의 글 을 받 아들 이 고 이 절 은 메 인 데이터베이스 안의 데 이 터 를 어떻게 동기 화 하 는 지 설명 합 니 다.
방금 사용 한 모든 파일 에서 복원 을 시도 할 수 있 습 니 다.데 이 터 를 복원 할 때'with non recover'를 선택해 야 합 니 다.그림 에서 보 듯 이:
실행 에 성공 하면 데이터 베 이 스 는 이렇게 됩 니 다clip_image008
3.미 러 구축
실험 이기 때문에 서버 에 더 블 네트워크 카드 를 설정 하지 않 았 습 니 다.IP 주 소 는 그림 과 다 르 지만 원리 가 같 습 니 다.
--호스트 실행:
ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.45:5022';
--주체 가 실행 에 성공 하지 못 하면 다음 과 같은 문 구 를 준비 기 에서 실행 하려 고 시도 합 니 다.
ALTER DATABASE shishan SET PARTNER = 'TCP://10.168.6.49:5022';
실행 에 성공 하면 메 인 데이터 베 이 스 는 위의 그림 과 같은 아이콘 을 보 여 줍 니 다.
구축 에 실패 하면 데이터베이스 트 랜 잭 션 로그 가 동기 화 되 지 않 았 음 을 알려 줍 니 다.주 데이터베이스 의 데이터(로그)가 동기 화 되 지 않 았 다 고 합 니 다.주 데이터베이스 에 있 는 데이터 가 일치 하도록 주 데이터베이스 에'트 랜 잭 션 로그'백업 을 실시 하고 데이터베이스 에 복원 해 야 합 니 다.백업"사무 로그"그림 참조:
트 랜 잭 션 로 그 를 복원 할 때 옵션 에서"restore with norecovery"를 선택해 야 합 니 다.그림 참조:
clip_image015
clip_image013
clip_image011
clip_image009
clip_image006
복원 에 성공 한 후 미 러 를 만 드 는 SQL 문 구 를 실행 합 니 다.
4.테스트 조작
1.교환
--호스트 실행:
USE master;
ALTER DATABASE SET PARTNER FAILOVER;
2.메 인 서버 다운,비상 시동 및 서비스 시작
--대기 실행:
USE master;
ALTER DATABASE SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
3.원래 의 메 인 서버 가 복구 되 어 계속 작업 할 수 있 습 니 다.미 러 를 다시 설정 해 야 합 니 다.
4.원래 메 인 서버 복구,계속 작업 가능
--기본적으로 트 랜 잭 션 보안 단 계 는 FULL,즉 동기 실행 모드 로 설정 되 고 SQL Server 2005 표준 판 은 동기 화 모드 만 지원 한다.
--트 랜 잭 션 보안 을 닫 으 면 세 션 을 비동기 실행 모드 로 전환 할 수 있 으 며,이 모드 는 성능 을 최 적 으로 할 수 있 습 니 다.
USE master;
ALTER DATABASE SET PARTNER SAFETY FULL; --트 랜 잭 션 보안,동기 화 모드
ALTER DATABASE SET PARTNER SAFETY OFF; --트 랜 잭 션 안전 하지 않 음,비동기 모드

좋은 웹페이지 즐겨찾기