SQL双机热备方案.docx
- 文档编号:26640062
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:24
- 大小:22.23KB
SQL双机热备方案.docx
《SQL双机热备方案.docx》由会员分享,可在线阅读,更多相关《SQL双机热备方案.docx(24页珍藏版)》请在冰豆网上搜索。
SQL双机热备方案
SQL2008双机热备方案
Question
0Signintovote公司要上一套系统,DB用SQL2008,怎么实现双机热备?
一种方案是用windows的故障转移群集搭配SQL自己的群集功能,这种方案需要有共享存储,我现在在虚拟测试环境没办法做实验,所以暂时先不考虑这个。
另外一种是用镜像的方式做双机热备,DB都放在服务器上,不用外接存储,主节点服务器DB实时复制到备用节点中,主节点故障后自动跳到备用节点,不会出现服务中断的问题。
这种方式能否实现,该如何操作?
因为没做过这种,所以思路有些乱,需要高手们给点指引,谢谢啦。
Friday,November09,20127:
42AMReply
|
QuoteRik101210Points
Answers
0Signintovote你好,你的方法是不是要有3台服务器安装SQL,一台主机,一台备机,一台做见证,安装完SQL后,打开SQL输入你提供的命令,来实现镜像功能?
因为以前没做过这块,所以比较小白,想细致了解一下,高手有空来指点指点,谢谢了。
你好,
那个见证服务器是可选的,你可以选择安装也可以不安装,见证服务器的作用就是,如果主机出错,那见证服务器就会自动地实现故障转移,然后使备机转化成主机,代替主机继续工作,如果你不安装的就只好出错的时候,自己手动转移了。
也不是说要输入命令,SSMS里这些都有的,你直接点击就可以了,因为我配置的时候也不愿意敲代码,不过这里有现成的你可以直接复制就好。
这篇文档可以手把手教你如果配置,不用写命令,请参考:
。
有什么不清楚的,在问我们,大家相互学习啦。
Thanks,
AmyPeng
立刻免费下载TechNet论坛好帮手Markedasanswerby
Rik1012
Tuesday,November13,20121:
50AMMonday,November12,20122:
52AMReply
|
QuoteAmyPeng-MSFT20,055Points
Allreplies
0Signintovote你说的故障转移群集和共享存储是HA,微软集群不是个什么好东西,个人看法
只热备的话应该部署镜像TrySQLServer2008QQ:
315054403***********************,November09,20129:
56AMReply
|
QuotedgdbaOEM制造行业1,480Points
0SignintovoteAgree,booksonlinetellsyouhowtosetdbmirroringstepbystep.Friday,November09,20121:
47PMReply
|
QuotermiaoNews32,240Points
0Signintovote微软集群不是个什么好东西,dgdba大侠你也太偏激了吧
我做过SQL2005的镜像,不过步骤跟2008应该差不多,给你一些示例代码,网上找的,自己亲自测试成功
数据库:
S_C_SC
网段:
192.168.1.X
--SQL2005数据库镜像的步骤
--1、检查SQLServer2005数据库
--只有SQLServer2005标准版、企业版和开发版才可以建立数据镜像。
--其他版本即Express只能作为见证服务器
--要保证打上SP2补丁SELECTSERVERPROPERTY('productlevel')--2、主备实例互通
--实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。
注意:
实现“主备数据库实例互通”的操作只需要做一次,每一对主备
实例(不是数据库)做一次互通。
-----------------------------------------------------------
--1、设置镜像数据库为完整恢复模式
alterDATABASES_C_SCsetrecoveryFULL
--2、创建证书(主备可并行执行)
--主机执行
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='joe';
CREATECERTIFICATEHOST_A_certWITHSUBJECT='HOST_Acertificate',
START_DATE='2012-09-25';
--备机执行
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='joe';
CREATECERTIFICATEHOST_B_certWITHSUBJECT='HOST_Bcertificate',
START_DATE='2012-09-25';
--见证执行
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='joe';
CREATECERTIFICATEHOST_C_certWITHSUBJECT='HOST_Ccertificate',
START_DATE='2012-09-25';
--3、创建连接的端点(主备可并行执行)
--主机执行:
USEmaster
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTED
AS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR
DATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_A_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
--备机执行:
USEmaster
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTED
AS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR
DATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_B_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
--见证执行:
USEmaster
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTED
AS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR
DATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_C_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=WITNESS);--4、备份证书以备建立互联(主备可并行执行)
--主机执行:
USEmaster
--BACKUPCERTIFICATEHOST_A_certTOFILE='D:
\SQLBackup\HOST_A_cert.cer';
BACKUPCERTIFICATEHOST_A_certTOFILE='D:
\HOST_A_cert.cer';
--备机执行:
USEmaster
BACKUPCERTIFICATEHOST_B_certTOFILE='D:
\SQLBackup\HOST_B_cert.cer';
--见证执行:
USEmaster
BACKUPCERTIFICATEHOST_C_certTOFILE='D:
\SQLBackup\HOST_C_cert.cer';
--5、互换证书
--
--将备份到D:
\SQLBackup\的证书进行互换,即HOST_A_cert.cer复制(是复制不是剪切)
--到备机的D:
\SQLBackup\。
HOST_B_cert.cer复制(是复制不是剪切)到主机的D:
\SQLBackup--见证的证书HOST_C_cert.cer复制到主机和备机,主机和备机复制到见证--6、添加登陆名、用户(主备见证可并行执行)
--以下操作只能通过命令行运行,通过图形界面无法完成。
(截至文档编写结束,SQLServer2005的版本号为SP2)
--主机执行:
USEmaster
CREATELOGINHOST_B_loginWITHPASSWORD='test';
CREATEUSERHOST_B_userFORLOGINHOST_B_login;
--CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='D:
\SQLBackup\HOST_B_cert.cer';
CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='D:
\HOST_B_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_B_login]
USEmaster
CREATELOGINHOST_C_loginWITHPASSWORD='test';
CREATEUSERHOST_C_userFORLOGINHOST_C_login;
CREATECERTIFICATEHOST_C_certAUTHORIZATIONHOST_C_userFROMFILE='D:
\HOST_C_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_C_login];
GO
--HOST_B_cert是第一步创建的证书
--备机执行:
USEmaster
CREATELOGINHOST_A_loginWITHPASSWORD='test';
CREATEUSERHOST_A_userFORLOGINHOST_A_login;
--CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='D:
\SQLBackup\HOST_A_cert.cer';
CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='D:
\HOST_A_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_A_login];
USEmaster
CREATELOGINHOST_C_loginWITHPASSWORD='test';
CREATEUSERHOST_C_userFORLOGINHOST_C_login;
CREATECERTIFICATEHOST_C_certAUTHORIZATIONHOST_C_userFROMFILE='D:
\HOST_C_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_C_login];
GO
--见证执行:
USEmaster
CREATELOGINHOST_A_loginWITHPASSWORD='test';
CREATEUSERHOST_A_userFORLOGINHOST_A_login;
--CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='D:
\SQLBackup\HOST_A_cert.cer';
CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='D:
\HOST_A_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_A_login];
USEmaster
CREATELOGINHOST_B_loginWITHPASSWORD='test';
CREATEUSERHOST_B_userFORLOGINHOST_B_login;
--CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='D:
\SQLBackup\HOST_B_cert.cer';
CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='D:
\HOST_B_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_B_login];
--注意:
这里添加的登录名和用户是添加在master数据库里的不是要做镜像的那个数据库
--这里添加的登录名和用户是用来做连接的,下面建立镜像关系才是修复孤立用户才是
--修复要做镜像的那个数据库的孤立用户--建立镜像关系----------------------------------------------
--以下步骤是针对每个数据库进行的,例如:
如果主机中有5个数据库以下过程就要执行5次。
--7、手工同步登录名和密码
--在前面提到数据库镜像的缺点之一是无法维护登录名,所以需要我们手工维护登录解决孤立用户。
--在主数据库中执行如下语句:
USEmaster;
selectsid,name,dbnamefromsysloginsWHEREdbname='要做镜像的数据库名'
USEmaster;
selectsid,name,dbnamefromsysloginsWHEREdbname='S_C_SC'
--查找出要做镜像的那个数据库里面有哪些用户名和sid,例如:
上述的’myuser’
--在备库中执行如下语句:
USEmaster;
execsp_addlogin
@loginame='<LoginName>',
@passwd='<Password>',
@sid=<sid>;
--8、准备备机数据库
--主库要备份两个bak文件
--第一个:
完整备份
--第二个:
事务日志备份,截断事务日志
--
(1)先在备机还原完整备份,“restorewithnorecovery”和覆盖现有数据库
--做了第一步之后,S_C_SC-》任务-》还原-》事务日志按钮才可用
--
(2)再还原事务日志,“restorewithnorecovery”和时间点:
最近状态
--如果执行成功备机数据库将会变成"正在还原"--由于是实验,没有为服务器配置双网卡,IP地址与图有点不一样,但是原理一样。
--9、必须要在镜像数据库中先设置好伙伴后,才能在主体服务器执行
--再在主体服务器实例上,将备机上的服务器实例设置为伙伴
--备机执行
USEmaster
ALTERDATABASES_C_SCSETPARTNER='TCP:
//192.168.1.100:
5022'
--主机执行
USEmaster
ALTERDATABASES_C_SCSETPARTNER='TCP:
//192.168.1.103:
5022'
--10、在主机执行设置见证服务器
ALTERDATABASES_C_SCSETWITNESS='TCP:
//192.168.1.101:
5022';
GO
--此时主:
S_C_SC(主体,已同步)备:
S_C_SC(镜像,已同步/正在还原)
--TCP:
//192.168.1.100:
主
--TCP:
//192.168.1.103:
备--如果删除不了正在还原的备库,那么可以重启SQL服务,就可以删除了
--故障解决:
pingiptelnet5022端口
-------------------------测试------------------------------
--默认情况下,事务安全级别的设置为FULL,即同步运行模式,而且SQLServer2005标准版只支持同步模式。
--关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。
USEmaster;
ALTERDATABASES_C_SCSETPARTNERSAFETYFULL--(默认)事务安全,同步模式镜像的更改和主体的更改都同步
ALTERDATABASES_C_SCSETPARTNERSAFETYOFF--事务不安全,异步模式只有主体的更改同步
--1、主备互换
--主机停掉SQL服务
--2、主服务器Down掉,备机紧急启动并且开始服务
--备机执行:
USEmaster;
ALTERDATABASES_C_SCSETPARTNERFORCE_SERVICE_ALLOW_DATA_LOSS;
ALTERDATABASES_C_SCSETONLINE
--3、开启主机的SQL服务,原来的主服务器恢复,可以继续工作,需要重新设定镜像
--备机执行:
USEmaster;
ALTERDATABASES_C_SCSETPARTNERRESUME;--恢复镜像
ALTERDATABASES_C_SCSETPARTNERFAILOVER;--切换到主机
--4、原来的主服务器恢复,可以继续工作--查看当前服务器做了镜像partner的那个服务器
SELECT*FROMsys.database_mirroring
-------------------------------删除镜像---------------------
--查看终端点
select*fromsys.endpoints
--删除某终端点(终端点不带引号)
dropENDPOINTendpoint_Mirroring
--删除证书在master|Security|Certificates
--删除用户在master|User
--然后可以删除登录名droplogin<login_name>
--修改masterkey:
altermasterkeydropencryptionbyservicemasterkey
--删除masterkey:
dropmasterkey
--删除镜像的命令:
ALTERDATABASES_C_SCsetpartnerOFF
RESTOREDATABASES_C_SCWITHrecovery--放弃事务,立刻还原
-------------解除数据库镜像---------------------------------
ALTERDATABASES_C_SCSETPARTNEROFF给我写信:
QQ我:
Friday,November09,20122:
02PMReply
|
Quote桦仔DBA(MVP)5,380Points
0Signintovote各有各立场和观察角度吧
如果你玩下虚拟化平台,再回头看下微软集群
对MSOffice/Win/SQLServer偏爱,对MSCS偏厌TrySQLServer2008QQ:
315054403*************************,November10,20123:
09AMReply
|
QuotedgdbaOEM制造行业1,480Points
0Signintovote你说的故障转移群集和共享存储是HA,微软集群不是个什么好东西,个人看法
只热备的话应该部署镜像
TrySQLServer2008QQ:
315054403*****************
不管MSCS是不是好东西,SQL的Failovercluster是依赖于它的。
做过大数据量高性能系统的就会知道,Mirror不见得比Failovercluster好用。
另外,没有什么是服务不中断的,只是时间长短而已。
Hyper-V虚拟机做共享存储非常简单。
想不想时已是想,不如不想都不想。
Saturday,November10,20125:
29AMReply
|
Quote怡红公子(MVP)6,410Points
0Signintovote怡红公子大侠说得对,根据实际情况选择合适的解决方案
节省成本就使用Mirror
高一点使用MSCS
最高一点虚拟化给我写信:
QQ我:
Saturday,November10,20125:
52AMReply
|
Quote桦仔DBA(MVP)5,380Points
0SignintovoteAnyreasongiveVMhighestranking?
Don'tknowanyoneuseVMinlargeenvironment.Saturday,November10,20128:
52PMReply
|
QuotermiaoNews32,240Points
0SignintovoteAnyreasongiveVMhighestranking?
Don'tknowanyoneuseVMinlargeenvironment.看实际情况了,有些大客户会有很多小系统的。
比如海关、医院。
想不想时已是想,不如不想都不想。
Sunday,November11,201212:
34AMReply
|
Quote怡红公子(MVP)6,410Points
0Sign
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 双机 方案