最近因为一个项目需要,要对数据库进行双机热备,不知道从何下手,于是上网找了很多的资料,然后经过多次尝试,最终成功,以下是实现过程中的总结。
具体的环境如下:
数据库是SqlServer2005,准备三台服务器做热备,分别是a、b、c,其中a是主服务器,b是镜像服务器,c是见证服务器
一、硬件条件:
1.a、b、c三台计算机都必须在一个局域网内
2.修改a、b、c三台服务器的计算机名,具体操作如下:我的电脑-->计算机名,点击“更改”后进入到“计算机名称更改”,点击“其它”进入“DNS后缀和NetBIOS计算机名”,输入com,点击“确定”保证(此时会提示重启计算机,不过稍后再启动,因为还有其他文件要修改)。
3.将三台计算机的ip+完整计算机名分别拷贝到主服务器、镜像服务器、见证服务器,具体格式如下:ip+空格+完整计算机名+enter,修改该文件必须是以管理员身份登录系统才可以。修改文件路径是:C:\Windows\System32\drivers\etc下的hosts文件
4. 重启三台计算机
二、软件条件
1.只有企业版、标准版、开发版才可以建立数据库镜像,其他版本即Express只能作为见证服务器,查看版本语句
select @@version(其实本人也不知道了解这几种版本之间的具体差别)
2.若要对数据库进行数据库镜像,必须将它更改为使用完整恢复模式,具体修改语句为
use master;
alter database <databasename> set recovery full
3.如果数据库没有打过sp2补丁,要先打补丁,不然后面语句无法成功执行。如果你的服务器系统是windows2008的,就需要打sp3补丁,这些补丁官网上都有。
三、具体步骤:
1.创建证书
--主服务器
use master;
create master key encryption by password='killkill';
create certificate host_a_cert with subject='host_a certificate',start_date='09/02/2012';
--镜像服务器
use master;
create master key encryption by password='killkill';
create certificate host_b_cert with subject='host_b certificate',start_date='09/02/2012';
--见证服务器
use master;
create master key encryption by password='killkill';
create certificate host_c_cert with subject='host_c certificate',start_date='09/02/2012';
2.创建连接的端点
--主服务器
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)
--镜像服务器
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)
--见证服务器
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=all)
注:创建端点的时候可能报错,可能是需要打sp2补丁(也许是其他问题)
3.备份证书以备建立互联
--主服务器
backup certificate host_a_cert to file ='d:\sqlbackup\host_a_cert.cer';
--镜像服务器
backup certificate host_b_cert to file ='d:\sqlbackup\host_b_cert.cer';
--见证服务器
backup certificate host_c_cert to file ='d:\sqlbackup\host_c_cert.cer';
4.互换证书
将主服务器和见证服务器上的备份证书拷贝到镜像服务器的d:\sqlbackup下;
将镜像服务器和见证服务器上的备份证书拷贝到主服务器的d:\sqlbackup下;
将主服务器和镜像服务器上的备份证书拷贝到见证服务器的d:\sqlbackup下。
5.添加登录名、用户
--主服务器
create login host_b_login with password='killkill';
create user host_b_user for login host_b_login;
create certificate host_b_cert authorization host_b_user from file='d:\sqlbackup\host_b_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_b_login]
create login host_c_login with password='killkill';
create user host_c_user for login host_c_login;
create certificate host_c_cert authorization host_c_user from file='d:\sqlbackup\host_c_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_c_login]
--镜像服务器
create login host_a_login with password='killkill';
create user host_a_user for login host_a_login;
create certificate host_a_cert authorization host_a_user from file='d:\sqlbackup\host_a_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_a_login]
create login host_c_login with password='killkill';
create user host_c_user for login host_c_login;
create certificate host_c_cert authorization host_c_user from file='d:\sqlbackup\host_c_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_c_login]
--见证服务器
create login host_a_login with password='killkill';
create user host_a_user for login host_a_login;
create certificate host_a_cert authorization host_b_user from file='d:\sqlbackup\host_a_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_a_login]
create login host_b_login with password='killkill';
create user host_b_user for login host_b_login;
create certificate host_b_cert authorization host_b_user from file='d:\sqlbackup\host_b_cert.cer';
grant connect on endpoint::endpoint_mirroring to [host_b_login]
四、建立镜像关系
1.准备备机数据库(同步主备数据库的数据)
可以尝试从刚刚使用的全备文件进行还原,在还原数据库的时候需要选上“restore with norecovery”,还原成功后的效果是“正在还原。。。”
2.建立镜像
--主服务器
alter database <databasename> set partner='tcp://10.16.1.47:5022';(这个ip指的是镜像服务器的ip)
如果不成功,就在备机数据库上执行以下语句
--镜像服务器
alter database <databasename> set partner='tcp://10.16.1.48:5022';(这个ip指的是主服务器的ip)
如果失败,提示类似数据库事务未同步,则说明主备数据库的日志未同步,此时应将主数据库的事务日志进行备份,并还原到镜像数据库上,还原步骤同1一致。
注:如果执行2中的语句仍无法实现,则通过手动创建镜像,具体操作步骤如下:
1.选择热备的数据库,右键“属性”-->“镜像”,在右侧点击“配置安全性”-->“下一步”,选择“yes”-->“下一步”-->“下一步”-->主体服务器默认,“下一步”-->连接镜像服务器实例,服务器名选择计算机名,“下一步”-->连接见证服务器实例,服务器名选择计算机名,“下一步”-->“下一步”,完成。
五、测试操作
(简单的测试方法就是修改数据库中的数据,然后拔网线、关闭sqlserver服务)
1.主备互换
--主机执行
use master;
alter database <databasename> set partner failover;
2.主服务器down掉,备机紧急启动并开始服务
--备机执行
use master;
alter database <databasename> set partner force_service_allow_data_loss;
3.原来的主机恢复,可以继续工作,需要重新设定镜像
--备机执行
use master;
alter database <databasename> set partner resume;--恢复镜像
alter database <databasename> set partner failover;--切换主机
4.原来的主服务器恢复,可以继续工作
use master;
alter database <databasename> set partner safety full;--事务安全,同步模式
alter database <databasename> set partner safety off;--事务不安全,异步模式
分享到:
相关推荐
这份文档是我在实际工作当中总结而来,希望能帮助在数据库双机热备方面有困惑的开发人员。
SQL server 2012 双机热备实操,配图详细 一、环境部署 二、主服务器发布部署 三、从服务器订阅部署
win2008-r2+sqlserver2008-双机热备
数据库镜像技术实现SQLServer2005双机热备,数据库镜像技术实现SQLServer2005双机热备
windows2008R2+SQLserver2005集群双机热备详细安装配置指导
SQL Server数据库在双机热备系统上的实现.pdf
oracle数据库双机热备安装——裸设备.doc oracle数据库双机热备安装——裸设备.doc oracle数据库双机热备安装——裸设备.doc
--本文档共71页,对基于windows server2019集群服务下Sql Server 2019安装进行详细说明,对每个步骤均进行详细图文讲解。 微软群集MSCS群集服务器是一组独立的服务器,运行群集服务,并像单个系统一样运作。通过将...
以MS SQLServer 2008为例,介绍MS SQLServer的安装以及通过MicroColor ServHA Mirror配置双机集群。 主要步骤: 一、配置防火墙。 二、准备存储介质。 三、安装并配置ServHA Mirror。 四、安装MS SQLServer。 五、...
在数据库使用中,双机热备是一个很关键的技术,如果是大型的、特大型的应用,肯定会使用数据库厂商的特定硬件加软件来解决。对于MySQL数据库来说,一般应用于中小规模的应用,不太可能投入巨大的成本去采购双机热备...
oracle数据库双机热备安装手册.pdf
数据库双机热备解决方案.pdf数据库双机热备解决方案.pdf数据库双机热备解决方案.pdf数据库双机热备解决方案.pdf数据库双机热备解决方案.pdf
OS:Windows 2003 server Oracle:oracle database 10g release2 数据库双机热备操作步骤
很详细的 SQLServer 双机热备配置图片
数据库双机热备系统设计与实现毕业论文.docx
要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库...
sql server2005基于镜像双机热备手册