关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »SQL Server 2008数据库复制实现数据库同步备份(1)

    SQL Server 2008数据库复制实现数据库同步备份(1)

    2010-08-27 09:59:00 出处:ITJS
    分享

    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。

    复制原理:我们采用的是基于快照的事务复制。主数据库服务器生成快照,备份库服务器读取并加载该快照,然后不停地从主数据库服务器复制事务日志。见下图:

    grid.ai

    图片来自SQL Server联机丛书

    安装与配置步骤:

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

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

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

    cnblogs_test

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

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

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

    20100826-8

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

    20100826-9

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

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

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

    Transationalpublication

    点击Next,出现错误:

    20100826-1

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

    接着选择要复制的对象:

    20100826-2

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

    20100826-3

    Next,进入Agent Security:

    20100826-4

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

    20100826-5

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

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

    继续:OK,Next,Next,为这个发布起个名字:

    20100826-7

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

    20100826-10

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

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

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

    4. 设置快照的FTP访问

    首先在主数据库服务器上开通FTP服务,建立一个指向快照文件夹的FTP站点,设置好可以远程连接的FTP帐户。然后在这台发布服务器设置一下FTP客户端配置。配置方法如下:

    在Replication》Local Publications中选择刚才创建的发布[CNBlogsDemo]:CNBlogsDemo_Publication,选择属性》FTP Snapshot,如下图:

    20100826-11

    选中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,出现服务器连接窗口:

    20100826-12

    这里要注意的是Server Name中一定要填写发布服务器的计算机名,假如计算机名连接不上,要在hosts文件中加一个IP地址解析。

    成功连接发布服务器之后,就可以看到刚才在主数据库服务器上创建的发布:

    20100826-13

    Next,进入“分发代理工作位置”的选择窗口:

    20100826-14

    我们这里选择pull subscriptions,把数据给拉过来,这样主数据库服务器的负担会轻些。

    Next,选择订阅服务器上的数据库,之前我们已经建好同名的数据库,所以系统自己会找到。

    Next,进入分发代理安全设置窗口:

    20100826-15

    点击红框内的按钮,进入设置窗口:

    20100826-16

    设置如上图,Connect to the Distributor处设置的是发布服务器的sa帐户。

    OK, Next, Next, Next:

    20100826-17

    Next, Finish, Success:

    20100826-18

    备份数据库的订阅就建好了!

    现在来瞧一瞧订阅服务器CNBlogsDB2上的用于复制的数据库CNBlogsDemo:

    20100826-19

    看!我们在发布服务器上建立的表CNBlogsTest复制过来了。

    现在我们去发布服务器CNBlogsDB1上添加一条记录:

    20100826-20

    再去订阅服务器CNBlogsDB2瞧一瞧:

    20100826-21

    数据立即同步过来了!搞定!

    20791975316932   

    遇到的问题:

    在测试过程中被两个问题折腾了很长时间。

    1)发布服务器的Log Reader Agent不能启动,错误信息:

    · The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)

    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。

    复制原理:我们采用的是基于快照的事务复制。主数据库服务器生成快照,备份库服务器读取并加载该快照,然后不停地从主数据库服务器复制事务日志。见下图:

    grid.ai

    图片来自SQL Server联机丛书

    安装与配置步骤:

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

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

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

    cnblogs_test

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

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

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

    20100826-8

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

    20100826-9

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

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

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

    Transationalpublication

    点击Next,出现错误:

    20100826-1

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

    接着选择要复制的对象:

    20100826-2

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

    20100826-3

    Next,进入Agent Security:

    20100826-4

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

    20100826-5

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

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

    继续:OK,Next,Next,为这个发布起个名字:

    20100826-7

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

    20100826-10

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

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

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

    4. 设置快照的FTP访问

    首先在主数据库服务器上开通FTP服务,建立一个指向快照文件夹的FTP站点,设置好可以远程连接的FTP帐户。然后在这台发布服务器设置一下FTP客户端配置。配置方法如下:

    在Replication》Local Publications中选择刚才创建的发布[CNBlogsDemo]:CNBlogsDemo_Publication,选择属性》FTP Snapshot,如下图:

    20100826-11

    选中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,出现服务器连接窗口:

    20100826-12

    这里要注意的是Server Name中一定要填写发布服务器的计算机名,假如计算机名连接不上,要在hosts文件中加一个IP地址解析。

    成功连接发布服务器之后,就可以看到刚才在主数据库服务器上创建的发布:

    20100826-13

    Next,进入“分发代理工作位置”的选择窗口:

    20100826-14

    我们这里选择pull subscriptions,把数据给拉过来,这样主数据库服务器的负担会轻些。

    Next,选择订阅服务器上的数据库,之前我们已经建好同名的数据库,所以系统自己会找到。

    Next,进入分发代理安全设置窗口:

    20100826-15

    点击红框内的按钮,进入设置窗口:

    20100826-16

    设置如上图,Connect to the Distributor处设置的是发布服务器的sa帐户。

    OK, Next, Next, Next:

    20100826-17

    Next, Finish, Success:

    20100826-18

    备份数据库的订阅就建好了!

    现在来瞧一瞧订阅服务器CNBlogsDB2上的用于复制的数据库CNBlogsDemo:

    20100826-19

    看!我们在发布服务器上建立的表CNBlogsTest复制过来了。

    现在我们去发布服务器CNBlogsDB1上添加一条记录:

    20100826-20

    再去订阅服务器CNBlogsDB2瞧一瞧:

    20100826-21

    数据立即同步过来了!搞定!

    20791975316932   

    遇到的问题:

    在测试过程中被两个问题折腾了很长时间。

    1)发布服务器的Log Reader Agent不能启动,错误信息:

    · The process could not execute 'sp_replcmds' on 'YCSERVER006'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。