设为首页 收藏本站
查看: 566|回复: 0

[经验分享] SQL Server 2005 镜像构建手册

[复制链接]

尚未签到

发表于 2016-11-1 01:48:23 | 显示全部楼层 |阅读模式
[原创]SQL Server 2005 镜像构建手册


一、 镜像简介

1 简介

数据库镜像是将数据库事务处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像不能直接访问;它只用在错误恢复的情况下才可以被访问。

要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境。主服务器被称为主机,第二个服务器被称作备机。主机数据库就是你实际用着的数据库,镜像数据库就是你的数据库的备用拷贝。当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。

除了基本和镜像之外,你还可以引入另一个可选的组件,名为见证。见证服务器是第三个SQL Server 2005运行实例,它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。只有当你想实现自动错误恢复的时候用到这个选项。它实现了21投票的能力,当我的一个组件不可达,并因此需要进行错误恢复的时候。见证服务器只有在你想实现自动错误恢复的时候才需要用到。

2 优点

下表是SQL Server可用性官方解决方案的一个对照表,现时我中心使用的恢复模式是冷备份中的备份/恢复,通常来说热备份冷备份的可用性更高,恢复更快,更适合我中心现时的实际情况。如果不从成本考虑的话,热备份中的故障转移群集的可用性是最高的,但是故障转移群集需要借助磁盘阵列而且建设本身复杂性较高。数据库镜像的建立并没有太多的硬件要求,最起码没有像故障转移群集需要共享存储这么高的要求。





2 缺点

1)由于SQL Server是一个实例多个数据库的产品,数据库镜像技术是基于数据库级别的,因此每次主数据库新增数据库都必须为备机增加数据库并且为新增的数据库建立镜像关系。

2)数据库的登录名和用户是存储在master数据库,master数据库是不能做镜像的,所以每次操作数据库的登录名和用户也是需要多维护一份,

3)数据库作业不能得到相应的维护。

4)微软号称镜像可以让客户端对故障透明,但是实际测试中发现只有满足特定的条件才能实现透明化,而且透明化得客户端支持才可行(.net Framework 2.0以上,Microsoft jdbc驱动 1.1以上)。

5)跨数据库事务和分布式事务均不支持数据库镜像。

纵观其他几种方式,仅有热备份故障转移群集没有这些问题。

一、配置主备机

1 物理连接

将主备数据库按照如图所示连接:





2 检查SQL Server 2005数据库

只有SQL Server 2005 标准版、企业版和开发版才可以建立数据镜像。其他版本即Express只能作为见证服务器。如果实在不清楚什么版本,执行如下语句查看:

1 select@@version;

若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式。若要用 Transact-SQL 实现此目的,请使用 ALTER DATABASE 语句:

1USEmaster;
2ALTERDATABASE<DatabaeName>
3SETRECOVERYFULL;
4


二、主备实例互通

实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现主备数据库实例互通的操作只需要做一次,例如为了将两个SQL Server 2005的实例中的5个数据库建成镜像关系,则只需要做一次以下操作就可以了;或者这样理解:每一对主备实例(不是数据库)做一次互通。

1、创建证书(主备可并行执行)

--主机执行:

1 USEmaster;
2 CREATEMASTERKEYENCRYPTIONBYPASSWORD='syhr';
3 CREATECERTIFICATEHOST_A_certWITHSUBJECT='HOST_Acertificate',
4 START_DATE='09/02/2010';
5

--备机执行:

1 USEmaster;
2 CREATEMASTERKEYENCRYPTIONBYPASSWORD='syhr';
3 CREATECERTIFICATEHOST_B_certWITHSUBJECT='HOST_Bcertificate',
4 START_DATE='09/02/2010';
5


2、创建连接的端点(主备可并行执行)

--主机执行:

1 CREATEENDPOINTEndpoint_Mirroring
2 STATE=STARTED
3 AS
4 TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
5 FOR
6 DATABASE_MIRRORING
7 (AUTHENTICATION=CERTIFICATEHOST_A_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
8

--备机执行:

1 CREATEENDPOINTEndpoint_Mirroring
2 STATE=STARTED
3 AS
4 TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
5 FOR
6 DATABASE_MIRRORING
7 (AUTHENTICATION=CERTIFICATEHOST_B_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
8


3、备份证书以备建立互联(主备可并行执行)

--主机执行:

1 BACKUPCERTIFICATEHOST_A_certTOFILE='D:\SQLBackup\HOST_A_cert.cer';

--备机执行:

1 BACKUPCERTIFICATEHOST_B_certTOFILE='D:\SQLBackup\HOST_B_cert.cer';


4、互换证书

将备份到D:\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制到备机的D:\SQLBackup\HOST_B_cert.cer复制到主机的D:\SQLBackup\

5、添加登陆名、用户(主备可并行执行)

以下操作只能通过命令行运行,通过图形界面无法完成。(截至文档编写结束,SQL Server2005的不定号为SP2

--主机执行:

1 CREATELOGINHOST_B_loginWITHPASSWORD='syhr';
2 CREATEUSERHOST_B_userFORLOGINHOST_B_login;
3 CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='D:\SQLBackup\HOST_B_cert.cer';
4 GRANTCONNECTONENDPOINT::Endpoint_MirroringTO[HOST_B_login];
5

--备机执行:

1 CREATELOGINHOST_A_loginWITHPASSWORD='syhr';
2 CREATEUSERHOST_A_userFORLOGINHOST_A_login;
3 CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='D:\SQLBackup\HOST_A_cert.cer';
4 GRANTCONNECTONENDPOINT::Endpoint_MirroringTO[HOST_A_login];
5


三、建立镜像关系

以下步骤是针对每个数据库进行的,例如:现有主机中有5个数据库以下过程就要执行5次。

1 手工同步登录名和密码

在第一章中提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录。

通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用’myuser’作为登录名访问数据库,但是在备机中没有’myuser’这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为"孤立用户"


<

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293820-1-1.html 上篇帖子: Sql Server数据库实用命令 下篇帖子: SQL Server导出EXCEL的存储过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表