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

原文 通过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联机丛书

安装与配置步骤:

一、在两台服务器上安装好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 数据库同步的两种方式 (发布、订阅)

时间: 2024-08-04 01:04:40

通过SQL Server 2008数据库复制实现数据库同步备份的相关文章

SQL Server 2008 master与msdb数据库的备份与恢复

  sql server 2005 & 2008 master与msdb数据库的备份与恢复,master与msdb数据库的备份与普通数据库一样,本文主要描述master与msdb数据库的恢复的一些个人积累. 恢复master与msdb数据库关键在于以单用户模式启动,其它并没有太大的区别. 由于系统数据库对Sql Server来说尤其重要,为了确保SQL SERVER系统的正常运行,除了日常备份用户的数据库之外,我们还需要备份系统数据库,如对Master,Model,Msdb(TempDB不需备份

SQL Server 2008升级报表服务器数据库

报表服务器数据库可以为一个或多个报表服务器实例提供内部存储.因为报表服务器数据库架构可能会因为推出新的 Reporting Services 版本而有所变化,所以要求数据库版本与使用的报表服务器实例的版本相匹配.大多数情况下,报表服务器数据库可以自动升级,您不需要执行任何具体操作. 如何升级报表服务器数据库 以下列表指出了升级报表服务器数据库的所有情况: 安装程序升级报表服务器的单个实例.在服务启动并且报表服务器确定数据库架构版本与服务器版本不匹配之后,将自动升级数据库架构. 服务启动时,报表服

Sql Server 2008 R2连接远程数据库

1.进入sql serverconfiguration manager,启动sqlserver(SQLEXPRESS)和SQL Server Browser,如果SQL Server Browser无法启动,参看链接 http://blog.csdn.net/xtm_rongbing/article/details/13614169 为了防止防火墙禁止1433端口和Server Browser.exe程序,需要将以上两个加入到防火墙允许程序中,win8中操作如链接所示,http://blog.c

SQL Server 2008 R2如何附加数据库

环境:SQLServer 2008 R2 问题:SQLServer 2008 R2附加数据库 解决: 数据库------ >附加------>选择数据库MDF数据文件存放位置(LDF日志文件会自动添加进去)------>确定----- ->就可以使用该数据库了. 如图:

《数据库基础及实践技术——SQL Server 2008》一导读

前 言 数据库技术起源于20世纪60年代末,经过几十年的迅速发展,目前已经建立起一套较完整的理论体系,产生了一大批商用软件产品.随着数据库技术应用领域的不断扩大,对数据库的应用已深入到国民经济和社会生活的各个方面.因此,作为当代的大学生,学习和掌握数据库知识都是非常必要的. 为了提高计算机专业本科生对数据库知识的实践能力,很多高校的计算机专业对数据库的授课做了一些调整,相当一部分学校将数据库的教学安排在两个学期完成,或者分为两个阶段来完成.第一个阶段基本是以讲授数据库基本原理为主,第二个阶段以讲

SQL SERVER 2008 R2 按照自定数据库对象类型生成脚本

好像Sql server 2008 的这个选择数据库对象类型,在点击"下一步"才提示出来.   SQL SERVER 2008 R2 生成数据... 支持不同的数据库对象类型.比如只导出视图.存储过程.函数.       Microsoft SQL Server 2008 R2  下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=26729     SQL2008升级到SQL2008R2图形界面升级 http://

server-SQL Server 2008在多个数据库中创建同一个存储过程

问题描述 SQL Server 2008在多个数据库中创建同一个存储过程 十几个数据库,只有一个存储过程,我不想一个一个数据库去创建,有什么办法执行一遍之后十几个数据库都创建好这个存储过程 解决方案 你不如自己写个程序,里面可以设置数据库连接数组,挨个的通过代码自动创建存储过程 解决方案二: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx 解决方案

《BI那点儿事》SQL Server 2008体系架构

原文:<BI那点儿事>SQL Server 2008体系架构 Microsoft SQL Server是一个提供了联机事务处理.数据仓库.电子商务应用的数据库和数据分析的平台.体系架构是描述系统组成要素和要素之间关系的方式.Microsoft SQL Server系统的体系结构是对Microsoft SQL Server的主要组成部分和这些组成部分之间关系的描述.Microsoft SQL Server 2008系统由4个主要部分组成,这4个部分被称为4个服务,这些服务分别是数据库引擎.分析服

SQL Server 2008 打SP1 补丁遇到的问题

今天在我机器上给SQL Server 2008 打上SP1补丁时,错误不断,郁闷死了.我的机器是XP Server Pack 3, SQL Server 2008 版本: SQL Server 2008 版本 Microsoft SQL Server 2008 - 10.0.2531.0 (Intel X86) Mar 29 2009 10:27:29 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Evaluation Edit

SQL Server 2008 RC0安装过程一:安装中心

首先就是装载SQL Server 2008 RC0的介质,如果是MSDN或者Technet的订阅用户可以直接在订阅站点里面下载,如果没有订阅帐户可以到微软的下载站点去下载,地址是http://www.microsoft.com/downloads/details.aspx?FamilyID=35f53843-03f7-4ed5-8142-24a4c024ca05&DisplayLang=en,而SQL Server 2008 RC0的范例数据库和范例程序可以从CodePlex下载,地址是http