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联机丛书的图像
安装和配置步骤:
First, install SQL Server 2008 R2 on two servers, and the main installed components: database engine (including SQL Server replication) and management tools.
二、主数据库服务器(发布者)配置:
1.在主数据库服务器CNBlogsDB1中创建一个新的示例数据库CNBlogsDemo(注意恢复模式应该使用缺省值Full,只有该模式可以用于事务复制),然后建立一个测试表。
比如:CNBlogsTest。
2.设置存储快照的文件夹:
创建发布之前,请设置用于存储快照的文件夹。创建发布后,将在该文件夹中生成快照文件,订阅服务器需要在初始化时加载快照文件。
选择“复制”“本地发布”属性,并在出现的窗口中选择“发布者”,如下图所示:
单击红色框中的按钮打开设置窗口:
在默认快照文件夹中设置快照文件存储路径。
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)。
[page_break]
点击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: