通过SQL Server 2008数据库复制实现数据库同步备份

  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 2008数据库复制实现数据库同步备份_第1张图片

图片来自SQL Server联机丛书

  安装与配置步骤:

  一、在两台服务器上安装好SQL Server 2008 R2,主要安装的组件:Database Engine(含SQL Server Replication),Management Tools。

  二、主数据库服务器(发布服务器)的配置:

  1. 在主数据库服务器CNBlogsDB1新建示例数据库CNBlogsDemo(注意Recovery mode要使用默认值Full,只有这个模式才能进行事务复制),然后建立一张测试表,比如:CNBlogsTest。

通过SQL Server 2008数据库复制实现数据库同步备份_第2张图片

  2. 设置存放快照的文件夹:

  创建发布之前,先设置一下存放快照的文件夹,创建发布后会在该文件夹生成快照文件,订阅服务器需要在初始化时加载该快照文件。

  选择Replication》Local Publications》属性,在出现的窗口中选择Publishers,如下图:

通过SQL Server 2008数据库复制实现数据库同步备份_第3张图片

  点击红框处的按钮,出现设置窗口:

通过SQL Server 2008数据库复制实现数据库同步备份_第4张图片

  在Default Snapshot Folder中设置快照文件存放路径。

  3. 在主数据库服务器创建发布:

  在Replication》Local Publications中选择New Publication,出现一个向导。先选择要发布的数据库CNBlogsDemo,然后选择发布类型Transational publication,如下图:

通过SQL Server 2008数据库复制实现数据库同步备份_第5张图片

  点击Next,出现错误:

通过SQL Server 2008数据库复制实现数据库同步备份_第6张图片

  原来所有要复制的表都需要有主键,刚才建CNBlogsTest表时,没有建主键。建一下主键,并重新启动向导就可以了。

  接着选择要复制的对象:

通过SQL Server 2008数据库复制实现数据库同步备份_第7张图片

  点Next,Next,进入Snapshot Agent窗口,选择Create a snapshot immediately and keep the snapshot available to initialize subscriptions,见下图:

通过SQL Server 2008数据库复制实现数据库同步备份_第8张图片

  Next,进入Agent Security:

通过SQL Server 2008数据库复制实现数据库同步备份_第9张图片

  选择Security Settings,进行相应的帐户设置:

通过SQL Server 2008数据库复制实现数据库同步备份_第10张图片

  一个是设置运行Snapshot Agent的Windows帐户,我们这里选择与SQL Server Agent同样的帐户。

  一个是设置连接发布服务器的SQL帐户,我们这里就用主数据库服务器的sa帐户。

  继续:OK,Next,Next,为这个发布起个名字: 通过SQL Server 2008数据库复制实现数据库同步备份_第11张图片

  点击Finish,就开始正式创建发布,创建成功就会出现如下窗口:

20100826-10

  这时查看快照文件夹,就会看到unc文件夹,快照文件就在这个文件夹中。

  这里要考虑这样一个问题,如何让订阅服务器通过网络访问这个快照文件夹。

  我们在这个问题上折腾了一些时间,本来想通过共享文件夹的方式,但又不想打开匿名共享,折腾了半天,没搞定订阅服务器访问共享文件夹用户验证的问题。于是采用了FTP的方式,所以,下面介绍一下如何让订阅服务器通过FTP访问快照文件。

 

你可能感兴趣的:(SQL,Server,2008)