- 通过备份方式准备镜像数据库
BACKUP
DATABASE
[
mydb
]
TO
DISK
= N‘D:backupmydb.bak‘WITH NOFORMAT, NOINIT, NAME = N‘mydb-完整数据库备份 ‘, SKIP, NOREWIND, NOUNLOAD, STATS =10GOBACKUPLOG[mydb]TODISK= N‘D:backupmydb.trn‘WITH NOFORMAT, NOINIT, NAME = N‘mydb-事务日志 备份‘ , SKIP , NOREWIND , NOUNLOAD , STATS =10GO
将备份拷贝到镜像服务器上,在镜像服务器上恢复备份,需要指定RESTORE WITH NORECOVERY
RESTORE
DATABASE
[
mydb
]
FROM
DISK
= N‘D:backupmydb.bak‘WITHFILE=1, NORECOVERY , NOUNLOAD , STATS =10GORESTORELOG[mydb]FROMDISK= N‘D:backupmydb.trn‘WITHFILE=1, NORECOVERY, NOUNLOAD, STATS =10GO
- 配置出站连接和证书
主体数据库配置如下:
--
创建密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD =‘password‘SELECT*FROM sys.symmetric_keys
--创建证书CREATE CERTIFICATE cert_3_100
WITH SUBJECT =‘HOST_A certificate for database mirroring‘,
EXPIRY_DATE =‘1/1/2020‘SELECT*FROM sys.certificates ;
--创建端点CREATE ENDPOINT master_instance
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP =ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE cert_3_100
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE =ALL
)
SELECT name , role_desc , state_desc , connection_auth_desc , encryption_algorithm_desc
FROM sys.database_mirroring_endpoints
--备份证书到其他系统BACKUP CERTIFICATE cert_3_101 TOFILE=‘d:cert_3_100.cer‘;
GO
镜像数据库配置如下:
--
创建密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD =‘password‘SELECT*FROM sys.symmetric_keys
--创建证书CREATE CERTIFICATE cert_3_101
WITH SUBJECT =‘HOST_A certificate for database mirroring‘,
EXPIRY_DATE =‘1/1/2020‘SELECT*FROM sys.certificates ;
--创建端点CREATE ENDPOINT backup_instance
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP =ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE cert_3_101
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE =ALL
)
SELECT name , role_desc , state_desc , connection_auth_desc , encryption_algorithm_desc
FROM sys.database_mirroring_endpoints
--备份证书到其他系统BACKUP CERTIFICATE cert_3_101 TOFILE=‘d:cert_3_101.cer‘;
GO
- 配置入站连接和证书
主体数据库配置如下:
USE
master
--
为其他系统创建登录名
CREATE LOGIN login_3_101 WITH PASSWORD =‘password‘;
SELECT*FROM sys.server_principals
--创建一个使用该登录名的用户CREATEUSER user_3_101 FOR LOGIN login_3_101
SELECT*FROM sys.sysusers
--将证书与用户关联,并将镜像库生成的证书文件放到指定目录中CREATE CERTIFICATE cert_3_101
AUTHORIZATION user_3_101
FROMFILE=‘d:cert_3_101.cer‘SELECT*FROM sys.certificates
--授权对远程镜像端点的登录名的 CONNECT权限,授权完成后,完成对登录到所需的证书身份验证的设置GRANT CONNECT ON ENDPOINT::master_instance TO login_3_101
镜像数据库配置如下:
USE
master
--
为其他系统创建登录名
CREATE LOGIN login_3_100 WITH PASSWORD =‘password‘;
SELECT*FROM sys.server_principals
--创建一个使用该登录名的用户,并将主体库生成的证书文件放到指定目录中CREATEUSER user_3_100 FOR LOGIN login_3_100
SELECT*FROM sys.sysusers
--将证书与用户关联CREATE CERTIFICATE cert_3_100
AUTHORIZATION user_3_100
FROMFILE=‘d:cert_3_100.cer‘SELECT*FROM sys.certificates
--授权对远程镜像端点的登录名的 CONNECT权限,授权完成后,完成对登录到所需的证书身份验证的设置GRANT CONNECT ON ENDPOINT::backup_instance TO login_3_100
- 配置镜像
选择主体数据库mydb数据库对象右键->任务->镜像->配置安全性
因为要采用高性能方式,所以不需要见证服务器
当同步完成后,主体数据库会显示“(主体,已同步)”,镜像数据库会显示(已同步,正在还原)
步骤2:配置分发服务器
- 在发布服务器、分发服务器和订阅服务器配置hosts文件,加入如下配置:
- 将10.86.3.102配置成分发服务器,分发数据库的快照文件建议配置相应的访问权限,因为我的账户有访问权限,所以略去这步
点击添加
- 在分发服务器属性对话框中启用发布服务器
- 在主体数据库(发布数据库)和镜像数据库中指定分发数据库

如果要发布的数据库非常大,建议选择业务空闲期进行初始化快照

输入代理名称,取消勾选“仅显示次配置文件中使用的参数”,指定 –PublisherFailoverPartner 代理参数的镜像名称WIN-3-100

USE
mydb
INSERT
INTO Admin( user_name) VALUES(‘master‘ )
SELECT*FROM admin WHEREuser_name=‘master‘
连接订阅库,查询插入数据
USE
mydb
SELECT
*
FROM admin WHEREuser_name=‘master‘
use
master ;
alter
database mydb set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --强制接收
USE
mydb
INSERT
INTO Admin( user_name) VALUES(‘mirror‘ )
SELECT*FROM admin WHEREuser_name=‘mirror‘
在订阅服务器查看:
USE
mydb
SELECT
*
FROM admin WHEREuser_name=‘mirror‘
use
master ;
alter
database mydb set partner resume;
原文:http://www.cnblogs.com/datazhang/p/6142349.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!