SQL Server数据库镜像笔记
1.主服务器与镜像服务器创建1个同样用户名,密码的账号
2.主服务器与镜像服务器更改数据库服务的账号为刚创建的账号
3.按照http://liulike.blog.51cto.com/1355103/339183的步骤完成配置
解决方法为:配置两台机器上,启动sql server为同一名字账户,且密码要相同;重启SQL Server服务; 然后在两机器上,都删除端点(drop endpoint ...),再重启配置。
不知道好不好用 等下看看~~~:)
1. 首先要将主数据库恢复模式设置为完整:alter database WLDB set recovery full with no_wait
2.备份主数据库和日志:
BACKUP DATABASE [WLDB] TO DISK = N'D:\Backup\WLDB.bak' WITH NOFORMAT, NOINIT, NAME = N'WLDB-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
BACKUP LOG [WLDB] TO DISK = N'D:\Backup\WLDB.bak' WITH NOFORMAT, NOINIT, NAME = N'WLDB-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
3.在镜像服务器上以不回滚提交事务方式恢复数据库:
RESTORE DATABASE [WLDB] FROM DISK = N'D:\Backup\WLDB.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [WLDB] FROM DISK = N'D:\Backup\WLDB.bak' WITH FILE = 2, NORECOVERY, NOUNLOAD, STATS = 10
GO
配置出站连接的进程分为以下基本步骤:
- 在 master 数据库中,创建数据库主密钥。
- 在 master 数据库中,为服务器实例创建加密证书。
- 使用服务器实例的证书为该服务器实例创建端点。
- 将证书备份到文件,并将其安全地复制到其他系统。
1. 在主服务器上执行下列命令:
在 master 数据库中,创建数据库主密钥。
create master key encryption by password='pass@word1'
在 master 数据库中,为服务器实例创建加密证书。
create certificate Host_A_cert with subject='HOST_A_certificate',start_date = '01/01/2010', expiry_date='01/01/2099'
SELECT * FROM sys.certificates;
使用服务器实例的证书为该服务器实例创建端点。
create endpoint 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)
go
SELECT name, role_desc, state_desc, connection_auth_desc, encryption_algorithm_desc FROM sys.database_mirroring_endpoints;
将证书备份到文件,并将其安全地复制到其他系统。
backup certificate HOST_A_cert to FILE='C:\HOST_A_cert.cer'
2.在镜象服务器上执行同样的操作:
create master key encryption by password='pass@word1'
create certificate Host_B_cert with subject='HOST_B_certificate',start_date = '01/01/2010', expiry_date='01/01/2099'
go
create endpoint 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)
go
backup certificate HOST_B_cert to FILE='C:\HOST_B_cert.cer'
3. 交换证书,将主服务器C盘上的HOST_A_cert.cer复制到镜象服务器上的C盘上。将镜像服务器C盘的HOST_B_cert.cer也复制到主服务器的C盘上。
配置入站连接的过程通常有以下几个步骤:
- 为其他系统创建登录名。
- 创建一个使用该登录名的用户。
- 获取其他服务器实例的镜像端点的证书。
- 将该证书与在步骤 2 中创建的用户相关联。
- 授予对该镜像端点的登录名的 CONNECT 权限。
1.在主服务器上执行:
为其他系统创建登录名。
create login HOST_B_login with password='pass@word1';
创建一个使用该登录名的用户。
create user HOST_B_user FOR LOGIN HOST_B_login;
将该证书与在步骤 2 中创建的用户相关联。
create certificate HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE='C:\HOST_B_cert.cer';
授予对该镜像端点的登录名的 CONNECT 权限。
grant connect on endpoint::Endpoint_Mirroring TO [HOST_B_login];
2.在镜像服务器上执行同样的操作
create login HOST_A_login with password='pass@word1';
create user HOST_A_user FOR LOGIN HOST_A_login;
create certificate HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE='C:\HOST_A_cert.cer';
grant connect on endpoint::Endpoint_Mirroring TO [HOST_A_login];
3.先在镜像服务器上设置数据库的镜像:
alter database Northwind SET Partner = 'TCP://主服务器IP地址:5022'
4.设置主服务器上的数据库镜象:
alter database Northwind SET Partner = 'TCP://镜象服务器IP地址:5022'
好了,到这里我们就大功搞成了,现在这两台服务器已经开始镜像了。因为现在我们做的是手动镜像故障转移,所以当主服务器宕机后我们需要手动切换到镜像服务器上。
主机宕掉时执行:ALTER DATABASE Northwind SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
当主机恢复时执行:
ALTER DATABASE Northwind SET PARTNER RESUME; --恢复镜像
ALTER DATABASE Northwind SET PARTNER SAFETY FULL --事务安全,同步模式
ALTER DATABASE Northwind SET PARTNER FAILOVER; --切换主备