工作組模式下SQL Server 2008 R2 數據庫鏡像


生產環境要上鏡像,自己又做了一遍測試,總結記錄一下。

目的:實現關鍵數據庫的熱備和故障自動切換。

環境:Win2008_R2_X64,SQLServer2008_R2_X64,WorkGroup網絡模式。

數據庫:people

主機:192.168.1.3

鏡像機:192.168.1.110

見證機:192.168.1.111

准備工作:

  1. 打開每個實例的RemoteDACEnable.

    方法:SSMS選中實例右鍵Facets(方面)在Facet列表選中"Surface area configuration"設定"RemoteDacEnabled"為true。    

  2. 在每台Server的防火牆入站規則中添加鏡像所需端口(我用的是5022).

    方法:開始控制面板Windows防火牆高級設置入站規則新增規則    

  3. 對主機的people數據庫做一個全備和事務日志備份並將其COPY到鏡像機上用Replace,NoRecovery選項恢復。

    主機備份:

    USE master

    GO

    BACKUP DATABASE [people] TO DISK = N'D:\people.bak'

    WITH FORMAT, INIT, NAME = N'people-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;

    GO

    BACKUP LOG [people] TO DISK = N'D:\people.bak'

    WITH NOFORMAT, NOINIT, NAME = N'people-Transaction Log Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;

    GO

鏡像恢復:

USE master

GO

RESTORE DATABASE [people] FROM DISK = N'F:\people.bak'

WITH FILE = 1,

NORECOVERY, NOUNLOAD, REPLACE, STATS = 10

GO

RESTORE LOG [people] FROM DISK = N'F:\people.bak'

WITH FILE = 2, NORECOVERY, NOUNLOAD, STATS = 10

GO

實施,以下步驟按編號順序執行:

1. 主機上執行:

USE master

GO

--創建證書,並備份

CREATE MASTER KEY ENCRYPTION BY PASSWORD=N'joe123';

CREATE CERTIFICATE Cert_JOEPC

WITH SUBJECT=N'JOEPC Certificate',START_DATE='20120405',EXPIRY_DATE='20990405';

BACKUP CERTIFICATE Cert_JOEPC TO FILE=N'C:\Cert_JOEPC.cer';

GO

--創建鏡像端口

CREATE ENDPOINT EP_JOEPC_Mirr

STATE=STARTED

AS TCP

(

LISTENER_PORT=5022,

LISTENER_IP=ALL

)

FOR DATABASE_MIRRORING

(

AUTHENTICATION=CERTIFICATE Cert_JOEPC,

ENCRYPTION=REQUIRED ALGORITHM AES,

ROLE=PARTNER

)

 

                 GO

2. 鏡像機上執行:

USE master

GO

--創建證書,並備份

CREATE MASTER KEY ENCRYPTION BY PASSWORD=N'joe123';

CREATE CERTIFICATE Cert_110

WITH SUBJECT=N'Certificate 110',START_DATE='20120405',EXPIRY_DATE='20990405';

BACKUP CERTIFICATE Cert_110 TO FILE=N'C:\Cert_110.cer';

GO

--創建鏡像端口

CREATE ENDPOINT EP_110_Mirr

STATE=STARTED

AS TCP

(

LISTENER_PORT=5022,

LISTENER_IP=ALL

)

FOR DATABASE_MIRRORING

(

AUTHENTICATION=CERTIFICATE Cert_110,

ENCRYPTION=REQUIRED ALGORITHM AES,

ROLE=PARTNER

)

GO

 

3. 見證機上執行:

USE master

go

--創建證書,並備份

CREATE MASTER KEY ENCRYPTION BY PASSWORD =N'joe123';

CREATE CERTIFICATE Cert_111

WITH SUBJECT=N'Certificate 111';

BACKUP CERTIFICATE Cert_111 TO FILE=N'C:\Cert_111.cer';

GO

--創建鏡像端口

CREATE ENDPOINT EP_111_Mirr

AS TCP

(

LISTENER_PORT=5022,

LISTENER_IP=ALL

)

FOR DATABASE_MIRRORING

(

AUTHENTICATION=CERTIFICATE Cert_111,

ENCRYPTION=REQUIRED ALGORITHM AES,

ROLE=WITNESS

)

 

            GO

4. 把上面三個步驟中備份的證書COPY到每台機,確保每台機都有此三個證書。

