mssql数据库镜像搭建教程.docx
- 文档编号:11943312
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:1.61MB
mssql数据库镜像搭建教程.docx
《mssql数据库镜像搭建教程.docx》由会员分享,可在线阅读,更多相关《mssql数据库镜像搭建教程.docx(16页珍藏版)》请在冰豆网上搜索。
mssql数据库镜像搭建教程
mssql2005数据库镜像搭建教程-
数据库镜像是SQLSERVER2005用于提高数据库可用性的新技术其优势是以在不丢失已提交数据的前提下进行快速故障转移,无须专门的硬件,并且易于配置和管理,本文将如介绍,有需求的朋友可以参考下
-
一概述
数据库镜像是SQLSERVER2005用于提高数据库可用性的新技术。
数据库镜像将事务日志记录直接从一台服务器传输到另一台服务器,并且能够在出现故障时快速转移到备用服务器。
可以编写客户端程序自动重定向连接信息,这样一旦出现故障转移就可以自动连接到备用服务器和数据库。
优势:
数据库镜像可以在不丢失已提交数据的前提下进行快速故障转移,无须专门的硬件,并且易于配置和管理。
二环境准备
操作系统:
Window2003enterprisesp2(至少两台,如要启用自动故障转移,必需三台)
SQL版本:
MSSQLSERVER2005SP3
检查SQLSERVER版本:
execxp_msver
selectSERVERPROPERTY('productlevel')
数据库准备:
准备一个数据库:
ccerp_jzt,备份此数据库还原到另外一台机器上,另外一台必须是withnorecovery
这里我假设服务器A,B,C
A为主体服务器,B为镜像服务器,C为见证服务器
A服务器
usemaster
go
restorefilelistonlyfromdisk=N'f:
\databak\ccerp_jzt_backup_200911250100.bak'
restoredatabaseccerp_jztfromdisk=N'f:
\databak\ccerp_jzt_backup_200911250100.bak'withreplace,recovery,
move'ccerp_ydswzip_Data'to'd:
\data\ccerp_jzt.mdf',
move'ccerp_ydswzip_Log'to'd:
\data\ccerp_jzt_log.ldf'
execsp_helpdb'ccerp_jzt'
backupdatabaseccerp_jzttodisk=N'f:
\databak\sk.bak'withinit
--更改恢复模式
alterdatabaseccerp_jztsetrecoveryfull
B服务器:
CREATEDATABASEccerp_jzt
ON
(NAME=Sales_dat,
FILENAME='d:
\data\ccerp_jzt.mdf',
SIZE=10
)
LOGON
(NAME='ccerp_jzt_log',
FILENAME='d:
\data\ccerp_jzt_log.ldf',
SIZE=5MB
)
GO
restorefilelistonlyfromdisk=N'f:
\xxzx\data\sk.bak'
usemaster
go
restoredatabaseccerp_jztfromdisk=N'f:
\xxzx\data\sk.bak'withreplace,norecovery,
execsp_helpdb'ccerp_jzt'
C服务器只要装上SQLSERVER2005就可以,无需其他准备
准备完成后如下图所示:
三三种模式的搭建
数据库镜像要建立必需得建立信任关系,那么在WIN环境下建立信任关系可以通过三种方式:
域帐户,证书信任,windows匿名登陆,现就前两种模式做配置说明.
3.1域帐户模式:
3.1.1更改mssqlserver服务的的登陆方式为域帐户登陆方式:
进入windows服务管理控制台,更改服务登陆帐户,使域账户有更改MSSQLSERVER服务状态的权限.三台机器都做同样设置
将域帐户赋予sysadmin角色
3.1.2建立端点:
通过图形界面建立端点:
启动SQLWB,按图一直下一步
用域帐户登陆
如果成功则:
3.2证书模式
3.2.1建立证书&端点
参与数据库镜像会话的服务器必须彼此信任。
对于本地通信而言,例如一个域内的通信,信任意味着SQLServer实例登陆账号必须有权限连接到其他镜像服务器,也包括endpoints。
首先在每个服务器上使用CREATELOGIN命令,然后使用GRANTCONNECTONENDPOINT命令.非信任域之间的通信必须使用证书。
如果使用CREATECERTIFICATE语句创建自签名的证书,基本上所有数据镜像证书的要求都可以满足。
确认在CREATECERTIFICATE语句中将证书标记为ACTIVEFORBEGIN_DIALOG。
一 建立证书:
镜像服务器上执行:
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='TEST';
CREATECERTIFICATEHOST_A_certWITHSUBJECT='HOST_Acertificate',START_DATE='2010-03-10';
主体服务器上执行:
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='TEST';
CREATECERTIFICATEHOST_B_certWITHSUBJECT='HOST_Bcertificate',START_DATE='2010-03-10';
见证服务器上执行:
USEmaster;
CREATEMASTERKEYENCRYPTIONBYPASSWORD='TEST';
CREATECERTIFICATEHOST_C_certWITHSUBJECT='HOST_Ccertificate',START_DATE='2010-03-10';
二 建立端点:
镜像服务器上执行:
--createmirrorendpointonprimaryA
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTEDAS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FORDATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_A_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
主体服务器上执行:
--CreateendpointonmirrorserverB
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTED
AS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR
DATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_B_cert,ENCRYPTION=REQUIREDALGORITHMAES,ROLE=ALL);
见证服务器上执行:
--CreateendpointonwitnessserverC
CREATEENDPOINTEndpoint_Mirroring
STATE=STARTED
AS
TCP(LISTENER_PORT=5022,LISTENER_IP=ALL)
FOR
DATABASE_MIRRORING
(AUTHENTICATION=CERTIFICATEHOST_C_cert,
ENCRYPTION=REQUIREDALGORITHMAES,ROLE=witness);
SELECT*FROMsys.database_mirroring_endpoints;
证书互备:
镜像服务器上执行:
--backupcertificate
BACKUPCERTIFICATEHOST_A_certTOFILE='e:
\HOST_A_cert.cer'
主体服务器上执行
--backupcertificate
BACKUPCERTIFICATEHOST_B_certTOFILE='e:
\HOST_B_cert.cer'
见证服务器上执行:
BACKUPCERTIFICATEHOST_c_certTOFILE='e:
\HOST_C_cert.cer'
将备份到的证书进行互换,即HOST_A_cert.cer复制到B机的e:
\将HOST_B_cert.cer复制到A机的E:
\,也就是每台服务器有三个证书
三:
建立登陆用户:
镜像服务器上执行:
--Createuser
CREATELOGINHOST_B_loginWITHPASSWORD='test';
CREATEUSERHOST_B_userFORLOGINHOST_B_login;
CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='e:
\HOST_B_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_B_login];
CREATELOGINHOST_C_loginWITHPASSWORD='test';
CREATEUSERHOST_C_userFORLOGINHOST_c_login;
CREATECERTIFICATEHOST_c_certAUTHORIZATIONHOST_c_userFROMFILE='e:
\HOST_c_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_c_login];
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_A_login];
--queryusersid
selectloginname,name,sidFromsyslogins
主体服务器上执行:
--Createuser
CREATELOGINHOST_A_loginWITHPASSWORD='test';
CREATEUSERHOST_A_userFORLOGINHOST_A_login;
CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='e:
\HOST_A_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_A_login];
--addwitnessuser
CREATELOGINHOST_C_loginWITHPASSWORD='test';
CREATEUSERHOST_C_userFORLOGINHOST_c_login;
CREATECERTIFICATEHOST_c_certAUTHORIZATIONHOST_c_userFROMFILE='e:
\HOST_c_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_c_login];
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_B_login];
--querysid
selectloginname,name,sidFromsyslogins
见证服务器上执行:
--Createuser
CREATELOGINHOST_A_loginWITHPASSWORD='test';
CREATEUSERHOST_A_userFORLOGINHOST_A_login;
CREATECERTIFICATEHOST_A_certAUTHORIZATIONHOST_A_userFROMFILE='e:
\HOST_A_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_A_login];
--adduserhost_b_logintohavepemissiontoaccesswitness
CREATELOGINHOST_B_loginWITHPASSWORD='test';
CREATEUSERHOST_B_userFORLOGINHOST_B_login;
CREATECERTIFICATEHOST_B_certAUTHORIZATIONHOST_B_userFROMFILE='e:
\HOST_B_cert.cer';
GRANTCONNECTONENDPOINT:
:
Endpoint_MirroringTO[HOST_B_login];
grantconnectonendpoint:
:
endpoint_mirroringtoHOST_C_login
USEmaster;
execsp_addlogin
@loginame='HOST_B_login',
@passwd='test',
@sid=0x1A914CA3D1D00C4793EBC96E4C4F4352;
ALTERDATABASEccerp_jztSETPARTNER='TCP:
//192.168.137.32:
5022';
四.建立镜像:
先在镜像服务器上执行:
ALTERDATABASEccerp_jztSETPARTNER='TCP:
//192.168.137.44:
5022';
接着主体服务器执行:
ALTERDATABASEccerp_jztSETPARTNER='TCP:
//192.168.137.32:
5022';
ALTERDATABASEccerp_jztSETwitness='TCP:
//192.168.137.49:
5022';
至此引证书建立完毕
四、测试操作
1、主备互换
--主机执行:
1USEmaster;
2ALTERDATABASE
2、主服务器Down掉,备机紧急启动并且开始服务
--备机执行:
1USEmaster;
2ALTERDATABASE
3、原来的主服务器恢复,可以继续工作,需要重新设定镜像
1--备机执行:
2USEmaster;
3ALTERDATABASE
4ALTERDATABASE
4、原来的主服务器恢复,可以继续工作
--默认情况下,事务安全级别的设置为FULL,即同步运行模式,而且SQLServer2005标准版只支持同步模式。
--关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。
1USEmaster;
2ALTERDATABASE
3ALTERDATABASE
错误说明:
消息1498,级别16,状态3,第1行
默认情况下,数据库镜像是被禁用的。
当前提供的数据库镜像仅供评估使用,并不应使用于生产环境中。
若要以评估为目的启用数据库镜像,请在启动过程中使用跟踪标志1400。
有关跟踪标志和启动选项的详细信息,请参阅SQLServer联机丛书。
解决办法:
没打SP1以上补丁.强烈建议打SP3
消息1475,级别16,状态2,第1行
由于"ccerp_jzt"数据库可能有尚未备份的大容量日志记录更改,所以无法启用数据库镜像。
必须在镜像上还原主体数据库的上一次日志备份。
主体上:
backuplogccerp_jzttodisk='e:
\log.trn'withno_truncate
镜像上:
restorelogccerp_jztfromdisk='e:
\log.trn'withnorecovery
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mssql 数据库 搭建 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)