环境:
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的搭建完成
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25583515/viewspace-2636654/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25583515/viewspace-2636654/