一、确认数据库运行环境是否配置正确
打开SQL Server Management Studio,新建查询:
select * from sys.servers
GO
//这里可得到原来的计算机名称。然后将其记录下来(复制即可)
看这里的name是否和你的服务器的计算机名称一样,如果一样可以跳到文档(二),否则请按如下操作更改
新建查询:
sp_dropserver [你的SQL服务器名称]
GO
EXEC sp_addserver ‘你服务器的计算机名称’, ‘local’, ‘duplicate_OK’
然后重起sqlserver(我是直接重新起的计算机)
即可。。。
一、配置主备机
1、 物理连接
将主备数据库按照如图所示连接:
请先把备机中的VopMSsql数据库删除
2、 检查SQL Server 2005数据库
要对数据库进行数据库镜像,必须将它更改为使用完整恢复模式。用 Transact-SQL 实现此目的,使用 ALTER DATABASE 语句:
USE master; ALTER DATABASE Vopmssql SET RECOVERY FULL;
二、主备实例互通
实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现。注意:实现“主备数据库实例互通”的操作只需要做一次。
1、创建证书(主备可并行执行)
–主机执行:
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘vop’; CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = ‘HOST_A certificate’ , START_DATE = ’11/01/2008′;
–备机执行:
USE master; CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘vop’; CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = ‘HOST_B certificate’, START_DATE = ’11/01/2008′;
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 );
3、备份证书以备建立互联(主备可并行执行)
–主机执行:
BACKUP CERTIFICATE HOST_A_cert TO FILE = ‘D:/HOST_A_cert.cer’;
–备机执行:
BACKUP CERTIFICATE HOST_B_cert TO FILE = ‘D:/HOST_B_cert.cer’;
4、互换证书
将备份到D:/的证书进行互换,即HOST_A_cert.cer复制到备机的D:/。HOST_B_cert.cer复制到主机的D:/
5、添加登陆名、用户(主备可并行执行)
以下操作只能通过命令行运行,通过图形界面无法完成。
–主机执行:
CREATE LOGIN HOST_B_login WITH PASSWORD = ‘vop’; CREATE USER HOST_B_user FOR LOGIN HOST_B_login; CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = ‘D:/HOST_B_cert.cer’; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
–备机执行:
CREATE LOGIN HOST_A_login WITH PASSWORD = ‘vop’; CREATE USER HOST_A_user FOR LOGIN HOST_A_login; CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = ‘D:/HOST_A_cert.cer’; GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
三、建立镜像关系
1、 手工同步登录名和密码
通常来说数据库都将会有若干个用户作为访问数据库的用户,并且数据库会有相应的登录名,但是在备机中缺少与之相对应的登录名,例如某业务系统使用’vop’作为登录名访问数据库,但是在备机中没有’vop’这个登录名,因此一旦主备切换,业务系统就无法登录数据库了,这种情况称为”孤立用户”
在主数据库中执行如下语句:
USE master; select sid,name from syslogins;
查找出相应的用户名和sid,例如:上述的’vop’
在备数据库中执行如下语句:
USE master; exec sp_addlogin @loginame = ‘<LoginName>’, @passwd = ‘<Password>’, @sid = <sid> ;
这里的’LoginName’即主数据库中的登录名,sid即是上述通过SQL语句查找出的sid。
例如,查询得到的sid和name如下所示。
sid name ———————————- —————– 0x074477739DCA0E499C29394FFFC4ADE4 cz_account
则建立登录名的SQL语句:
USE master; exec sp_addlogin @loginame = ‘vop’, @passwd = ‘password’, @sid = 0x074477739DCA0E499C29394FFFC4ADE4;
到此为止可以认为备机数据库的环境已经与主机同步了,还差数据库内的数据未同步。
2、 准备备机数据库
1)备份主机数据库,备份类型选择“完整”,在备机中完全恢复。恢复时,在选项页面的恢复状态中,选择“不对数据库执行任何操作”。以名为test的数据库为例
–主机备份数据库:
–备机还原数据库:
如果执行成功数据库将会变成这个样子:
2)备份主体数据库日志,在备机数据库中恢复。恢复时,在选项页面的恢复状态中,选择”不对数据库执行任何操作”
日志备份-恢复操作必须在数据备份-恢复后执行。
–主机备份数据库日志:
–备机还原数据库日志:
3、 建立镜像
–主机执行:
ALTER DATABASE VopMSsql SET PARTNER = ‘TCP://192.168.0.2:5022’;
–如果主体执行不成功,尝试在备机中执行如下语句:
备机执行成功后,再在主机中重新执行上述语句。
ALTER DATABASE VopMSsql SET PARTNER = ‘TCP://192.168.0.1:5022’;
如果执行成功,则主备数据库将会呈现如上图所示的图标。
四、测试操作
1、主备互换
–主机执行:
1 USE master; 2 ALTER DATABASE VopMssql SET PARTNER FAILOVER; 3
2、主服务器Down掉,备机紧急启动并且开始服务
–备机执行:
1 USE master; 2 ALTER DATABASE VopMssql SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS; 3
3、原来的主服务器恢复,可以继续工作,需要重新设定镜像
1 –备机执行: 2 USE master; 3 ALTER DATABASE VopMssql SET PARTNER RESUME; –恢复镜像 4 ALTER DATABASE VopMssql SET PARTNER FAILOVER; –切换主备 5
4、原来的主服务器恢复,可以继续工作
–默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。
–关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。
1 USE master; 2 ALTER DATABASE VopMssql SET PARTNER SAFETY FULL; –事务安全,同步模式 3 ALTER DATABASE VopMssql SET PARTNER SAFETY OFF; –事务不安全,异步模式 4
删除数据库镜像
1. 连接到任一伙伴。
2. 发出以下 Transact-SQL 语句:
代码语言:javascript复制ALTER DATABASE <database_name> SET PARTNER OFF
其中,<database_name> 是要删除其会话的镜像数据库。
此语句可删除数据库镜像会话并从数据库中删除镜像。可以在任一合作伙伴上指定 OFF。有关删除数据库镜像的影响的详细信息,请参阅删除数据库镜像。
3. 或者,可以恢复以前的镜像数据库。在作为镜像服务器的服务器实例上,输入:
代码语言:javascript复制RESTORE DATABASE <database_name> WITH RECOVERY;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183392.html原文链接:https://javaforall.cn