基于数据库级别的实现,安装相同版本数据

作者: www.9159.com  发布:2019-11-05

风度翩翩、什么是数据库镜像

    基本软件的高可用性施工方案

  火速的故障转移恢复生机(3秒转移),低硬件开销

  基于数据库等级的实现

风姿浪漫、考虑工作:

中期在为公司设计SQLServer数据库镜像的时候,首先寻思的是高可用性(三台Computer,生机勃勃台见证服务器,生机勃勃台做主数据库,生机勃勃台做镜像卡塔尔

注意事项:

二、数据库镜像中的服务器角色

        主体服务器

    承载主体数据库

    接纳客户连接和事务管理诉求

        镜像服务器

    承载镜像数据库

    作为主导数据库的热备份(主体数据库的扭转及时传到镜像数据库中)

    仅在故障转移后承担客商连接,事务管理诉求。

        见证服务器(监视)

    监视服务器状态和连接性,完毕自动自动故障转移

3台服务器同版本,硬盘分区大小雷同,安装肖似版本数据库软件。

在设想机遭遇下布署成功,一切都以那么的百样玲珑。 故障转移3秒之内就足以顺遂达成。

  • Sqlserver 标准版企业版 才支持Mirror
  • Sp1之后暗中同意是启用的(可用以生育),起头版必须打开1400追踪选项(实验指标)
  • 工作组情势下windows的微机名中必得包涵DNS后缀, 暗中认可是没有的.所以请校勘计算机名称配置,重启!
  • 工作组情势下windows的hosts文件必需增添对Computer名的当地拆解深入分析
  • 工作组方式下Sqlserver服务的开发银行账户必需是adminstrators的成员而不可能是地面系统账户,且Mirror所提到的实例必得使用同意气风发的:账号密码
  • 专门的学业组形式下Sqlserver服务的运行账户必得是adminstrators的分子而无法是本地系统账户,且Mirror所关联的实例所利用的 账号密码 必得在有着windows中存在且相通,即能够行使多个账号,不过或不是剩下了?(看上一条注意点)
  • Mirror数据库必需和原始数据库同名
  • Mirror数据库必需处于 norecovery 状态
  • Mirror数据库必得利用了具备的Log备份(即必需和主数据库还原点相近), 极其注意,无论数据库备份是还是不是最新的备份,也要在主数据库上备份二个Log并选择的Mirror数据库上!!!!
  • 刚强推荐 Mirror数据库 和 主数据库的文件结构(目录结构,磁盘分区等)完全豆蔻梢头致, 不然以后涉及到主数据库文件更动的操作会使镜像战败!!!
  • SMS的镜像向导总是采用windows身份验证情势开创endpoint连接

三、数据库镜像会话

  会话伊始化

    镜像央求事务日志记录,与本位服务器完结同台

  会话进程

    主体服务器将日志记录传输给镜像服务器

    各种角色之间互相监视会话状态

       会话终结

    发生故障转移

    管理员终止数据库镜像

host中分别标记3台服务器IP和主机名称.

1.高可用性的进行代码:

特地提醒:

四 数据库镜像二种格局

操作模式 事务安全 传输机制 是否需要仲裁 见证服务器 故障转移类型
高可用 Full 同步 Y Y 自动或手动
高级别保护 Full 同步 Y N 仅手动
高性能 OFF 异步 N N/A 仅强制

  高可用:必要高劳务可用性, 须求达成自动故障转移,确认保障数量的完好。

  高等别爱惜方式: 数据完整性需求,不供给机关故障转移,对劳务的可用性须求非常低。

       高质量尊敬形式:主体服务器和镜像服务器间距十分远,通信链路有真相大白的推移,对质量的事务求高于数据的完整性。

大旨服务器上创立数据库,并扩充完全备份数据库和数据库事务。

www.9159.com 1www.9159.com 2主导数据库
/********************************************************
此脚本在入眼服务器实行
********************************************************/
--镜像只扶助完全复苏方式,在备份数据库以前检查苏醒的情势
--对要镜像的数据库进行意气风发体化备份后,复制到镜像数据库以NORECOVE奔驰M级NY选项进行苏醒
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
--为此服务器实例制作叁个注脚。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert 
   WITH SUBJECT = 'HOST_A certificate',START_DATE  = '01/01/2009';
GO 
--使用该证件为服务器实例创造三个镜像端点。
--DROP ENDPOINT Endpoint_Mirroring
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 = PARTNER
   );
GO

  1. 镜像创立后,主数据库能够实行 backup database backup log操作,而不用担忧会是镜像中断
  2. 能够权且暂停镜像,稍后继续镜像. 暂停时期主数据库能够进行 backup database backup log操作,而不用怀恋会是镜像中断
  3. 能够收回镜像,然后从裁撤后(断点)重新载入参数镜像. 但切记主数据库 [毫无推行] backup database backup log操作,不然你死了!
  4. ...

 五   配置示范

        意况: 数据库版本 sqlserver 贰零壹壹  系统版本windows server 2010 帕杰罗2 域管理

        mirroring测量检验场景

              主体服务器--FETCHINGDAT朗境9MSSQLSERVERTWO   tcp 5022 端口

              镜像服务器--172.168.18.132MSSQLSERVER2012  tcp 5022 端口   

              见证服务器--FETCHINGDAT卡罗拉9 

            镜像操作形式: 高可用. 事务安全:Full,传输体制:同步,是还是不是决定:Y,见证服务器:Y,故障转移:自动。

--步骤(1) 【主体服务器】设置为完整恢复模式,  做一次完整备份和日志备份
ALTER DATABASE Mirroring_Test SET  RECOVERY FULL 
backup database Mirroring_Test to disk='C:dataMirroring_Test.bak' with init
backup log  Mirroring_Test to disk='C:dataMirroring_Test.bak'  

  

--步骤(2) 【镜像服务器】还原到镜像库上(将备份文件复制到镜像服务器目录还原)
--运行下面语句,使之创建镜像数据库,处于正在还原状态并且是覆盖。
 restore database Mirroring_Test from disk='D:dataMirroring_Test.bak' 
 with file=1,
 move N'Mirroring_Test' To N'D:dataMirroring_Test.mdf',
  move N'Mirroring_Test_log' To N'D:dataMirroring_Test_log.ldf',
  norecovery, replace

 restore log Mirroring_Test  from disk='D:dataMirroring_Test.bak' with file=2,norecovery

    www.9159.com 3

      在各服务器创立各端口

--步骤(3) 创建端点  【主体服务器】创建端点用于伙伴通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5022)
for database_mirroring(role=partner,Encryption=supported)

-- 【镜像服务器】创建端点用于伙伴通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5022)
for database_mirroring(role=partner,Encryption=supported)

