简介:
1.数据库的模式要是完整模式。
2.要对数据库完整备份和事务日志备份,分别还原到镜像库上,使用NORECOVERY模式。
3.镜像数据库是不允许删除和操作,即便查看属性也不行。
4.删除的时候要先删除端点,再删除证书,再删除主密钥。
5.只有是同步模式的时候,才能手动故障转移,异步模式不能手动故障转移
一,搭建环境:
1,由于工作便利,我这边是三台有公网ip的云服务器。
windows 2008 系统, Microsoft SQL Server 2008 R2 (SP3) ,三台服务器用2台实现数据库镜像同步,一台做见证服务器。
2,防火墙开启1433,5022端口 入站规则–新建规则–端口–添加1433 5022
3,修改hosts文件 C:\Windows\System32\drivers\etc\hosts ip +主机名(计算机名)中间用空格
4,在三台服务器中分别打开SQL Server配置管理器,启用TCP/IP协议
5, 在三台服务器中分别打开SQL Server Management Studio,右键实例选择“方面–外围应用配置器–true
二,正式搭建
1,创建数据库
ldclouda24999—-*.*.*.242—-主体 clouda25000—- *.*.*.243—-镜像 clouda25000—- *.*.*.244—-见证
以下用ip左后一段代替,方便描述。
在242新建数据库DBO1
2,备份数据库DBO1
3,备份事务日志
4,将备份文件拷贝到镜像服务器243对应的路径,默认备份路径为
“C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
5,在镜像服务器243–新建与主题服务器242同名数据库–还原–让数据库处于还原状态
三,证书认证配置
1、创建主密钥(主库和镜像库,见证服务器上都执行)
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘landui@123’;
2,创建主库和镜像库的证书( 主库和镜像库,见证服务器上都执行 )注意修改证书名字,为每台服务器证书取一个一个名字,我这边是用ip最后一段命名。
CREATE CERTIFICATE Cert242
WITH Subject = ‘Cert242’,
Expiry_Date = ‘2030-1-1’;
3、创建主库和镜像库和见证服务器的端点。 (主库和镜像库,见证服务器上都执行 ,注意修改cert242)
use master
go
create endpoint Endpoint_Mirroring
state=started
as tcp ( listener_port = 5022,listener_ip = all )
for database_mirroring ( authentication = certificate cert242, encryption = required algorithm aes, role = all )
Go
4,备份证书 ( 主库和镜像库,见证服务器上都执行 ) 建一个文件夹,指定路径。
(主库和镜像,见证服务器的证书都备份,并互相拷贝过去,保证每个服务器上都有3个证书)
use master
go
backup certificate cert242 to file = ‘D:\cert\cert242.cer’
go
5、创建登录名,就是其他两台的登陆名,(这个要和证书关联,所以242创建243,244的;243创建的242,244;244创建242,243)
use master
go
create login login_243 with password=’landui@123′
create login login_244 with password=’landui@123′
go
6、创建使用该登录名的用户
use master
go
create user user_243 for login login
_243create user user_244 for login login
_244go
7、证书与用户关联 ( 主库和镜像库,见证服务器上都执行 ) 执行其他两台的 把user和cert修改为其他两台的
use master
go
create certificate cert243
authorization user_243
from file=’D:\cert\cert243.cer’
go
use master
go
create certificate cert244
authorization user_244
from file=’D:\cert\cert244.cer’
go
8、授予对远程数据库端点的登录名的CONNECT权限 ( 主库和 ( 主库和镜像库,见证服务器上都执行 ) 执行其他两台的 把login修改为其他两台的
use master go GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [login_243]; go use master go GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [login_244]; go
9、对需要做镜像的数据库243做完整备份和事务日志备份,然后在镜像库上做还原(先还原完整备份,再还原事务日志),使用NORECOVERY模式,这里不做阐述上边说过,最后还原后的数据库状态如下:
10.连接镜像(先在镜像库243上操作,然后在主库242上操作)
注: ldclouda24999和 clouda25000 是2台机器的机器名
ldclouda24999—-*.*.*.242—-主体 clouda25000—- *.*.*.243—-镜像 clouda25000—- *.*.*.244—-见证
镜像库上执行:(做完这个操作后,数据库243的状态:正在恢复,)
use master go ALTER DATABASE test SET PARTNER = 'TCP://ldclouda24999:5022'; go 主库上执行: use master go ALTER DATABASE test SET PARTNER = 'TCP://ldclouda245000:5022'; go 下一篇