SQLServer 镜像功能完全实现
经过一番努力,我终于成功配置了SQLServer数据库的镜像功能。这是一项既复杂又充满挑战的任务,需要耗费大量的时间和精力。在此,我想分享一下我的经验和学习成果,希望能帮助到其他遇到类似问题的朋友。
我要说的是在域环境下配置SQLServer镜像的过程。由于我在生产环境下操作,涉及到更改域用户,这个过程相对复杂并且需要重启SQLServer,所以我放弃了这种方式,选择了证书形式进行配置。这种方法的优点是灵活性较高,适用于各种环境。
我的环境配置是这样的:主机位于IP地址192.168.10.2(代号A),镜像服务器位于IP地址192.168.10.1(代号B)。由于条件有限,我没有设置见证服务器。两台服务器上都是SQLServer2005版本。
在配置主机时,我执行了以下SQL代码:
首先创建主机数据库的主密钥:使用master数据库,创建一个加密的主密钥。然后创建一个证书,用于数据库实例的加密通信。接着使用创建的证书创建数据库镜像端点,并设置镜像端口为5022。最后备份主机上的证书并复制到镜像服务器上。
配置镜像服务器时,也需要创建主密钥和证书,然后创建镜像端点并设置端口号、IP地址等参数。最后备份镜像服务器上的证书并复制到主机上。这里需要注意的是,在设置证书时,要选择合适的加密算法(如RC4或AES)以满足加密需求。这个过程虽然繁琐但非常重要,因为它确保了数据在传输过程中的安全性。
在整个配置过程中,我遇到了很多问题,比如证书不匹配、端口冲突等。这些问题让我花费了很多时间和精力去调试和排查。但是通过不断尝试和查阅资料,我最终成功地解决了这些问题并完成了SQLServer镜像的配置。这个过程让我学到了很多关于SQLServer数据库镜像的知识和技能,也让我更加熟悉SQL代码的使用和操作。我希望我的分享能够帮助到其他遇到类似问题的朋友,让他们能够更快地解决问题并成功配置SQLServer镜像。建立镜像登录账户,实现A、B服务器间的安全互通
在A服务器上执行操作:
创建一个登录名为B_login,并设置密码为'password'。接着,创建一个用户B_user关联此登录名。然后,从文件'D:\As_B_cert.cer'中创建一个证书As_B_cert并授权给B_user。在Endpoint::Endpoint_Bs上授予B_login连接权限。
在B服务器上执行操作:
同样地,创建一个登录名为A_login并设置密码,然后创建用户A_user关联此登录名。从文件'D:\As_A_cert.cer'创建一个证书As_A_cert并授权给A_user。在Endpoint::Endpoint_As上授予A_login连接权限。
确保两台服务器的5022端口未被占用,且可以互相连接,至此镜像设置已完成一半。
接下来是对A服务器上的Test数据库进行完整备份:
在主机上执行完整备份操作。使用USE master命令切换到master数据库,然后对Test数据库进行备份。使用ALTER DATABASE Test SET RECOVERY FULL命令确保数据库处于可恢复状态,然后使用BACKUP DATABASE和BACKUP LOG命令将Test数据库及其日志备份到指定磁盘。
将备份文件复制到B服务器后,准备在B服务器上恢复数据库。如果直接执行RESTORE DATABASE和RESTORE LOG命令可能会遇到错误。这可能是由备份集中的数据库备份与现有数据库不同或备份集名称不同导致的。为了解决这个问题,我们可以使用狼蚁网站SEO优化的sp_addumpdevice方法来建立还原设备,确保备份文件与数据库匹配。执行sp_addumpdevice命令来添加备份设备,然后使用RESTORE DATABASE和RESTORE LOG命令恢复数据库和日志。
如果在之前多次备份数据库,可能会产生多个备份集。在这种情况下,执行恢复操作时不能指定file为1,需要根据实际的备份集来指定。如果遇到错误提示“此备份集中的日志终止于LSN 36000000014300001,该LSN太早,无法应用到数据库”,可以通过查询备份文件的备份集来找到正确的file值。在第一次完整恢复时需要指定NORECOVERY。
整个过程中,务必确保操作正确无误,以保证数据的安全性和完整性。镜像同步工作正式启动前的准备已全部完成。我们开始按照预定的步骤执行镜像操作。在镜像服务器上执行命令:`ALTER DATABASE Test SET PARTNER = 'TCP://192.168.10.2:5022'`。当这一步骤成功完成后,再在主机上执行相同的命令,确保两台服务器之间的镜像同步。这样,两台服务器的数据镜像便实现了同步。
当需要删除镜像时,执行命令`ALTER DATABASE Test SET PARTNER OFF`即可。如果在主机出现问题时,需要执行以下代码以切换到故障转移模式:`USE MASTER Go ALTER DATABASE Test SET PARTNER FAILOVER Go`。若在执行镜像设置过程中遇到中断并需重新操作,必须确保清除所有先前的配置。
若要查询当前的镜像状态,可以使用`select from sys.endpoints`进行查询。若需删除端口,执行`drop endpoint Endpoint_As`。为了查看现有的证书,可以执行`select from sys.symmetric_keys`。在删除证书时,需先使用`DROP CERTIFICATE As_A_cert`删除证书,然后再使用`DROP MASTER KEY`删除主键。若要完全删除镜像,执行命令`alter database
还有一个重要的存储过程需要注意,那就是`sp_addumpdevice`。它的语法如下:
```csharp
sp_addumpdevice [ @devtype = ] 'device_type' , [ @logicalname = ] 'logical_name' , [ @physicalname = ] 'physical_name'
```
在这个语法中:
`@devtype`表示设备类型,支持的值为“disk”和“tape”,其中“disk”代表磁盘文件,“tape”代表Windows支持的任何磁带设备。
`@logicalname`是备份设备的逻辑名称,也就是设备名称。
`@physicalname`则是备份设备的物理名称,也就是设备的路径。
以上内容供参考,如有疑问或需进一步了解,请查阅相关文档或咨询专业人士。需要注意的是,以上操作涉及到数据库的重要配置和更改,请谨慎操作,确保数据的完整性和安全性。
(完)参考文章结束,接下来的内容将由cambrian系统渲染生成。
seo排名培训
- SQLServer 镜像功能完全实现
- mysql基础知识扫盲
- VUE 自定义组件模板的方法详解
- Laravel 5.1 on SAE环境开发教程【附项目demo源码】
- JavaScript常用基础知识强化学习
- 编写PHP脚本来实现WordPress中评论分页的功能
- 很实用的NLog配置分享
- react-router v4如何使用history控制路由跳转详解
- 用ASP实现分级权限控制
- javascript弹出带文字信息的提示框效果
- AngularJS 中的Promise --- $q服务详解
- jQuery图片瀑布流的简单实现代码
- 详解在React.js中使用PureComponent的重要性和使用方
- laravel批量生成假数据的方法
- Yii2中OAuth扩展及QQ互联登录实现方法
- JS实现简易刻度时钟示例代码