SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份。这里的同步备份指的是备份服务器与主服务器进行实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用。它是一种优于文件备份的数据库备份解决方案。
在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制。数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜像服务器。但缺点是配置复杂,镜像数据库中的数据不可见(在SQL Server Management Studio中,只能看到镜像数据库处于镜像状态,无法进行任何数据库操作,最简单的查询也不行。想眼见为实,看看镜像数据库中的数据是否正确都不行。只有将镜像数据库切换主数据库才可见)。如果你要使用数据库镜像,强烈推荐killkill写的SQL
Server 2005 镜像构建手册,我们就是按照这篇文章完成了数据库镜像部署测试。
最终,我们选择了SQL Server 2008数据库复制。
下面通过一个示例和大家一起学习一下如何部署SQL Server 2008数据库复制。
测试环境:Windows Server 2008 R2 + SQL Server 2008 R2(英文版),两台服务器,一台主数据库服务器CNBlogsDB1,一台备份数据库服务器CNBlogsDB2。
复制原理:我们采用的是基于快照的事务复制。主数据库服务器生成快照,备份库服务器读取并加载该快照,然后不停地从主数据库服务器复制事务日志。见下图:
图片来自SQL Server联机丛书
安装与配置步骤:
一、在两台服务器上安装好SQL Server 2008 R2,主要安装的组件:Database Engine(含SQL Server Replication),Management Tools。
二、主数据库服务器(发布服务器)的配置:
1. 在主数据库服务器CNBlogsDB1新建示例数据库CNBlogsDemo(注意Recovery mode要使用默认值Full,只有这个模式才能进行事务复制),然后建立一张测试表,比如:CNBlogsTest。
2. 设置存放快照的文件夹:
创建发布之前,先设置一下存放快照的文件夹,创建发布后会在该文件夹生成快照文件,订阅服务器需要在初始化时加载该快照文件。
选择Replication》Local Publications》属性,在出现的窗口中选择Publishers,如下图:
点击红框处的按钮,出现设置窗口:
在Default Snapshot Folder中设置快照文件存放路径。
3. 在主数据库服务器创建发布:
在Replication》Local Publications中选择New Publication,出现一个向导。先选择要发布的数据库CNBlogsDemo,然后选择发布类型Transational publication,如下图:
点击Next,出现错误:
原来所有要复制的表都需要有主键,刚才建CNBlogsTest表时,没有建主键。建一下主键,并重新启动向导就可以了。
接着选择要复制的对象:
点Next,Next,进入Snapshot Agent窗口,选择Create a snapshot immediately and keep the snapshot available to initialize subscriptions,见下图:
Next,进入Agent Security:
选择Security Settings,进行相应的帐户设置:
一个是设置运行Snapshot Agent的Windows帐户,我们这里选择与SQL Server Agent同样的帐户。
一个是设置连接发布服务器的SQL帐户,我们这里就用主数据库服务器的sa帐户。
继续:OK,Next,Next,为这个发布起个名字:
点击Finish,就开始正式创建发布,创建成功就会出现如下窗口:
这时查看快照文件夹,就会看到unc文件夹,快照文件就在这个文件夹中。
这里要考虑这样一个问题,如何让订阅服务器通过网络访问这个快照文件夹。
我们在这个问题上折腾了一些时间,本来想通过共享文件夹的方式,但又不想打开匿名共享,折腾了半天,没搞定订阅服务器访问共享文件夹用户验证的问题。于是采用了FTP的方式,所以,下面介绍一下如何让订阅服务器通过FTP访问快照文件。
4. 设置快照的FTP访问
首先在主数据库服务器上开通FTP服务,建立一个指向快照文件夹的FTP站点,设置好可以远程连接的FTP帐户。然后在这台发布服务器设置一下FTP客户端配置。配置方法如下:
在Replication》Local Publications中选择刚才创建的发布[CNBlogsDemo]:CNBlogsDemo_Publication,选择属性》FTP Snapshot,如下图:
选中Allow Subscribers to download snapshot files using FTP,并设置一下FTP客户端连接参数,订阅服务器就是通过这里的设置连接FTP服务器的(注:Path from the FTP root folder的设置要和上图一样,设置为:/ftp)。
点击OK,这时会在快照文件夹中创建一个ftp文件夹,并在该文件夹中生成快照文件。
这样,发布服务器就配置好了,下面配置订阅服务器。
三、备份数据库服务器(订阅服务器)的配置:
进入订阅服务器CNBlogsDB2,创建与发布服务器同名的数据库CNBlogsDemo,使用完全恢复模式。
在Replication》Local Subscriptions中选择New Subscriptions,进入向导。
Next,进入选择发布服务器的窗口,选择Find SQL Server Publisher,出现服务器连接窗口:
这里要注意的是Server Name中一定要填写发布服务器的计算机名,如果计算机名连接不上,要在hosts文件中加一个IP地址解析。
成功连接发布服务器之后,就可以看到刚才在主数据库服务器上创建的发布:
Next,进入“分发代理工作位置”的选择窗口:
我们这里选择pull subscriptions,把数据给拉过来,这样主数据库服务器的负担会轻些。
Next,选择订阅服务器上的数据库,之前我们已经建好同名的数据库,所以系统自己会找到。
Next,进入分发代理安全设置窗口:
点击红框内的按钮,进入设置窗口:
设置如上图,Connect to the Distributor处设置的是发布服务器的sa帐户。
OK, Next, Next, Next:
Next, Finish, Success:
备份数据库的订阅就建好了!
现在来瞧一瞧订阅服务器CNBlogsDB2上的用于复制的数据库CNBlogsDemo:
看!我们在发布服务器上建立的表CNBlogsTest复制过来了。
现在我们去发布服务器CNBlogsDB1上添加一条记录:
再去订阅服务器CNBlogsDB2瞧一瞧:
数据立即同步过来了!搞定!
遇到的问题:
在测试过程中被两个问题折腾了很长时间。
1)发布服务器的Log Reader Agent不能启动,错误信息:
· The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)
Get help: http://help/MSSQL_REPL20011
· Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission. (Source: MSSQLServer, Error number: 15517)
Get help: http://help/15517
· The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL22037)
Get help: http://help/MSSQL_REPL22037
开始测试时,附加了一个现有数据库进行复制遇到了这个问题,附加的是一下SQL Server 2005数据库文件,Owner为空,改为sa问题就解决了,如下图:
2)第二个问题就是前面已经描述过的订阅服务器访问发布服务器上的快照文件夹的问题,后来通过FTP的方式解决的。
对于SQL Server 2008数据库复制,目前我就学习了这些,期待园子里有这方面经验的朋友也来分享一下,在分享过程中你也会学到很多。
相关推荐
通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库同步可以把两数据库的数据自动同时更新,这可以方便地进行数据备份,可以达到主子数据库自动更新效果。
SQLServer2008R2主从数据库同步
SQL Server 2008 R2 数据高可用性技术之一:主从数据库同步配置实例
利用SQL Server复制功能实现数据库同步备份.pdf
sqlserver、mysql数据库同步备份工具及其帮助手册详解
本工具是自己开发的,用于SQL Server 数据库的备份与还原用,有了本工具,设定好每一个数据库的备份时间,可以按年、月、日、时、分设置好后,到时间自动备份,工具还有备份数据为多少天前的可以自动删除,同时也有...
2、 检查SQL Server 2005数据库 二、主备实例互通 1、创建证书(主备可并行执行) 2、创建连接的端点(主备可并行执行) 3、备份证书以备建立互联(主备可并行执行) 4、互换证书 5、添加登陆名、用户(主备可并行...
SQL Server数据库 数据备份和恢复 SQL Server数据库 自动化人物 SQL Server数据库 数据同步 SQL Server数据库 数据字典 SQL Server数据库 安全和预防 SQL Server数据库 性能和优化 SQL Server数据库 集群 SQL Server...
SQL Server数据库 数据备份和恢复 SQL Server数据库 自动化人物 SQL Server数据库 数据同步 SQL Server数据库 数据字典 SQL Server数据库 安全和预防 SQL Server数据库 性能和优化 SQL Server数据库 集群 SQL Server...
SQL Server 2000 数据库同步配置的原理 从0开始一步一步配置SQL Server 2000 数据库同步,非常细 已经非常熟练,可以看精品版SQL Server 2000 数据库同步配置 配置SQL Server 2000 数据库同步时的 常见问题 为什么...
开发软件时候 经常要改动数据库结构,如何快速地对比和修改数据库呢,并且能快速对比样本数据,并同步数据库的结构,约束,主键,字节,小数点 ,以及... 同步前请作好目的数据库的备份,样本数据库可以是远程数据库。
SQL SERVER 2005 同步复制技术 教你如何进行数据库实时备份。。同步等
Oracle同步数据到Sql Server,只是初始加载过程,由于本人也是在学习阶段,本资料主要是用于备份,慎入!
MSSQL_SERVER数据库增量同步软件(数据库结构及数据): 可以增量同步的.这个程序当初我写完基本上是可以实现. 数据库增量同步必须具备以下条件 一.每张表必须有主键 二.每张表必须有一个最后更新日期栏位(时间类型). ...
一个自已用的数据库备份工具, 可以定时备份,时间备份, 立即备份, 可以按主键备份, 按时间段备份. 可以设置记录过滤条件及是否删除已备份过的记录.如有建议,请联系:gai213@163.com
很好用的SQL SERVER多数据库自动备份工具,外加注册机。
比较和同步SQL Server数据库结构 SQL Data Compare Pro 比较和同步SQL Server数据库内容 SQL Source Control 将现有源程序控制系统连接到SQL Server SQL Prompt Pro 轻松写入,编辑和探索SQL SQL Connect ...