--【见证服务器】创建端点用于见证通讯,激活端点
create endpoint Mirroring_Test
as TCP (listener_port=5023)
for database_mirroring(role=witness,Encryption=supported)

   www.9159.com 4

     步骤4 开立connect(连接)权限。为多少个数据库实例设置同黄金年代的账户名称和口令

           www.9159.com 5

       www.9159.com 6

        www.9159.com 7

         www.9159.com 8

         www.9159.com 9

           步骤(5) 【主体服务器】配置镜像向导

           www.9159.com 10

           www.9159.com 11

             www.9159.com 12

     

测试


 

--测验手动故障转移(在重视服务器上施行)

ALTER DATABASE Mirroring_Test SET PARTNER failover

--测量检验活动故障转移(如在焦点数据库服务器切断网线,或终止实例)

--测验数据同步在主体服务器上改造数据,在镜像数据库上创设快速照相查询

CREATE DATABASE snap_Mirroring_Test

ON (NAME=Mirroring_Test,FILENAME='D:Snap_Mirroring_Test.snap')

   AS SNAPSHOT OF  Mirroring_Test

  

--删除快速照相

DROP DATABASE snap_Mirroring_Test

        

拷贝备份文件给镜像服务器举办还原,还原覆盖原有数据库、不对业务进行任何操作。

--备份 HOST_A 证书,并将其复制到别的机器,将 C:HOST_A_cert.cer 复制到 HOST_BHOST_C。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'e:HOST_A_cert.cer';
GO
--为入站连接配置 Host_A
--在 HOST_A 上为 HOST_B 创设一个登陆名。 
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
GO

附:微软官方质感

搭建形成功后接纳网址实行测量检验其可用性。(数据库在创立好数据库镜像后增多的话:先创制数据库、然后将数据库文件覆盖创设的数据库文件,使用脱机情势覆盖,成立连接数据库账户先删除原本账号再次创下立。卡塔尔国

--创立一个行使该登陆名的客户。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
GO
--使证书与该客户关联。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert
   AUTHORIZATION HOST_B_user
   FROM FILE = 'e:HOST_B_cert.cer'
GO

SQL Server 2005

二、镜像服务器无法为接二连三数据库账号自动管理,需求在镜像服务器上举办:

--付与对长途镜像端点的登入名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO
 
--在 HOST_A 上为 HOST_C 创设三个登陆名。 
USE master;
--DROP LOGIN HOST_C_login
CREATE LOGIN HOST_C_login WITH PASSWORD = 'password';
GO

其它版本.aspx)

USE master ;

--创立三个施用该登入名的客户。
--DROP USER HOST_C_user
CREATE USER HOST_C_user FOR LOGIN HOST_C_login;
GO
--使证书与该顾客关联。
--DROP CERTIFICATE HOST_C_cert
CREATE CERTIFICATE HOST_C_cert
   AUTHORIZATION HOST_C_user
   FROM FILE = 'e:HOST_C_cert.cer'
GO

www.9159.com 13

exec sp_addlogin

--付与对长间距镜像端点的登陆名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GO

更新日期: 2006 年 4 月 14 日

@loginame = 'sql_2_login',    //网址连接数据库账号

USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
GO
--创制一个用到该登入名的客商。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR CERTIFICATE HOST_A_cert;
GO
--付与对长间距镜像端点的登入名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO

数据库镜像产生在数据库镜像会话的内外文中。本核心假定你纯熟数据库镜像中的主体脚色、镜像剧中人物和知情者服务器剧中人物、运转格局以至剧中人物切换。有关详细新闻,请参阅数据库镜像概述.aspx)。

@passwd = 'qzmcc@139.com',    //网址连接数据库密码

--应当要在镜像数据库中先安装好同伴后,技艺在主导服务器实行
--在 HOST_A 的大旨服务器实例上,将 HOST_B 上的服务器实例设置为小同伙(使其成为开端镜像服务器实例卡塔 尔(英语:State of Qatar)。
ALTER DATABASE crm 
    SET PARTNER = 'TCP://192.168.1.205:5022';
GO

镜像数据库就绪且配置了服务器实例后,数据库全数者便能够运维数据库镜像。只要镜像开端,每种小友人便先导在其数据库中维护有关该数据库以致其余小同伙和见证服务器的景况音信(就算有卡塔 尔(阿拉伯语:قطر‎。此景况消息允许服务器实例维护称为“数据库镜像会话”的关联。在整整数据库镜像会话期间,服务器实例相互监视。在数据库全数者停止会话此前,将一直维护状态音讯。有关详细新闻,请参阅镜像状态.aspx)和蹲点数据库镜像.aspx)。

@sid =  0xC28F0312BAFBE84AB553C40CFAD2A32A;  //主体服务器上布署的网址一而再一而再再而三数据库账号SID号

--设置见证服务器
ALTER DATABASE crm SET WITNESS = N'TCP://192.168.1.204:5022';
GO

在数据库镜像会话开首时,镜像服务器将标记应用到镜像数据库的最新事务日志的日记系列号 (LSN),并供给中央服务器为富有继续业务(要是有卡塔 尔(英语:State of Qatar)建设构造业务日志。作为响应,主体服务器将自上二个上涨到镜像数据库或发送到镜像服务器的日记以来积累的持有移动日志记录发送到镜像服务器。在注重数据库的日记磁盘中积存的未发送日志称为“发送队列”。

焦点服务器上:

 

镜像服务器立刻将盛传日志写入磁盘,传入日志在运用到镜像数据库从前一贯保存在磁盘上。在镜像磁盘上等候的日记称为“重做队列”。重做队列中伺机的未回复日志数提醒将故障转移到镜像数据库所需的年月。有关详细消息,请参阅估摸剧中人物切换进度中的服务中断.aspx)。

USE master;

www.9159.com 14www.9159.com 15镜像数据库
/***********************************************
在镜像服务器实践此脚本
***********************************************/
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
--为 HOST_B 服务器实例制作一个注脚。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert 
   WITH SUBJECT = 'HOST_B certificate for database mirroring',START_DATE  = '01/01/2009';
GO
--在 HOST_B 中为服务器实例成立一个镜像端点。
--DROP ENDPOINT Endpoint_Mirroring
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 = PARTNER
   );
GO
--备份 HOST_B 证书,将 C:HOST_B_cert.cer 复制到 HOST_AHOST_C。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'e:HOST_B_cert.cer';
GO 

主导服务器继续让客商端和客户端连接使用主体数据库。镜像开端后,每当客商端更新主体数据库,并将事情写入主体数据库的日记时,主体服务器便会将该日记记录发送到镜像服务器。相同的时候,镜像服务器顿时将日志记录写入磁盘,作为重做队列中的最新记录。

select sid,name from syslogins;     //查看登入账户

--为入站连接配置 Host_B
--在 HOST_B 上为 HOST_A 创制七个登陆名。
USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
GO
--创造七个选择该登入名的客户。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO
--使证书与该顾客关联。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
   AUTHORIZATION HOST_A_user
   FROM FILE = 'e:HOST_A_cert.cer'
