非域环境下SQL Server mirror建立

来源:这里教程网 时间:2026-03-02 11:26:29 作者:

环境: SQLServer2012SP1 主:10.202.11.47 备:10.202.11.49 不配置见证服务器   步骤: 第1 步:创建master key(主密钥) 主库中执行:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Aa000000' 查看主密钥是否建立:

select is_master_key_encrypted_by_server ,*   from sys . databases   备库中执行同样操作:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Aa000000'   第2 步:创建证书使用密钥加密 主库中执行: 

USE master

GO  

CREATE CERTIFICATE Host_A_Cert  

WITH Subject = 'Host_47 Certificate' ,

Expiry_Date = '2055-1-1' ; -- 过期日期

  备库中执行:

USE master

GO  

CREATE CERTIFICATE Host_B_Cert  

WITH Subject = 'Host_49 Certificate' ,

Expiry_Date = '2055-1-1' ; -- 过期日期   第3 步:创建endpoint 主库中执行:

IF NOT EXISTS

( SELECT 1 FROM sys . database_mirroring_endpoints )  

    BEGIN  

    CREATE 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 )

    END   如果存在endpoint则可以修改使用

SELECT   *    FROM   sys . database_mirroring_endpoints

 

ALTER 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 )   备库中执行:

IF NOT EXISTS

( SELECT 1 FROM sys . database_mirroring_endpoints )  

    BEGIN  

    CREATE 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 )

    END   第4 步:备份证书

主备库OS中创建文件夹 C:\MIRROR   主库中执行:

BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\MIRROR\HOST_A_cert.cer' ;   备库中执行:

BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\MIRROR\HOST_B_cert.cer' ; 主备库OS中相互copy证书   第5 步:创建登录login 主库中执行:

CREATE LOGIN Host_B_Login WITH PASSWORD = 'Password666'   备库中执行:

CREATE LOGIN Host_A_Login WITH PASSWORD = 'Password666'   第6 步:创建User并映射到login 主库中执行:

CREATE USER Host_B_User For Login Host_B_Login ;   备库中执行:

CREATE USER Host_A_User For Login Host_A_Login ;     第7 步:创建证书,并使用从伙伴服务器中copy过来的证书导入,再授权证书给账号 ***************************************** 如果存在则先删除

IF EXISTS( select * from sys . certificates WHERE name = 'HOST_B_cert' )

DROP CERTIFICATE HOST_B_cert

GO *****************************************   主库中执行:

CREATE CERTIFICATE Host_B_Cert AUTHORIZATION Host_B_User FROM FILE = 'C:\MIRROR\Host_B_Cert.cer' ;   备库中执行:

CREATE CERTIFICATE Host_A_Cert AUTHORIZATION Host_A_User FROM FILE = 'C:\MIRROR\Host_A_Cert.cer' ;   第8 步:授权connect on endpoint权限至login 主库中执行:

GRANT CONNECT ON ENDPOINT :: [Mirroring] TO [Host_B_Login]

  备库中执行:

GRANT CONNECT ON ENDPOINT :: [Mirroring] TO [Host_A_Login]   第9 步:备份还原db 主库中执行: 右键需要做mirror的DB->Tasks->back up... Backup type选择Full,并设置back up to:备份文件目录,之后点OK完成Full backup 再Backup type选择Transaction log,并设置back up to:备份文件目录, Options->Overwrite media->Back up to the existing media set,之后点OK完成Transaction backup 备库中执行: 右键database->restore database Device选择主库已备份的文件 Options->recovery state:选择restore with norecovery模式还原,否则会报错Msg 1416 点击OK   第10 步:开启mirror 在备库上执行( 必须备库上先执行 ): IP TCP://10.202.11.47:5022 为主库IP

ALTER DATABASE mesdb SET PARTNER = 'TCP://10.202.11.47:5022' ;   在主库上执行: IP TCP://10.202.11.49:5022 为备主库IP

ALTER DATABASE mesdb SET PARTNER = 'TCP://10.202.11.49:5022' ;   此时,mirror已经开启。主库状态已变为principal, synchronized   另,根据需求可以修改mirror为high performance模式(默认试high safety)

ALTER DATABASE mesdb SET SAFETY OFF   第11 步:可以对备库mirror DB建立只读快照DB(选用)

备库中执行:

create database snap_mesdb

on ( name = mesdb ,   -- 文件逻辑名,需要和 mes 中一致

filename = 'c:\db_snapshot\snap_mes_1.ss' –- 快照物理文件名,可随便取

)

as snapshot of mesdb --- 需要做快照的 DB   至此,非域环境中SQL Server mirror的搭建完成

相关推荐