Sql server 2008鏡像配置步驟


下面主要是2008 MSSQL的一個鏡像安裝步驟,使用到的工具是mssql自帶的Management Studio

purpose : SQL SERVER 2008 mirror configuration
Created : 2012-04-13
Author   : kenyon

鏡像安裝的環境:
主機:win server 2003,sql server 2008,IP:192.168.9.182 PC帳戶:administrator
備機:win server 2003,sql server 2008,IP:192.168.9.181 PC帳戶:administrator
無見證服務器(witness)

說明:
a.鏡像服務器備份的是用戶的數據庫,不是系統的數據庫,好比不能鏡像master,msdb,model和tempdb
b.鏡像的數據庫對象恢復模式必須是完整的,不能是簡單和大容量日誌類型的
c.備機鏡像不能被訪問,正常狀況下一直處於正在還原的狀態
d.主機能夠被訪問,正常狀況下一直處於主體正在同步的狀態
e.主機和備機的5022端口必須沒有被佔用,能夠用telnet 192.168.9.182 5022來驗證

0.肯定主機的恢復模式是完整性恢復的
USE master;
ALTER DATABASE backuptest SET RECOVERY FULL;

1.建立證書,實現互通的根本
--主機
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,
START_DATE = '09/20/2011',EXPIRY_DATE = '01/01/2099';

--備機
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',
START_DATE = '09/20/2011' ,EXPIRY_DATE = '01/01/2099';

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:\working\HOST_A_cert.cer';
--備機
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\working\HOST_B_cert.cer';

4.主備之間互換證書
將主機上產生的證書HOST_A_cert複製到備機上,將備機上產生的證書HOST_B_cert複製到主機上,放在第5步指定的目錄

5.新增主備登錄用戶
--主機
CREATE LOGIN HOST_B_login WITH PASSWORD = 'clq';  --主機上登陸到備機的用戶
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\working\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

--備機
CREATE LOGIN HOST_A_login WITH PASSWORD = 'clq';  --備機上登陸到主機的用戶
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\working\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];


6.登陸名維護,即主機與備機有相同的登陸用戶,防止切換到備機時業務沒法登陸,假如主備登陸用戶一致,此步驟可免
--主機
use master;
select sid,name from syslogins where name = 'clq';
sid                                        name
0xC6C9DB1494DA514882D4BEAA362A8FB7        clq

--備機
USE master;
exec sp_addlogin
@loginame = 'clq',
@passwd = 'clq',
@sid = 0xC6C9DB1494DA514882D4BEAA362A8FB7 ;


----如下步驟是針對每一個庫執行的,有幾個庫就執行幾回

7.準備備機數據庫
--主機
backup database backuptest to disk= 'E:\database\sql server\MSSQL10.MSSQLSERVER\MSSQL\Backup\backuptest.log'
with init
go

--備機
將主機上備份的文件複製到備機上,並還原備機數據庫,還原時必須指定norecovery參數
create database backuptest;   --該步驟爲備機上無此數據時需先建立一個空數據庫,若已有則直接恢復
restore database backuptest from disk = 'E:\working\backuptest.log' with norecovery;
恢復時指定覆蓋原有備機數據庫便可。

當恢復時報錯時能夠參考用replace參數(首次恢復)
restore database EOL_TCCLUB FROM disk= 'd:\backup\EOL_TCCLUB.bak'
with move 'AC_SSC_BZ' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.mdf',
move 'AC_SSC_BZ_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.ldf',
replace,norecovery.

若是還不行,報錯信息如:日誌尾部未備份之類信息,則去主機上備份日誌文件,在備機上作恢復,恢復時一樣指定norecovery。

8.增長鏡像夥伴,須要先在備機上執行,再執行主機
--備機
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.181:5022';
--主機
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.182:5022';

執行成功之後,主機上數據庫backuptest會顯示主體正在同步字樣,備機數據庫會顯示正在還原字樣。若上述步驟
有報日誌錯誤,則還需從主機上備份日誌文件,而後在備機上還原,還原日誌時一樣須要指定norecovery

9.鏡像與主體切換
--主機
use master;
alter database backuptest set partner failover;
執行成功後原主體數據庫會顯示正在還原,備機數據庫顯示主體正在同步字樣

10.測試主備切換
主機崩潰,強制備機當主機,原主機恢復後再切換回去
主機A
備機B
此時,在B機上執行
use master;
alter database backuptest set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --強制接收
中止主機A的SQL SERVER 服務(好比斷電),此時備機上的數據庫會顯示正在恢復狀態,大概持續幾十秒,最後變成
backuptest(主體,已斷開連接),即如今的鏡像B能夠用來充當主機了
假如如今有業務往數據庫裏插也是能成功的
如今把原主機A恢復(通電),而後在B機裏操做
use master;
alter database backuptest set partner resume;
此時A機是做爲鏡像的,B機是做爲主機的,要再切換一下,則再在B上執行
alter database backuptest set partner failover; sql

相關文章
相關標籤/搜索