sqlserver镜像

Pre:
对于workgroup环境,修改hosts,手动指定FQDN
1、(我的电脑->属性->计算机名->更改->其他->此计算机的主DNS后缀,改为统一规范的命名)
2、C:\WINDOWS\system32\drivers\etc\hosts

60.28.114.81 vm1.svr
60.28.114.82 vm2.svr
60.28.114.83 vm3.svr

启用TCP/IP over NetBIOS服务

启用网卡中的Windows客户端和文件打印共享

启用WINS服务中的TCP/IP over NetBIOS

一、限制
1、对于每个服务器实例,数据库镜像最多支持 10 个数据库。
2、CPU负载小于50%
3、同步镜像依赖可靠的网络环境


二、步骤
1、为主体数据库配置出站连接

--更改数据库日志恢复模式
use master;
alter database aion set recovery full;

--创建数据库主密钥
use master;
create master key encryption by password = 'Qf159528';

--在A数据库上创建证书
create certificate aion_a_cert with subject = 'aion_a certificate',start_date='01/01/2009',expiry_date='01/01/2099';

--在A数据库上使用上面创建的证书为数据库实例创建镜像端点
create endpoint Endpoint_Mirroring
state = started
as tcp(
listener_port=5022,listener_ip=all)
for database_mirroring(
authentication = certificate aion_a_cert,encryption = required algorithm aes,role = all);

--备份A数据库上的证书并拷贝到B,W上
backup certificate aion_a_cert to file = 'D:\aion_a_cert.cer'


2、为镜像数据库配置出站连接

--创建数据库主密钥
use master;
create master key encryption by password = 'Qf159528';


--在B数据库上创建证书

create certificate aion_b_cert with subject = 'aion_b certificate',start_date='01/01/2009',expiry_date='01/01/2099';

--在B数据库上为上面创建的证书创建镜像端点
create endpoint Endpoint_Mirroring
state = started
as tcp(
listener_port=5022,listener_ip=all)
for database_mirroring(
authentication = certificate aion_b_cert,encryption = required algorithm aes,role = all);


--备份B数据库上的证书并拷贝到A,W上

backup certificate aion_b_cert to file = 'D:\aion_b_cert.cer'


3、为见证数据库配置出站连接

--创建数据库主密钥
use master;
create master key encryption by password = 'Qf159528';


--在W数据库上创建证书

create certificate aion_w_cert with subject = 'aion_w certificate',start_date='01/01/2009',expiry_date='01/01/2099';

--在W数据库上为上面创建的证书创建镜像端点
create endpoint Endpoint_Mirroring
state = started
as tcp(
listener_port=5022,listener_ip=all)
for database_mirroring(
authentication = certificate aion_w_cert,encryption = required algorithm aes,role = all);


--备份W数据库上的证书并拷贝到A,B上

backup certificate aion_w_cert to file = 'D:\aion_w_cert.cer'


4、为主体数据库配置入站连接

--在A上为B创建登陆
use master;
create login aion_b_login with password = 'Qf159528';

--为以上登陆创建一个用户


create user aion_b_user for login aion_b_login;

--绑定证书到用户
create certificate aion_b_cert authorization aion_b_user from file = 'D:\aion_b_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_b_login];

--在A上为W创建登陆
use master;
create login aion_w_login with password = 'Qf159528';

--为以上登陆创建一个用户
create user aion_w_user for login aion_w_login;

--绑定证书到用户
create certificate aion_w_cert authorization aion_w_user from file = 'D:\aion_w_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_w_login];


5、为镜像数据库配置入站连接

--在B上为A创建登录
create login aion_a_login with password = 'Qf159528';

--为以上登录创建一个用户
create user aion_a_user for login aion_a_login;

--绑定证书到用户
create certificate aion_a_cert authorization aion_a_user from file = 'D:\aion_a_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_a_login];

--在B上为W创建登录
create login aion_w_login with password = 'Qf159528';

--为以上登录创建一个用户
create user aion_w_user for login aion_w_login;

--绑定证书到用户
create certificate aion_w_cert authorization aion_w_user from file = 'D:\aion_w_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_w_login];


6、为见证数据库配置入站连接

--在W上为A创建登录
create login aion_a_login with password = 'Qf159528';

--为以上登录创建一个用户
create user aion_a_user for login aion_a_login;

--绑定证书到用户
create certificate aion_a_cert authorization aion_a_user from file = 'D:\aion_a_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_a_login];

--在W上为B创建登录
create login aion_b_login with password = 'Qf159528';