5. 主機上執行:

             USE master

       GO

--為鏡像機訪問主機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_110 WITH PASSWORD=N'joe123';

CREATE USER User_For_110 FOR LOGIN Login_For_110;

CREATE CERTIFICATE Cert_For_110 AUTHORIZATION User_For_110 FROM FILE=N'C:\Cert_110.cer';

GRANT CONNECT ON ENDPOINT::EP_JOEPC_Mirr TO Login_For_110;

GO

--為見證機訪問主機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_111 WITH PASSWORD=N'joe123';

CREATE USER User_For_111 FOR LOGIN Login_For_111;

CREATE CERTIFICATE Cert_For_111 AUTHORIZATION User_For_111 FROM FILE=N'C:\Cert_111.cer';

GRANT CONNECT ON ENDPOINT::EP_JOEPC_Mirr TO Login_For_111;

       GO

6. 鏡像機上執行:

USE master

GO

--為主機訪問鏡像機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_JOEPC WITH PASSWORD=N'joe123';

CREATE USER User_For_JOEPC FOR LOGIN Login_For_JOEPC;

CREATE CERTIFICATE Cert_For_JOEPC AUTHORIZATION User_For_JOEPC

FROM FILE =N'c:\Cert_JOEPC.cer';

GRANT CONNECT ON ENDPOINT::EP_110_Mirr TO Login_For_JOEPC;

GO

--為見證機訪問鏡像機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_111 WITH PASSWORD=N'joe123';

CREATE USER User_For_111 FOR LOGIN Login_For_111;

CREATE CERTIFICATE Cert_For_111 AUTHORIZATION User_For_111

FROM FILE =N'c:\Cert_111.cer';

GRANT CONNECT ON ENDPOINT::EP_110_Mirr TO Login_For_111;

GO

 

7. 見證機上執行:

USE master

GO

--為主機訪問見證機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_JOEPC WITH PASSWORD=N'joe123';

CREATE USER User_For_JOEPC FOR LOGIN Login_For_JOEPC;

CREATE CERTIFICATE Cert_For_JOEPC AUTHORIZATION User_For_JOEPC FROM FILE=N'c:\Cert_JOEPC.cer';

GRANT CONNECT ON ENDPOINT::EP_111_Mirr TO Login_For_JOEPC;

GO

--為鏡像機訪問見證機的鏡像端口而創建登錄和用戶,並授予連接權限

CREATE LOGIN Login_For_110 WITH PASSWORD=N'joe123';

CREATE USER User_For_110 FOR LOGIN Login_For_110;

CREATE CERTIFICATE Cert_For_110 AUTHORIZATION User_For_JOEPC FROM FILE=N'c:\Cert_110.cer';

GRANT CONNECT ON ENDPOINT::EP_111_Mirr TO Login_For_110;

GO

8. 鏡像機上執行:

      ALTER DATABASE people SET PARTNER =N'TCP://192.168.1.3:5022';

9. 主機上執行:

ALTER DATABASE [people] SET PARTNER=N'TCP://192.168.1.110:5022';

ALTER DATABASE [people] SET WITNESS=N'TCP://192.168.1.111:5022';

10. 完成以上步驟,正常情況,people數據庫鏡像就建立起來了。將會看到:

主機:

鏡像機:

然后在主機上簡單地查詢一下見證機的狀態:我這里的見證機因為后來重新用GUI配置過,所以顯示為計算機名。

SELECT 'people' AS [DB_Name],mirroring_role_desc,

mirroring_partner_name,mirroring_witness_name,mirroring_witness_state_desc

FROM sys.database_mirroring

WHERE database_id=DB_ID(N'people')

總結:

  1. 工作組模式下,曾經遇到過兩次主機和鏡像配置成功,見證機總是連接不上的問題。我嘗試過以下方法解決:
    1. 檢查網絡聯通性,確保見證機的IP和端口可用。
    2. 給每台機加上FQDN,即設置同樣的DNS后綴名。(方法:計算機右鍵,屬性更改設置更改其他DNS后綴)
    3. 修改每台機的HOST文件,將計算機名和IP綁定。
    4. 用SSMS GUI重新配置一次見證機。
  2. 還遇到過一些其它問題,錯誤提示很明顯,根據其基本能解決。最常見無法建立鏡像的錯誤,是因為鏡像未能與主機一致,備份主機日志到鏡像恢復一次或者重做鏡像。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM