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 Server 2008數據庫複制是通過發布/訂閱的機制進行多台伺服器之間的數據同步,我們把它用于數據庫的同步備份.這裏的同步備份指的是備份伺服器與主伺服器進行及時數據同步,正常情況下只使用主數據庫伺服器,備份伺服器只在主伺服器出現故障時投入使用.它是一種優于文件備份的數據庫備份解決方案.在選 ...
  • 怎麽安裝SQL Server 2008數據庫
    怎麽安裝SQL Server 2008數據庫 | 浏覽:7126 | 更新:2014-05-18 22:42 1 2 3 4 5 6 7 分步閱讀 SQL Server 2008是一個重大的版本,它推出了許多新的特性和關鍵的改進,使得它成爲至今爲止的最強大和最全面的SQL Server版本.  在現 ...
  • 使用Oracle Sql Developer將SQL SERVER 2008數據庫移植到Ora
    使用手工轉換SQL腳本的方式進行數據庫的遷移,其間過程相當繁瑣,特別是標識符長度的限制讓我焦頭爛額,因爲我們的系統中長標識符真是多如繁星,另外,表結構建好之後,數據的遷移又是一個相當複雜的過程,因爲修改了不少的表名,需要把導出的數據和表一一對應上.       但是,除了手工的方式之外,其實我們還有 ...
  • SQL Server 2008 R2安裝失敗,錯誤代碼1605
            因爲要寫機房收費系統文檔,所以再次安裝SQL Server 2008 R2.裝數據庫之前我就預料到會出問題,我一路的忐忑,當運行到安裝程序支持文件的步驟時(圖如下:)"嘀的一聲..." 彈出錯誤如下:上網查的時候,我也很浮躁,看了好多信息後,多說是以前沒卸載幹淨S ...
  • TDE(透明數據加密)是SQL Server 2008中的一個新特性;它提供了對數據和日志文件的及時加密.數據在它寫到磁盤之前進行加密;當它從磁盤讀出來時進行解密.TDE的"透明"是指加密是由數據庫引擎來執行的,而SQL Server客戶端對此完全不知道.要進行加密和解密不必編寫 ...
  •     表值參數是 SQL Server 2008 中的新參數類型.表值參數是使用用戶定義的表類型來聲明的.使用表值參數,可以不必創建臨時表或許多參數,即可向 Transact-SQL 語句或例程(如存儲過程或函數)發送多行數據.    表值參數與 OLE DB 和 ODBC 中的參數數組類似,但具 ...
  • ----------------------------------------------------------------------------  Author : htl258(Tony)--  Date   : 2010-04-29 19:07:45--  Version:Microso ...
  • LVS-DR模型:LVS持久連接:使用ipvsadm實現其配置步驟
    使用VS/TUN方法:   VS/TUN的連接調度和管理與VS/NAT中的一樣,只是它的報文轉發方法不同.調度器根據各個伺服器的負載情況,動態地選擇一台伺服器,將請求報文封裝在另一個IP報文中,再將封裝後的IP報文轉發給選出的伺服器:伺服器收到報文後,先將報文解封獲得原來目標地址爲VIP的報文,伺服 ...
一周排行