GO

在后台,镜像服务器从最初的日志记录初阶,尽快在镜像数据库中各种“重做”日志记录。重做日志涉及从最初的记录伊始,将排队的日志记录按梯次应用到镜像数据库的操作。每条日志记录仅重做叁次。当镜像服务珍视做日志时,镜像数据库将持续前滚。当着重服务器截断或减弱主体数据库的日志时,镜像服务器也将要日志流的同一点减少日志。

 

--付与对长间距镜像端点的登入名的 CONNECT 权限。 
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO

日常,重做可加速镜像数据库与本位数据库的一同。镜像数据库是还是不是完全与重视数据库保持同步决意于会话的运维格局。在一同、高安全性情势下,主体服务器等待确认新业务,直到将那几个新专门的工作写入镜像服务器的日志磁盘结束。将积攒的日记记录发送到镜像服务器之后,镜像数据库便会与本位数据库保持同步。

主导服务器上施行的口舌:

--在 HOST_B 上为 HOST_C 成立叁个登入名。
USE master;
--DROP LOGIN HOST_C_login
CREATE LOGIN HOST_C_login WITH PASSWORD = 'password';
GO

对话期间,要是主体服务器无法立即发送每一个日志记录,则未发送日志记录会积攒在出殡和下葬队列中。在一起、高安全性格局下,施行同步后,仅当镜像暂停或挂起时才会聚积新的未发送日志。相反,在异步、高质量方式下,只要镜像服务器在镜像时期滞后以致镜像暂停或挂起,便会堆放未发送日志。未发送日志数提示主体服务器现身故障时恐怕招致的数码遗失。

USE master; 

--创建三个行使该登录名的客商。
--DROP USER HOST_C_user 
CREATE USER HOST_C_user FOR LOGIN HOST_C_login;
GO
--使证书与该客户关联。
--DROP CERTIFICATE HOST_C_cert
CREATE CERTIFICATE HOST_C_cert
   AUTHORIZATION HOST_C_user
   FROM FILE = 'e:HOST_C_cert.cer'
GO

注意:
如果重做失败,则镜像服务器通过将数据库置于 SUSPENDED 状态来暂停会话。数据库所有者必须找到失败的原因并解决问题才能继续会话。

create master key encryption by password = 'qzmcc@139.com';

--付与对长途镜像端点的登陆名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GO

www.9159.com 16并发会话.aspx)

create certificate sql_1_cert with subject ='sql_1 certificate',start_date='08/20/2014',Expiry_date ='08/20/3000';

--在 HOST_B 上为 HOST_B 创立多少个登陆名。 
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
GO
--成立二个应用该登陆名的客商。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR CERTIFICATE HOST_B_cert;
GO
--付与对长间距镜像端点的登陆名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO
--在 HOST_B 的镜像服务器实例上,将 HOST_A 上的服务器实例设置为小同伙(使其变为开头主体服务器实例卡塔尔。
ALTER DATABASE crm 
    SET PARTNER = 'TCP://192.168.1.203:5022';
GO


 

www.9159.com 17www.9159.com 18证人服务器
/****************************
知爱人服务器实施
*****************************/
--ALTER DATABASE MirrorDB SET PARTNER OFF
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO

加以的服务器实例可以参与到多个具备相仿或区别服务器实例的产出数据库镜像会话(每一个镜像数据库产生二回卡塔尔国中。日常,服务器实例挑升用作其颇负数据库镜像会话中的同伙或见证服务器。可是,由于各种会话都单身于别的会话,由此服务器实例能够在好几会话中充作同伙,而在别的会话中担纲见证服务器。举个例子,请看四个服务器实例(SSInstance_1SSInstance_2 和 SSInstance_3)中的下列多少个会话。每种服务器实例都可在好几会话中作为友人,而在别的会话中作为证人服务器:

CREATE ENDPOINT Endpoint_Mirroring  

--为此服务器实例制作叁个证书。
--DROP CERTIFICATE HOST_C_cert
CREATE CERTIFICATE HOST_C_cert 
   WITH SUBJECT = 'HOST_C certificate',START_DATE  = '01/01/2009';
GO

www.9159.com,

服务器实例 数据库 A 的会话 数据库 B 的会话 数据库 C 的会话 数据库 D 的会话

SSInstance_1

见证服务器

伙伴

伙伴

伙伴

SSInstance_2

伙伴

见证服务器

伙伴

伙伴

SSInstance_3

伙伴

伙伴

见证服务器

见证服务器

下图表达了都当作同伙参预七个镜像会话的多少个服务器实例。二个对话用于名称叫 Db_1 的数据库,另三个会话用于名字为 Db_2 的数据库。

www.9159.com 19

各种数据库独立于任何数据库。比方,服务器实例最先或许是多少个数据库的镜像服务器。借使中间八个数据库产生故障转移,则服务器实例将改成已发生故障转移的数据库的重头戏服务器,同一时候为别的数据库保留镜像服务器。

再举一个例证,借使有一个服务器实例,它是多个或多少个以独具电动故障转移职能的高安全性格局运作的数据库的主体服务器,假诺此服务器实例战败,则装有数据库将自行故障转移到其对应的镜像数据库。

例如将二个服务器实例设置成既作为同伙又作为证人服务器加入会话,请确定保证数据库镜像端点能够扶持三种角色(有关详细消息,请参阅数据库镜像端点.aspx)卡塔尔国。同有时间,还要保障系统全体丰硕能源以减掉能源争用。

注意:
由于镜像数据库相互独立,因此这些数据库不能作为一个组来进行故障转移。

www.9159.com 20数据库镜像会话的必备条件.aspx)


开始镜像会话此前,数据库全数者或系统管理员必得创制镜像数据库,设置端点和登陆名。在少数情状下,还要成立并设置证书。有关详细新闻,请参阅安装数据库镜像.aspx)。

始建镜像数据库的最低供给是:奉行主体数据库的完整备份和三个后续日志备份,并使用 WITH NORECOVE景逸SUVY 将那七个备份还原到镜像服务器实例上。此外,在最早镜像之前,假若在进行完须求的日志备份之后又试行了此外其余日志备份,则还必需手动应用别的种种日志备份(始终使用 WITH NORECOVE智跑Y卡塔尔。应用新型的日记备份之后,便可初步镜像。有关详细新闻,请参阅为镜像筹划镜像数据库.aspx)。

www.9159.com 21暂停会话对宗旨业务日志的震慑.aspx)


数据库全数者可以每29日脚刹踏板会话。实行暂停操作将保存在剔除镜像时的对话状态。暂停会话时,主体服务器不会向镜像服务器发送任何新的日志记录。全部那么些记录将保持活动状态,并堆成堆在主体数据库的事情日志中。只要数据库镜像会话保持暂停状态,事务日志就不会被截断。由此,假设数据库镜像会话暂停时间过长,则恐怕会使该日记填满。