--为以上登录创建一个用户
create user aion_b_user for login aion_b_login;

--绑定证书到用户
create certificate aion_b_cert authorization aion_b_user from file = 'D:\aion_b_cert.cer';

--在镜像端点上为登陆赋予CONNECT权限
grant connect on endpoint::Endpoint_Mirroring to [aion_b_login];


7、在A上备份数据库

8、在B上恢复数据库(使用norecovery)

9、为镜像数据库配置镜像伙伴

--在B的镜像服务器实例上,将A上的服务器实例设置为伙伴

alter database aion set partner = 'TCP://aion-a(完整服务器名):5022'

10、为主体数据库配置镜像伙伴和见证服务器

--在A的主体服务器实例上,将B上的服务器实例设置为伙伴

alter database aion set partner = 'TCP://aion-b(完整服务器名):5022'

--在A的主体服务器实例上,将W上的服

务器实例设置为见证服务器

alter database aion set witness = 'TCP://aion-w(完整服务器名):5022'


11、配置数据库镜像事务安全级别(主从都要做)

ALTER DATABASE aion SET SAFETY FULL

12、匹配用户sid

use master;
select sid,name from syslogins;


use master;
exec sp_addlogin
@loginame='luan',
@passwd='newaion',
@sid=;

exec sp_addlogin 'bbsuser', 'bbsuser', 'master',null,'0x939962CA3170464A9B6100AA9298CFE1',null


12、分别在A和B上查看数据库镜像的配置状态

-- 1.)通过Management studio 对象资源管理器,查看主体数据库、镜像数据库状态

-- 2.)通过Management studio 对象资源管理器中的数据库属性查看状态

-- 3.)通过系统目录视图查看数据库镜像配置情况


USE MASTER

GO

SELECT * FROM sys.database_mirroring_endpoints;

GO

SELECT * FROM sys.database_mirroring WHERE database_id =

(SELECT database_id FROM sys.databases WHERE name = 'Northwind')

GO





--- 六 服务器角色切换测试----

预备知识

数据库镜像角色切换

自动故障转移

只针对高可用性模式

SAFETY=FULL

手动故障转移

针对高可用性模式和高保护级别性模式

SAFETY=FULL

强制服务

只针对高性能模式

SAFETY=OFF



---(一) 自动故障转移

在主体服务器上,断开网络连接,通过数据库资源管理器查看主体/镜像服务器上数据库的状态

镜像服务器状态: 主体,已断开连接

恢复主体服务器

此时原来主体服务器(SQLSERVER实例)变为镜像服务器状态为:镜像,已同步/正在还原..

原来镜像服务器(SQL2实例)变为主体服务器状态:主体,已同步





---(二) 手动故障转移

-- 主体服务器上执行故障转移过程

USE MASTER

go

ALTER DATABASE RecoveryDb SET PARTNER FAILOVER

go

执行完后主体服务器状态变为: 镜像,已同步/正在还原..

镜像服务器状态变为 主体,已同步



---(三) 强制服务,有可能造成数据丢失

--1) 在镜像服务器上,取消对鉴证服务器的配置

ALTER DATABASE RecoveryDb SET WINTESS OFF



--2) 在主体服务器上,配置事务安全性为OFF

ALTER DATABASE RecoveryDb SET SAFETY OFF



--3) 断开主体服务器,在镜像服务器上,强制服务 进行角色切换

ALTER DATABASE RecoveryDb SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

完成后数据库状态为 主体,已断开连接





-----七 如何查询镜像服务器上的数据: 在镜像服务器上创建数据库快照

--1 在镜像服务器上,创建数据库快照

CREATE DATABASE ReconveryDb_snap_1

ON (NAME=RecoveryDb,FILENAM='H:\seconddb\recovery_snap1.ss')

AS SNAPSHOT OF RecoveryDb



--2 访问镜像数据库

USE ReconveryDb_snap_1

go

SELECT * FROM test



注:

1) 做镜像时,必须保证主体和镜像

数据库的日志一致性,如果在镜像服务器使用NORECOVERY选项恢复数据库时,主体数据库日志有更新,需要在主体数据库备份日志然后在镜像服务器上使用NORECOVERY选项恢复主体服务器更新的日志,否则在主体数据库上指定到镜像服务器的伙伴端点时会报错

2) 镜像完成后,对主体数据库新建/修改/删除表,镜像服务器将同步更新

3) 镜像完成后,对主体数据库执行收缩文件,镜像服务器将同步更新





----------------------------------------------------------------------------------------------------------------------
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;

相关文档
最新文档