至于详细音信,请参阅暂停和还原数据库镜像.aspx)。

www.9159.com 22顾客端连接.aspx)


Microsoft .NET Data Provider for SQL Server 提供了对数据库镜像会话的顾客端连接辅助。有关详细音讯,请参阅一而再客商端与镜像数据库.aspx)。

www.9159.com 23请参阅.aspx)


  STATE = STARTED   

--使用该证件为服务器实例创造三个镜像端点。
--DROP ENDPOINT Endpoint_Mirroring
CREATE ENDPOINT Endpoint_Mirroring
   STATE = STARTED
   AS TCP (
      LISTENER_PORT=5022
      , LISTENER_IP = ALL
   ) 
   FOR DATABASE_MIRRORING ( 
      AUTHENTICATION = CERTIFICATE HOST_C_cert
      , ENCRYPTION = REQUIRED ALGORITHM AES
      , ROLE = WITNESS
   );
GO  

概念

异步数据库镜像(高品质格局卡塔尔国.aspx) 
镜像状态.aspx) 
数据库镜像概述.aspx) 
核定:见证服务器怎么样影响数据库可用性.aspx) 
一块数据库镜像(高安全性形式卡塔 尔(阿拉伯语:قطر‎.aspx) 

  AS TCP ( LISTENER_PORT=10000,LISTENER_IP = ALL )    

--备份 HOST_C 证书,并将其复制到其余系统,即 HOST_BHOST_A。
BACKUP CERTIFICATE HOST_C_cert TO FILE = 'e:HOST_C_cert.cer';
GO

任何能源

蹲点数据库镜像.aspx) 
设置数据库镜像.aspx) 

  FOR DATABASE_MIRRORING (

--为入站连接配置 Host_C
--在 HOST_C 上为 HOST_B 创立一个登陆名。 
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
GO

赞助和消息

获取 SQL Server 2005 帮助.aspx)

www.9159.com 24改造历史记录.aspx)


  AUTHENTICATION = certificate sql_1_cert

--创立一个施用该登入名的顾客。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
GO
--使证书与该顾客关联。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert
   AUTHORIZATION HOST_B_user
   FROM FILE = 'e:HOST_B_cert.cer'
GO

版本 历史记录

2006 年 4 月 14 日

新增内容:
  • 添加了发送队列的说明。
  • 添加了有关重做队列大小重要性的信息。
已更改的内容:
  • 扩展了“并发会话”部分的介绍。

2005 年 12 月 5 日

已更改的内容:
  • 记录了一条对创建镜像数据库要求的更改。
  • 扩展了角色切换的介绍。

SQL Server 2005

其他版本.aspx)

www.9159.com 25

立异日期: 2005 年 12 月 5 日

在镜像会话初始以前,数据库全数者或系统管理员必得确认保证已开立镜像数据库并可实行镜像。

www.9159.com 26创制镜像数据库.aspx)


创立新镜像数据库的最低供给是:实施主体数据库的全部备份和叁个世襲日志备份,并动用 WITH NORECOVEENVISIONY 将这两个备份还原到镜像服务器实例上。为使镜像日常运行,镜像数据库必需处于 RESTOEscortING 状态。

再者在始发镜像从前,假诺在推行完需要的日志备份之后又进行了其余其余日志备份,则还非得手动应用别的每一个日志备份(始终使用 WITH NORECOVEGL450Y卡塔 尔(英语:State of Qatar)。假诺安排在数据库中非常频仍地运转日志备份作业,则恐怕必要禁止使用备份作业,直到镜像运维结束。应用新型的日记备份之后,便可开端镜像比量齐观新启用日志备份作业(假如已禁止使用卡塔 尔(阿拉伯语:قطر‎。

注意:
只能备份当前主体服务器,无法备份镜像数据库,因为它处于 RESTORING 状态。

www.9159.com 27为重复启航镜像计划镜像数据库.aspx)


假定已删除镜像,何况该镜像数据库仍居于 RECOVERING 状态,则足以重新启航镜像。但是,首先在宗旨数据库中必须最少实践三个日记备份。然后在该镜像数据库中,必需选择WITH NORECOVE帕杰罗Y 还原删除镜像后在器重数据库中实践的有着日志备份。

希图镜像数据库

  • 怎样为镜像寻思镜像数据库 (Transact-SQL).aspx) 

SQL Server 2005

此外版本.aspx)

www.9159.com 28

数据库全部者能够暂停并在那后任何时候过来数据库镜像会话。实践暂停操作将保存在挂起镜像时的对话状态。当现身瓶颈时,暂停可能有助于增加大旨服务器的属性。

对话暂停后,主体数据库还是可用。暂停操作将镜像会话的意况设置为 SUSPENDED,而且镜像数据库不再与大旨数据库保持风流倜傥致,进而以致重心数据库公开运转。

鉴于在数据库镜像会话处于中断时无法截断事务日志,因而提议您尽快苏醒暂停的对话。因而,借使数据库镜像会话暂停的小时太长,事务日志将填满,诱致数据库不可用。有关此情景发生原因的解说,请参阅本主旨后边的“暂停和重整旗鼓如何影响日志截断”。

重要提示:
执行强制服务之后,当重新连接原始主体服务器时,镜像便会挂起。在这种情况下,恢复镜像可能会导致原始主体服务器上的数据丢失。有关管理潜在的数据丢失的信息,请参阅强制服务(可能造成数据丢失)

www.9159.com 29停顿和苏醒怎么样影响日志截断.aspx)


经常,在数据库上施行活动物检疫查点操作时,事务日志就要下一个日志备份后截断到该检查点。当数据库镜像会话处于停立即,当前持有日志记录都保持为活动状态,因为重心服务器正等待将这一个记录发送到镜像服务器。未发送的日记记录将堆叠在主题数据库的业务日志中,直到会话恢复何况主体服务器将它们发送到镜像服务器截至。

会话复苏时,主体服务器立刻在此以前将堆成堆的日志记录发送到镜像服务器。当镜像服务器确认与最初的活动物检疫查点相对应的日志记录已排队后,主体服务器便会将主旨数据库的日记截断到该检查点。镜像服务器会截断同叁个日志记录的重做队列。随着对种种三番四遍的检查点重复此进度,日志将对检查点各种分等级地截断。

注意:
有关检查点和日志截断的详细信息,请参阅检查点和日志的活动部分

www.9159.com 30幸免现身已满专门的学问日志.aspx)


设若填满该日记(因为它达到其最大尺寸或服务器实例耗尽空间卡塔尔国,则数据库将相当小概再实践其余更新。若要制止现身这种主题素材,有两种采纳:

  • 在该日志填满以前恢复生机数据库镜像会话,或增多更加多的日记空间。复苏数据库镜像会使宗旨服务器将其储存的运动日志发送到镜像服务器,并将镜像数据库设置为 SYNCHRONIZING 状态。然后镜像服务器可将日志镜像到磁盘并早先重做。 
  • 透过删除镜像来终止数据库镜像会话。 
    和行车制动器踏板会话区别,删除镜像将去除有关镜像会话的保有音信。每一个小友人服务器实例将保存其和好的数据库别本。倘诺前三个镜像副本已上涨,则它将与前四个基点副本分离,且滞后时间特别此会话暂停的年华。有关详细消息,请参阅删除数据库镜像.aspx)。 

  , ENCRYPTION = REQUIRED ALGORITHM AES

--付与对长间距镜像端点的登陆名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO
 
--在 HOST_C 上为 HOST_A 创设一个登入名。 
USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
GO
--创立贰个接纳该登录名的顾客。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO
--使证书与该客商关联。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
   AUTHORIZATION HOST_A_user
   FROM FILE = 'e:HOST_A_cert.cer'
GO

  , ROLE = partner

--授予对长间距镜像端点的登陆名的 CONNECT 权限。 
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO

)   

--在 HOST_C 上为 HOST_C 创造三个登陆名。 
USE master;
--DROP LOGIN HOST_C_login
CREATE LOGIN HOST_C_login WITH PASSWORD = 'password';
GO
--创制八个用到该登入名的客户。
--DROP USER HOST_C_user
CREATE USER HOST_C_user FOR CERTIFICATE HOST_C_cert;
GO

backup certificate sql_1_cert to file='d:sql_1_cert.cer';

 也许有意中人们会比较有困惑,你刹那间搞三个数据库出来,他们的ip地址都不肖似,届期候数据库切换过去了,笔者的数据库的接连字符串可如何做?难道还得在代码中去调控是连连哪个数据库吗?

 

其实这么些标题是这么的,使用ADO.NET恐怕SQL Native Client能够自行三番两遍到故障转移后的小伙伴,连接字符串如下所示:

USE master;

ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;"

create login sql_2_login with password='qzmcc@139.com';

DataSource= A;这几个正是大家常用的主数据库的ip地址,Failover Partner=B;这么些填写的便是镜像数据库的ip地址,黄金年代旦现身了连年错误,ado.net会在逾期过后自动去连接镜像数据库。

USE master;

2.高端别爱慕格局

create login sql_3_login with password='qzmcc@139.com';

在明天早晨加班做施行的时候,才开掘自家的统筹已经被改换了,由于原先的项目有java写的也可以有c#写的,全自动的故障转移不可见落到实处。换句话说,由于老项目中的历史遗留难点,以致特种模块的耦合性过高,不可能解耦,只可以在高等别爱护形式或高质量方式中筛选生机勃勃种了。那么这两个有怎么着分裂吗?

create user sql_2_user for login sql_2_login;

简轻松单一点以来,差距就在与业务安全模式上跟应用处景上。

create user sql_3_user for login sql_3_login;

高端别珍视格局采纳的是同步镜像, SAFETY FULL。应用处景:平时在局域网中或对数码必要比较高的景色中。

create certificate sql_2_cert authorization sql_2_user from file='d:sql_2_cert.cer';

高质量爱慕格局接受的是异步镜像, SAFETY OFF。应用途景:平时在广域网或对数据须要不太高,错过几条数据是允许的,可是必须确定保障它不暂停服务。

create certificate sql_3_cert authorization sql_3_user from file='d:sql_3_cert.cer';

在微软的SQLServer二零零五的科目上是这么说的。假如是高端别敬服方式的话,主、从数据库只要有黄金年代台无法健康保障服务,数据库就无法对外开展劳动了,作者在起先的时候就从未筹算选用这种形式,因为部门首席施行官说了,遗失生龙活虎两条数据是能够承担的,况兼大家公司是做运行的,依照初始微软的学科的议论,高端别爱戴形式是不太相符大家合营社的运用项景的,万豆蔻梢头有风流浪漫台数据库出标题了,整个服务就被暂停,这是不能够令人收受的。再说了,公司对数码供给不太苛刻,两台服务器都有内网线连接,由于内网传输速度极其的快,即便使用高质量形式,经常的话也是不会放任数据的。于是本身计划利用高质量方式来做数据库的镜像。由于市肆服务器并未有域际遇,所以自身就动用了注解验证来做SQLServer镜像。

grant connect on endpoint::Endpoint_Mirroring to sql_2_login;

什么人知得到:

grant connect on endpoint::Endpoint_Mirroring to sql_3_login;

两台服务器全体都设置了SQLServer二零一零,在装置专门的职业安全情势的时候,才开采SQLServer二零零六不援救异步情势。提醒大约如下:此SQLServer版本不帮忙校勘专门的学业安全形式,alter database战败。 作者立马汗都出去了,忙活了风姿洒脱夜晚,到最后以至是那几个结果。

 

由于是服务器维护时间,笔者大胆的把镜像服务器截止了,结果却让自己吃惊,主数据库依然能够平常办事,平常对外提供服务。相当于说,起头微软的学科讲的知识是谬误的,两台数据库做镜像,不管是哪台数据库出了难题,此外的少年老成台数据库都得以保险符合规律对外提供劳务。于是小编再三试验数十次切换了意气风发晃,结果仍为这么。

USE master;

是因为高端别爱抚格局与高质量方式代码差不太多,只是在职业安全情势的安装上有些小区别,前边早就关系,这里就不再多解释了。施行的代码如下:

select sid,name from syslogins;     //查看登入账户

www.9159.com 31www.9159.com 32焦点服务器
USE  master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,
START_DATE = '01/01/2009';

 

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 );

ALTER DATABASE mydb SET SAFETY FULL

BACKUP  CERTIFICATE HOST_A_cert TO  FILE  =  'e:HOST_A_cert.cer';

 

CREATE  LOGIN HOST_B_login WITH  PASSWORD  =  'password';
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'e:HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];

Alter database mydb set partner='TCP://SQL-2:10000';    //在镜像服务器施行后再实行

ALTER  DATABASE crm SET  PARTNER  =  'TCP://10.10.10.8:5022';

 

www.9159.com 33www.9159.com 34镜像数据库
USE  master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',
START_DATE = '01/01/2009';

Alter database mydb set witness='TCP://SQL-3:10000';    //执行上边的言辞后奉行

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 );

 

BACKUP  CERTIFICATE HOST_B_cert TO  FILE  =  'e:HOST_B_cert.cer';

 

CREATE  LOGIN HOST_A_login WITH  PASSWORD  = 'password';
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'e:HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];

 

ALTER  DATABASE crm SET  PARTNER  =  'TCP://10.10.10.6:5022';

镜像服务器试行的讲话:

 大概有相爱的人会比较奇怪,你这里也不曾行使ALTE讴歌RDX DATABASE crm SET SAFETY FULL; 按理应该是高质量格局才对啊?

USE master; 

实在这里个主题素材是那般的,作者的这一个SQLServer2010暗许已然是将业务安全方式设置为full了,即便是手动设置也生龙活虎律,何况作者实行的时候SQLServer二零零六不扶植将

create master key encryption by password = 'qzmcc@139.com';

 事务安全情势设置为OFF。

create certificate sql_2_cert with subject ='sql_2 certificate',start_date='08/20/2014',Expiry_date ='08/20/3000';

OK,一切都设置好了,那么就足以效仿服务器真的down机时候的操作了,后续的行事本人也把代码做了总结,具体代码如下:

 

www.9159.com 35www.9159.com 36手动故障转移代码
--主备调换
--主机施行:

CREATE ENDPOINT Endpoint_Mirroring  

ALTER DATABASE crm SET PARTNER FAILOVER

  STATE = STARTED   

--主服务器Down掉,备机急迫运维而且在此之前服务
ALTER DATABASE crm SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

  AS TCP ( LISTENER_PORT=10000,LISTENER_IP = ALL )    

原先的主服务器苏醒,能够接二连三工作,需求重新设定镜像
--备机实践:
USE master
ALTE福特Explorer DATABASE crm SET PARTNE哈弗 RESUME  --苏醒镜像

  FOR DATABASE_MIRRORING (

ALTECRUISER DATABASE crm SET PARTNE陆风X8 FAILOVEHaval; --切换主备

  AUTHENTICATION = certificate sql_2_cert

3.蹲点数据库镜像

  , ENCRYPTION = REQUIRED ALGORITHM AES

SQLServer提供了有的视图,能够供查询镜像的各类情状,届期候能够依据那么些做三个监视,风流倜傥旦产生故障转移会集,发邮件给系统助理馆员,好让系统一管理理员及时的领悟数据库服务器发生了怎么难点,即便的做故障深入分析、排查。有关那方面资料,MSDN上业已提供太多质地了。感兴趣的对象能够去查这上面包车型大巴素材。

  , ROLE = partner

在文章的末尾提议一个有争论的主题材料:SQLServer(二〇一〇卡塔 尔(阿拉伯语:قطر‎高档别爱抚方式,只要有意气风发台数据库能够保险不奇怪运作,就足以健康对外提供劳务。作者的试验结果是那样的,那的确跟以后的理论知识有些出入。

)   

还等什么,飞快搭情状入手实验一下啊,体验一下SQLServer镜像带动的快感。 希望风野趣的仇敌们生龙活虎道读书钻探。

backup certificate sql_2_cert to file='d:sql_2_cert.cer';

后话:

 

       在文告本文现在,有心上人问到说SQLServer镜像在实施进程中不晓得开放什么端口,招致防火墙必需关闭掉的这么些难题。因为小编那边的情况已经未有了,搭建真实意况开展模拟测量试验也不太恐怕,轻巧看了下,SQLServer服务要求采纳了如下端口如图所示:

USE master;

www.9159.com 37

create login sql_1_login with password='qzmcc@139.com';

其它,请参见msdn的那篇小说:

USE master;

数据库引擎使用的端口

下表列出了数据库引擎平日应用的端口。

应用场景 端口 注释

通过 TCP 运行的 SQL Server 默认实例

TCP 端口 1433

这是允许通过防火墙的最常用端口。它适用于与默认数据库引擎安装或作为计算机上唯一运行实例的命名实例之间的例行连接。(命名实例具有特殊的注意事项。请参阅本主题后面的动态端口)。

采用默认配置的 SQL Server 命名实例

此 TCP 端口是在启动数据库引擎时确定的动态端口。

请参阅下面动态端口部分中的描述。当使用命名实例时,SQL Server Browser 服务可能需要 UDP 端口 1434。

配置为使用固定端口的 SQL Server 命名实例

由管理员配置的端口号。

请参阅下面动态端口部分中的描述。

专用管理员连接

对于默认实例,为 TCP 端口 1434。其他端口用于命名实例。有关端口号,请查看错误日志。

默认情况下,不会启用与专用管理员连接 (DAC) 的远程连接。若要启用远程 DAC,请使用外围应用配置器方面。有关详细信息,请参阅了解外围应用配置器

SQL Server Browser 服务

UDP 端口 1434

SQL Server Browser 服务用于侦听指向命名实例的传入连接,并为客户端提供与此命名实例对应的 TCP 端口号。通常,只要使用数据库引擎的命名实例,就会启动 SQL Server Browser 服务。如果客户端配置为连接到命名实例的特定端口,则不必启动 SQL Server Browser 服务。

通过 HTTP 端点运行的 SQL Server 实例。

可以在创建 HTTP 端点时指定。对于 CLEAR_PORT 通信,默认端口为 TCP 端口 80,对于 SSL_PORT 通信,默认端口为 443。

用于通过 URL 实现的 HTTP 连接。

通过 HTTPS 端点运行的 SQL Server 默认实例。

TCP 端口 443

用于通过 URL 实现的 HTTPS 连接。HTTPS 是使用安全套接字层 (SSL) 的 HTTP 连接。

Service Broker

TCP 端口 4022。若要验证使用的端口,请执行下面的查询:

SELECT name, protocol_desc, port, state_desc

FROM sys.tcp_endpoints

WHERE type_desc = 'SERVICE_BROKER'

对于 SQL Server Service Broker,没有默认端口,不过这是联机丛书示例中使用的常规配置。

数据库镜像

管理员选择的端口。若要确定此端口,请执行以下查询:

SELECT name, protocol_desc, port, state_desc FROM sys.tcp_endpoints

WHERE type_desc = 'DATABASE_MIRRORING'

对于数据库镜像,没有默认端口,不过联机丛书示例使用 TCP 端口 7022。务必避免中断正在使用的镜像端点,尤其是处于带有自动故障转移功能的高安全模式下时。防火墙配置必须避免破坏仲裁。有关详细信息,请参阅指定服务器网络地址(数据库镜像)

复制

与 SQL Server 的复制连接使用典型的常规数据库引擎端口(供默认实例使用的 TCP 端口 1433 等)

复 制快照的 Web 同步和 FTP/UNC 访问要求在防火墙上打开其他端口。为了将初始数据和架构从一个位置传输到另一个位置,复制可以使用 FTP(TCP 端口 21)或者通过 HTTP(TCP 端口 80)或文件和打印共享(TCP 端口 137、138 或 139)进行的同步。

对于通过 HTTP 进行的同步,复制使用 IIS 端点(其端口可配置,但默认情况下为端口 80),不过 IIS 进程通过标准端口(对于默认实例为 1433)连接到后端 SQL Server。

在使用 FTP 进行 Web 同步期间,FTP 传输是在 IIS 和 SQL Server 发布服务器之间进行,而非在订阅服务器和 IIS 之间进行。

有关详细信息,请参阅Configuring Microsoft Internet Security and Acceleration Server for Microsoft SQL Server 2000 Replication over the Internet(为通过 Internet 进行的 Microsoft SQL Server 2000 复制配置 Microsoft Internet Security and Acceleration Server)。

Transact-SQL 调试器

TCP 端口 135

请参阅端口 135 的特殊注意事项

可能还需要 IPsec 例外。

如果使用 Visual Studio,则在 Visual Studio 主机计算机上,还必须将 Devenv.exe 添加到“例外”列表中并打开 TCP 端口 135。

如果使用 Management Studio,则在 Management Studio 主机计算机上,还必须将 ssms.exe 添加到“例外”列表中并打开 TCP 端口 135。有关详细信息,请参阅配置和启动 Transact-SQL 调试器

至于为数据库引擎配置 Windows 防火墙的分步表明,请参阅什么样为数据库引擎访谈安排 Windows 防火墙。

create login sql_3_login with password='qzmcc@139.com';

动态端口

默 认景况下,命名实例(包括 SQL Server Express卡塔 尔(阿拉伯语:قطر‎使用动态端口。也便是说,每一遍运转数据库引擎时,它都将规定一个可用端口并接受此端口号。假诺命名实例是设置的唯后生可畏数据库引擎实例,则它 大概应用 TCP 端口 1433。若是还设置了其余数据库引擎实例,则它只怕会采纳别的 TCP 端口。由于所选端口也许会在历次运行数据库引擎时改革,由此很难安插防火墙以启用对科学端口号的拜望。因而,要是采取防火墙,则提议重新配置数据库引擎以 每一遍都使用雷同端口号。那名称为永远端口或静态端口。有关详细新闻,请参阅安顿定位端口。

另生龙活虎种配备命名实例以侦听固定端口的不二秘技是在防火墙中为诸如 sqlservr.exe 之类的 SQL Server 程序创造例外(针对数据库引擎卡塔尔国。那会十一分方便,但当使用高等安全 Windows 防火墙 MMC 管理单元时,端口号将不会显得在“入站准则”页的“本地端口”列中。那会使审查批准哪些端口处于展开状态变得越发困难。另生龙活虎注意事项是 Service Pack 或积存的翻新恐怕会修正 SQL Server 可执行文件的门径,那将使防火墙准则作废。

 

瞩望得以帮到那么些纠缠中的大家。祝:好运。

 

create user sql_1_user for login sql_1_login;

create user sql_3_user for login sql_3_login;

create certificate sql_1_cert authorization sql_1_user from file='d:sql_1_cert.cer';

create certificate sql_3_cert authorization sql_3_user from file='d:sql_3_cert.cer';

grant connect on endpoint::Endpoint_Mirroring to sql_1_login;

grant connect on endpoint::Endpoint_Mirroring to sql_3_login;

 

USE master ;

exec sp_addlogin

@loginame = 'sql_2_login',    //网址连接数据库账号

@passwd = 'qzmcc@139.com',    //网址连接数据库密码

@sid =  0xC28F0312BAFBE84AB553C40CFAD2A32A;  //主体服务器上配置的网址一连数据库账号SID号

 

Alter database mydb set partner='TCP://SQL-1:10000';

ALTER DATABASE mydb SET SAFETY FULL

 

见证服务器上举办的口舌:

USE master; 

create master key encryption by password = 'qzmcc@139.com';

create certificate sql_3_cert with subject ='sql_3 certificate',start_date='08/20/2014',Expiry_date ='08/20/3000';

 

CREATE ENDPOINT Endpoint_Mirroring  

  STATE = STARTED   

  AS TCP ( LISTENER_PORT=10000,LISTENER_IP = ALL )    

  FOR DATABASE_MIRRORING (

  AUTHENTICATION = certificate sql_3_cert

  , ENCRYPTION = REQUIRED ALGORITHM AES

  , ROLE = WITNESS

)   

backup certificate sql_3_cert to file='d:sql_3_cert.cer';

 

USE master;

create login sql_1_login with password='qzmcc@139.com';

USE master;

create login sql_2_login with password='qzmcc@139.com';

create user sql_1_user for login sql_1_login;

create user sql_2_user for login sql_2_login;

create certificate sql_1_cert authorization sql_1_user from file='d:sql_1_cert.cer';

create certificate sql_2_cert authorization sql_2_user from file='d:sql_2_cert.cer';

grant connect on endpoint::Endpoint_Mirroring to sql_1_login;

grant connect on endpoint::Endpoint_Mirroring to sql_2_login;

 

 

有人会说,多少个数据库,IP地址都不相通,怎么写连接代码呢?难道现身故障后要手动改良代码吗?其实采纳ADO.NET恐怕SQL Native Client能够自行连接到故障转移后的伴儿,连接字符串如下所示:

 ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;" DataSource= A;

 那样设置之后,客商端就足以活动切换数据库了

 至此SQL Server 二〇〇九 的镜像高可用配置实例全体成功。

 <connectionStrings>

    <add name="DefaultDB" connectionString="Data Source=192.168.1.104;Failover Partner=192.168.1.106;Initial Catalog=ImageTest;User ID=sa;Password=1234;" providerName="System.Data.SqlClient"/>

  </connectionStrings>

192.168.1.104是主,192.168.1.106是镜像。

 

-------------------------测试------------------------------

--1、主备交流

 

--主机停掉SQL服务

 

 

--2、主服务器Down掉,备机紧迫运营並且初阶服务

--备机试行:

USE master;

ALTER DATABASE S_C_SC SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;

ALTER DATABASE S_C_SC SET ONLINE

 

 

--3、开启主机的SQL服务,原本的主服务器恢复生机,能够持续做事,需求再行设定镜像

--备机实施:

USE master;

ALTER DATABASE S_C_SC SET PARTNEXC60 RESUME; --复苏镜像

ALTER DATABASE S_C_SC SET PARTNE凯雷德 FAILOVE巴博斯 SL级; --切换成主机

 

 

--4、原本的主服务器恢复,能够持续做事

对设置是不是中标开展测量检验  

--------由于镜像 的老毛病:在镜像服务器上不能够查询数据。须要测量检验是还是不是能够成功。(数据库复制功效则足以卡塔尔 

--------通过在镜像数据库上成立数据库快速照相能够直接读取某贰个时刻点的镜像数据库  

--------测验进度:  

--------主机上实行:  

 USE master;     

  

ALTE索罗德 DATABASE TestMirroring SET SAFETY FULL;-----切换来高安全情势不然实践手动切换会失败  

  

GO  

 ALTE奥迪Q5 DATABASE TestMirroring SET PARTNECR-V FAILOVE昂Cora  ---手动进行主备切换  

------镜像服务器上施行:  

 USE master;     

 ALTER DATABASE TestMirroring SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS ---在镜像机上举行强制切换(当主服务器数据宕机时)  

  

  

-------假若原本的主服务器恢复生机,可以三番五回工作,必要再一次设定镜像  

----备机(镜像服务器卡塔尔国上实践:  

--复苏镜像       

 USE master;     

 ALTER DATABASE TestMirroring SET PARTNER RESUME    

--切换主备  

 ALTER DATABASE TestMirroring SET PARTNER FAILOVER   

------------------------删除数据库镜像  

  ALTER DATABASE TestMirroring SET PARTNER OFF  

-----------暂停数据库镜像会话  

   ALTER DATABASE TestMirroring SET PARTNER SUSPEND   

-----恢复生机数据库镜像会话  

   ALTER DATABASE TestMirroring SET PARTNER RESUME  

   ALTER DATABASE TestMirroring SET PARTNER SUSPEND   

-----关闭见证服务器  

   ALTER DATABASE TestMirroring SET WITNESS OFF  

  

   

  

   

  

/*  

 暗许情形下,事务安全等第的安装为 FULL,即合营运营情势,而且SQL Server 二零零七 规范版只协助同步情势。  

闭馆工作安全可将会话切换成异步运转格局,该格局可使质量到达最好。  

*/  

--事务安全,同步格局    

 USE master;     

 ALTER DATABASE TestMirroring SET PARTNER SAFETY FULL   

--事务不安全,异步方式    

 ALTER DATABASE TestMirroring SET PARTNER SAFETY OFF;  

  

--------在高品质方式下,见证服务器对可用性会有不利影响。即使见证服务器是本着数据库镜像会话而安插,则入眼服务器必得起码连接到一个其余服务器实例,  

--  即镜像服务器或见证服务器,也许是接二连三到那七个服务器。不然,将不可能选择数据库,况兼不可能实行强战胜务(也可能有失数据卡塔 尔(英语:State of Qatar)。  

--  因而,对于高质量形式,提议始终将见证服务器设置为 OFF。  

--  见证服务器的不二法门角色是永葆自动故障转移。并不能够用于数据库,是 SQL Server 的可选实例。  

--     它能使高安全性形式会话中的镜像服务器度和胆识别出是或不是要开动自动故障转移(见证服务器的剧中人物正是运行自动故障转移卡塔尔国。  

  ALTER DATABASE TestMirroring SET PARTNER OFF  

    

/*  

 自动故障转移所需条件  

  

  A、数据库镜像会话必得在高安全性格局下运维,并且必需管理见证服务器。  

  B、镜像数据库必需已经一齐。那将有限支撑发送到镜像服务器的全部日志都已经写入磁盘。  

  C、主体服务器已中断了与此外数据库镜像配置的通讯,而镜像服务器和知情者服务器将保存仲裁。不过,要是全部服务器实例都已经暂停通讯,  

   而知爱人服务器和镜像服务器稍后重新创造通讯,则不会生出自动故障转移。  

  D、镜像服务器已检查实验到错过了主心骨服务器  

  E、镜像服务器检查评定爱慕服务器故障的艺术决计于故障是硬故障大概软故障。  

  

 自动故障转移原理  

  

  A、就算主体服务器仍在运转中,则将主导数据库的气象修改为 DISCONNECTED 并断开全部客商端与主题数据库的连年。  

  B、见证服务器和镜像服务器将主导服务器注册为不可用。  

  C、如若重做队列中有其余等待的日志,则镜像服务器将变成前滚镜像数据库的操作  

  D、前一个镜像数据库作为新的联合具名主体数据库,复苏通过尽快回滚未提交的事体将那么些职业全体解除。锁将砍断那几个业务。  

  E、当前四个关键性服务重视新联接到会话时,它将分明其故障转移友人未来怀有主旨剧中人物。前一个大旨服务器接管镜像剧中人物,并将其数据库作为镜像数据库。  

   新的镜像服务器会赶紧将新的镜像数据库与主导数据库同步。新的镜像服务重视新联合数据库后,就足以重新实践故障转移,但按反向试行。。  

*/  

  

--------------------外延  

-----使用ADO.NET也许SQL Native Client能够活动连接到故障转移后的朋侪,连接字符串如下所示:  

  ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;   

  

--若无镜像服务器的建设,或条件不能兑现镜像服务器的建设。通过上边包车型地铁代码同样能够兑现相符镜像的成效   

  

-----C# code  

Imports System.Data.SqlClient   

Imports System.Data   

   

Public Class dbConn   

Private primaryServerLocation As String="SERVER=primaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"   

Private secondaryServerLocationAsString="SERVER=secondaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"   

   

   

Public sqlConnection AsSqlConnection   

Public cmd AsSqlCommand   

   

Public Sub primaryConnection()   

    Try   

        sqlConnection = New System.Data.SqlClient.SqlConnection(primaryServerLocation)   

        cmd = NewSystem.Data.SqlClient.SqlCommand()   

   

        'test connection   

        sqlConnection.Open()   

        sqlConnection.Close()   

    Catch ex As Exception   

        secondaryConnection()   

    End Try   

End Sub   

   

Public Sub secondaryConnection()   

    'Used as the failover secondary serverif primaryis down.   

    Try   

        sqlConnection = New System.Data.SqlClient.SqlConnection(secondaryServerLocation)   

        cmd = NewSystem.Data.SqlClient.SqlCommand()   

   

        'test connection   

        sqlConnection.Open()   

        sqlConnection.Close()   

    Catch ex As Exception   

    End Try   

End Sub   

  

  

-----C# code  

  --=================查看数据库镜像的配备情况=================   

  

-- 1.经过Management studio 对象财富管理器,查看主体数据库、镜像数据库状态   

-- 2.经过Management studio 对象能源微机中的数据库属性查看情形   

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

  

 use master   

  go   

  SELECT * FROM sys.database_mirroring_endpoints   

  SELECT * FROM sys.database_mirroring   

  WHERE database_id =(SELECT database_id FROM sys.databases   

          WHERE name = 'TestMirroring')  

  SELECT * FROM sys.database_mirroring_witnesses  

   

  

  

  

   

  

镜像的周转形式有三种:  

  

1、 高品质(异步卡塔 尔(英语:State of Qatar):先提交主服务器上的改正,然后将其传输到镜像服务器上。  

  

2、不带自行故障转移职能的高安全(同步): 进程始终提交主服务和镜像服务器上的改观。  

  

3、带自行故障转移效果的高安全(同步):须要见证服务器实例。假如主服务器和镜像服务器都可用,则交给在它们上边所做的改观并镜像。假如主服务器不可用,则见证服务器就能够调控全自动故障转移到镜像服务器上。  

本文由9159.com发布于www.9159.com,转载请注明出处:  基于数据库级别的实现,安装相同版本数据

关键词: