16第16章数据复制.ppt
1,浙江财经学院,第16章 数据复制,复制技术是构建分布式数据库的基本技术之一,其实质就是将对本地数据库的修改体现在其它具有相同结构的远程数据库中。利用复制技术,我们可以在跨局域网、广域网或因特网的不同数据库服务器上维护数据的多个拷贝,自动地保证多个拷贝之间的一致性。由于复制技术涉及许多新概念,包括:出版物和论文、出版者、分发者、订阅者等等,因此本章的难点就是这些概念的理解和掌握,以及为了实现复制而针对SQL Server服务器的各种设置步骤和方法。,2,浙江财经学院,第16章 数据复制,16.1 复制概述 16.2 配置复制 16.3 创建发布出版物16.4 订阅出版物 16.5 管理复制选项 16.6 复制监视器16.7 数据导入导出 16.8 复制实例,3,浙江财经学院,16.1 复制概述,返回,16.1.1 复制结构 16.1.2 复制类型 16.1.3 复制代理 16.1.4 可更新订阅,4,浙江财经学院,16.1.1 复制结构,1复制概念:出版和订阅出版:向其他数据库服务器(订阅者)复制数据。订阅:从其他数据库服务器(出版者)接收复制数据。(1)论文和出版物:论文是被复制的数据集合(表、列、行、存储过程)。出版物是论文的集合。(2)出版者:出版服务器。确定复制数据、检测变化分发者。(3)分发者:是一类服务器,维护分发数据库、复制数据订阅者。(4)订阅者:是一类服务器,接收并维护出版物(也可修改出版物)。(5)订阅类型:推订阅、拉订阅,返回,2复制拓扑结构:1)中心出版者、2)带有远程分发者的中心出版者、3)出版订阅者、4)中心订阅者。,中心出版者,带有远程分发者的中心出版者,出版订阅者,中心订阅者,5,浙江财经学院,16.1.2 复制类型,返回,三种:快照复制、事务复制、合并复制 1快照复制在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者服务器。2事务复制 所复制的内容不是数据,而是多条数据更新语句或存储过程。修改总是发生在出版者上,订阅者只以读取数据的方式将修改反映到订阅数据库,所以能够避免复制冲突。3合并复制 允许订阅者对出版物进行修改并将修改合并到目标数据库。各节点可独立工作,不必考虑事务的一致性。如果在合并修改时发生冲突,则复制按照一定的规则或自定义的冲突解决策略来对冲突进行分析并接受冲突一方的修改。,6,浙江财经学院,16.1.3 复制代理,1快照代理 在分发者上创建并存储快照文件,在分发数据库中记录出版数据库和订阅数据库之间的同步信息。在分发者上运行并与出版者相连接。每个出版物都有自己的快照代理。2日志阅读代理 将出版者事务日志中标有复制的事务移至分发数据库。使用事务复制的每一个出版数据库都有自己的日志阅读代理。日志阅读代理在分发者服务器上运行。3分发代理 将存储在分发数据库中的事务或快照分发到订阅者服务器。如果事务出版物或快照出版物被设置为只有创建了推订阅即立即在出版者和订阅者之间同步,则在分发者上各有一个分发代理;否则将共享一个分发代理。合并出版物没有分发代理。,7,浙江财经学院,16.1.3 复制代理,返回,4合并代理 用来移动、合并在快照代理创建初始快照之后所发生的增量修改。每一个合并出版物都有自己的合并代理。当使用推订阅合并出版物时,合并代理运行在出版者上;当使用拉订阅合并出版物时,合并代理运行在订阅者上。快照出版物和事务出版物没有合并代理。5队列阅读代理在快照复制或事务复制时,如果选择了“排队更新”选项,则需要使用队列阅读代理。队列阅读代理是运行在分发者上的多线程代理,它主要负责从分发者的消息队列中读取消息,并将消息中的事务应用到出版者。,8,浙江财经学院,16.1.4 可更新订阅,返回,可更新订阅:可在订阅者处对复制数据进行修改,然后将修改以相应的方式反映到出版者。有三种类型:1即时更新 立即将订阅者的修改反映到出版者,允许这一修改不必马上同步到其它订阅者。在创建出版物时设置。2排队更新 将订阅者的修改保存在一个队列中的,当订阅者与出版者之间的网络连接恢复时,队列中的这些事务将按先后顺序被应用到出版者。在创建出版物时可对该选项进行设置。3即时更新并用排队更新作备份 订阅者的修改一方面立即反映到出版者(如果网络连接正常),另一方面会备份到队列中,以便当网络连接恢复时,将队列中的这些事务按先后顺序应用到出版者。,9,浙江财经学院,16.2 配置复制,返回,16.2.1 创建服务器角色和分发数据库 16.2.2 配置复制选项 16.2.3 删除复制配置信息,10,浙江财经学院,16.2.1 创建服务器角色和分发数据库,返回,启动对象资源管理器,选中准备扮演出版者/分发者角色的服务器。在主菜单上选择“复制配置分发”,弹出“配置分发向导”对话框(从中可知该向导能够实现哪些复制配置),单击【下一步】,弹出“选择分发服务器”对话框。在该对话框中,可以使用默认选项“使“”成为自己的分发服务器”来指定当前服务器同时扮演分发者和出版者角色。单击【下一步】弹出“启动SQL Server代理”对话框。选择“是”。单击【下一步】,弹出“快照文件夹”对话框。选定生成快照的文件夹后,单击【下一步】,弹出“分发数据库”对话框。单击【下一步】,弹出“发布服务器”对话框,再单击【下一步】,弹出“脚本文件属性对话框”。在此使用默认选项。单击【下一步】,弹出“完成该向导”对话框,单击【完成】。此时会弹出一个报告窗口来显示创建进度,通过该窗口能了解SQL Server完成了哪些工作。,11,浙江财经学院,16.2.2 配置复制选项,1配置分发选项。使用企业管理器配置分发选项的步骤为:启动企业管理器,选中要进行分发选项配置的分发者服务器。主菜单工具复制配置发布、订阅服务器和分发发布服务器和分发服务器的属性分发服务器。属性设置分发数据库属性:名称、有关出版者、事务保持时间、历史记录保持时间。代理程序配置代理程序配置设置复制代理的运行参数。2配置出版选项。指定分发者为哪个出版者所使用。启动企业管理器,选中分发者服务器。主菜单工具复制配置发布、订阅服务器和分发发布服务器和分发服务器的属性发布服务器。在“服务器”表格内选择要使用当前分发数据库的出版者。单击分发数据库右侧按钮设置出版者属性(所用分发数据库,快照文件位置,与分发者的连接方式等)。,1配置出版数据库 启动对象资源管理器,选中要进行发布的服务器。在主菜单上选择“复制”,点击右键,弹出快捷菜单,选择“分发服务器属性”对话框。单击【常规】标签,该对话框提供了以下信息:分发数据库的事务保持期等。单击【发布服务器】标签,有可供选择的发布服务器,密码设置等。2配置订阅选项 启动对象资源管理器,选中要进行发布的服务器。在主菜单上选择“复制”,点击右键,弹出快捷菜单,选择“发布服务器属性”对话框。单击【常规】标签,该对话框提供了以下信息:有分发服务器的名称和分发数据库名称。单击【发布数据库】标签,有可供选择的数据库。,12,浙江财经学院,16.2.3 删除复制配置信息,返回,启动对象资源管理器,选中分发者服务器。在主菜单上选择“复制”,单击右键出现快捷菜单,选择“禁用分发和发布”,弹出“向导”对话框(从中可知该向导能够实现哪些功能),单击【下一步】,弹出“禁用发布”对话框。在该对话框内如果选择“是,禁用次服务器上发布”选项,则会禁用分发者以及出版者,并且删除分发数据库和出版者上的出版物(在有些情况下仍保留分发数据库),单击【下一步】,SQL Server 将按要求执行相关处理。如果选择“否,继续使用作为发布服务器”选项,则不会进行任何处理。单击【下一步】,SQL Server 将按要求执行相关处理,同时弹出一个询问对话框,此时单击“取消”可以取消操作,单击“完成”结束向导并执行相应处理。,13,浙江财经学院,16.3 创建发布出版物,启动对象资源管理器,选中出版者服务器。在主菜单上选择“复制本地发布”,单击右键,选择“新建发布”出现“新建发布向导”对话框,单击【下一步】按钮。单击【下一步】,弹出“选择发布数据库对话框”,从“数据库”框中可以选择将出版哪一数据库的表、视图或存储过程。选择指定的出版数据库后,单击【下一步】,打开“选择发布类型”对话框,从中选择所使用的复制类型。单击【下一步】按钮,在“项目”对话框中可以选择表、存储过程等。,14,浙江财经学院,16.3 创建发布出版物,两次单击【下一步】按钮后,出现“快照代理”对话框,选择“计划在以下时间运行快照代理”单击【更改】按钮,在弹出的对话框中设置代理程序执行频度。单击【下一步】按钮,设置代理安全。单击【安全设置】按钮,在“进程账户”中输入相应的账户,单击【确定】按钮。两次单击【下一步】按钮后,填入“发布名称”,单击【完成】按钮。,15,浙江财经学院,16.4 订阅出版物,选中出版者服务器,在主菜单上选择“复制本地订阅”,单击右键,选择“新建订阅”,出现“新建订阅”向导对话框,两次单击【下一步】。在“订阅服务器”对话框中的“订阅数据库”选项下选择数据库”,(如果没有,则需要新建数据库)单击【下一步】。指定分发代理安全性。单击按钮,在“进程账户”中输入相应账户,单击【确定】按钮。单击【下一步】,在“同步计划”对话框中选择“连续运行”选项,单击【下一步】。在“初始化订阅”对话框中选择“首先同步”。其余步骤全部选择默认设置,最后单击【完成】结束订阅创建。,16,浙江财经学院,16.5 管理复制选项,16.5.1 可更新的订阅选项 16.5.2 筛选复制数据 16.5.3 转换复制数据 16.5.4 可选同步伙伴,17,浙江财经学院,16.5.1 可更新的订阅选项,返回,包括:即时更新、排队更新、即时更新并用排队更新作备份。在SQL Server 2000 中,即时更新需要以下组件的支持:(1)触发器:位于订阅者上,用来捕捉在订阅者上发生的事务,并利用远程过程调用将事务提交给出版者。由于使用二阶段提交协议,从而保证事务在出版者被成功提交后才会在订阅者那里提交,如果提交失败则订阅者事务将回滚,从而使订阅者数据库与出版者数据库仍能保持同步。(2)存储过程:位于出版者上。只有出版者数据库发生的变化与订阅者提交的事务不发生冲突,才允许在出版者提交这些来自订阅者的事务,否则拒绝事务提交,两处的事务都将回滚。每篇论文的每种更新操作都有相应的存储过程。(3)分布式事务协调器(DTC):在触发器使用存储过程将订阅者事务提交给出版者时,需要DTC来管理出版者与订阅者之间的两阶段提交。,(4)冲突检测:出版数据库中的存储过程使用时间戳来进行检测,以确定某列被复制到订阅者之后是否又被修改。当订阅者提交即时更新事务时,它会把某行的所有列(包括时间戳列)送回到出版者,出版者利用存储过程将该行在出版者数据库中的时间戳值与从订阅者送回的时间戳值进行比较,如果相同(表明在复制给订阅者之后没有发生修改),则接收事务,用从订阅者送回的行值来修改该行的当前值。(5)环路检测:用来确定一事务是否已在某订阅者处被成功提交,从而避免该事务又一次应用于订阅者服务器。,在SQL Server 中,排队更新需要以下组件的支持:(1)触发器:当进行排队更新时,触发器依附在订阅者的出版表上,用来捕捉订阅者上执行的事务,并将这些事务作为消息传送到队列中。(2)存储过程:在创建出版物时,若指定了排队更新选项,则在出版数据库中对出版表执行插入、删除、更新的存储过程将自动生成。队列阅读代理将调用存储过程在出版者上执行队列中的事务,并进行冲突检测,如有必要则产生一些补充命令。(3)队列:用来存储订阅者传送的消息。订阅者与分发者都有一个消息队列。在网络断开时,订阅者传送的消息首先存储在订阅者消息队列,然后在网络接通时被传送到分发者消息队列。队列阅读代理读取这些消息,并将其中的事务应用到出版者。(4)队列阅读代理:是运行在分发者上的多线程代理,其主要任务是从消息队列中读取信息,并将消息中的事务应用到出版者。,18,浙江财经学院,16.5.2 筛选复制数据,返回,对出版表进行水平、垂直分割,包括列筛选、行筛选、动态筛选和联合筛选。行、列筛选可在快照复制、事务复制和合并复制中使用,但动态筛选和联合筛选只能在合并复制中使用。(1)行筛选:把某些特定的行发送给订阅者,清除那些用户不必或不应看到的数据行,从而能为不同的订阅者创建不同的出版物,同时由于不同订阅者订阅来自同一表的不同数据行,因此有助于避免因多个订阅者修改同一数据而导致的修改冲突。(2)列筛选:列筛选就是对表进行垂直分割。列筛选能够减少订阅者的存储空间需求,降低向订阅者传送数据修改所需的时间,但有些列必须包含在出版物中,它们是:1)有主键约束的列;2)没有默认值的非空列;3)包含在惟一索引中的列;4)合并复制、基于即时更新的快照复制或事务复制中的ROWGUID 列。,(3)动态筛选:指在合并复制的处理过程中,根据从订阅者得到的数据值对出版表进行的数据筛选。在合并复制中使用动态筛选的好处包括:1)出版者上几乎不必存储出版物,从而减少因管理多个出版物而带来的系统开销;2)在动态筛选中常使用用户自定义的函数,根据订阅者的属性进行的数据筛选,可以使订阅者仅获得必要的信息。(4)联合筛选:联合筛选允许在合并处理过程中定义两个出版表中的关系。它常与行筛选一同使用,并在合并处理中保持联合出版表之间的参照完整性。如果某一使用行筛选的出版表被其他出版表的外键所引用,则外键表的论文必须有一个联合筛选器来代表它对主键表的依赖关系。联合筛选并不限于主键/外键关系,也可基于两个不同出版表数据间的比较关系进行设置。,19,浙江财经学院,16.5.3 转换复制数据,返回,转换复制数据:用可转换订阅来实现。可转换订阅利用数据转换服务(DTS)所提供的功能(如数据移动、传递映射、筛选等),根据订阅要求来定制、发送复制数据。可在快照复制和事务复制中使用。在下列情况下应该使用转换复制数据选项:(1)根据订阅者的要求对出版数据进行垂直或水平分割(2)创建数据转换使用可转换订阅在出版者与订阅者之间进行基本的简单的数据转换和列操作,主要包括:改变数据类型(主键列除外)、重新命名某列、从某列提取子字符串或向某列添加额外字符、对某列使用函数。,用企业管理器创建可转换订阅的步骤是:(一)在创建出版物时要设置“转换已发布数据”选项。方法是:首先在创建出版物的第(6)步(请参阅16.3节)“可更新订阅”对话框中不选任何选项,然后单击【下一步】打开“转换已发布数据”对话框,从中选择“是,转换数据”,最后完成出版物的创建。(二)按以下步骤使用企业管理器创建可转换订阅:启动企业管理器,登录到指定的服务器,顺次打开“复制”、“发布内容”文件夹,从中选择设置了“转换已发布数据”选项的出版物。右击该出版物,在弹出菜单中选择“定义已发布数据的转换”选项,打开“欢迎”对话框(余下操作请参阅SQL Server 2000帮助中有关数据转换服务的内容)。(三)按照订阅出版物的步骤向订阅者推出出版物。,20,浙江财经学院,16.5.4 可选同步伙伴,返回,可选同步伙伴的功能使得基于合并复制的订阅者不仅可与创建订阅的出版者进行数据同步,而且也可以与其它订阅者进行数据同步,即使主出版者不能继续使用。使用可选同步伙伴时需要注意以下要求:(1)只有合并复制才可使用可选同步伙伴。(2)可选同步伙伴必须有订阅所需的数据和论文结构。(3)在可选同步伙伴上的出版物最好是在原始出版者上所创建的出版物的克隆。(4)须将出版物属性定义为订阅者可与其它出版者进行数据同步。(5)对于命名订阅,须保证该订阅者也是可选同步伙伴的订阅者,这样订阅者才能与其它出版者进行数据同步。(6)对于命名订阅,可选同步伙伴上自动添加与原始出版者上订阅具有相同属性的新订阅。,21,浙江财经学院,16.6 复制监视器,返回,复制是复杂组件,难免会出现复制错误。为查出错误发生的原因,SQL Server 提供了复制监视器,用来浏览出版者的出版物或分发者所支持的订阅,浏览复制代理的状态信息和历史,监视与复制事务有关的复制警报,监视快照代理、日志阅读代理、分发代理、合并代理的活动状况等。例如,要监视快照代理的活动状况,需执行以下步骤:启动企业管理器,登录指定的到服务器,依次打开“复制监视器”、“代理程序”文件夹。选中“快照代理”,此时在右边窗格中显示已创建的快照代理。右击准备查看的代理,在弹出菜单中选择“代理程序历史记录”选项,打开“快照代理程序历史记录”对话框。单击“会话详情”按钮,打开“快照代理程序的最新历史记录”对话框,从中可以了解到目前为止快照代理都执行了哪些处理、运行的起始时间等信息。,22,浙江财经学院,16.7 数据导入导出,16.7.1 SQL Server数据表数据导出16.7.2 SQL Server数据表数据导入,23,浙江财经学院,16.7.1 SQL Server数据表数据导出,启动对象资源管理器,登录指定的到服务器。展开数据库节点,右键需要导入导出的数据库,分别点击“任务”、“导出数据”,出现导入导出向导。单击【下一步】,显示“选择数据源”界面,如图16-5所示。在数据源右边的下拉框中选择“Microsoft OLE DB Provider for SQL Server”,表明将从SQL Server数据库中导出数据。在“服务器名称”下拉框中输入数据库所在的服务器名,选择适当的身份验证方式,需要时输入用户名和密码。在“数据库”下拉框中选择需要导出的数据库名。单击【下一步】,显示如图16-6所示的“选择目标”对话框。在“目标”下拉框中选择“Microsoft Excel”,并在“文件路径”输入框中输入目标路径和文件名。,24,浙江财经学院,25,浙江财经学院,26,浙江财经学院,16.7.1 SQL Server数据表数据导出,单击【下一步】,选择默认。单击【下一步】,选择源表或源视图。可以全选,也可以选择部分,比如我们选择“学生表”。单击选中表后的【编辑】按钮,可以对表或视图作进一步转换设置。两次单击【下一步】,再单击【完成】按钮,即可进行转换。至此,“教学管理”数据库中的“学生表”数据导出完成,打开导出的Excel文件,就可以看到导出的数据。如果将SQL Server数据转换为其他不同数据源数据,操作方法和步骤是相似的。,27,浙江财经学院,16.7.2 SQL Server数据表数据导入,把其他类型的数据导入SQL Server数据库,同样适用导入导出向导。操作步骤和方法跟从SQL Server导出数据一样,只是在选择源数据可以是其他类型数据,选择目标数据时只能是SQL Server数据源。在导入SQL Server数据库时要注意两点:首先要注意选择哪个数据库作为目标数据库。其次,在新建数据库中,每个表字段可能需要调整,可以利用通过在“选择源表或视图”对话框中单击每个表的“转换”按钮来操作。,28,浙江财经学院,16.8 复制实例,设服务器实例ZUFE-MXHmeng有数据库“教学管理”和“教学管理复制”,其结构相同,其中“教学管理”含有第1章给出的5张表,现要将“教学管理”作为出版者,“教学管理复制”作为订阅者,实现快照复制。为此需要进行以下步骤:1配置出版者并创建分发数据库 选中出版者服务器ZUFE-MXH,在主菜单上选择“复制”,点击右键,选择“配置分发”,在“向导”对话框中单击“下一步”。在“选择分发服务器”对话框中选中,使“ZUFE-MXH”成为自己的分发服务器,从而在ZUFE-MXH上创建一个分发数据库和日志,单击“下一步”。在“配置SQL Server代理”对话框中选择“是”,从而自动启动SQL Server代理,单击“下一步”。,29,浙江财经学院,在“指定快照文件夹”对话框中选择生成快照的文件夹,单击“下一步”。指定分发的数据库名称已经数据库和日志文件的路径。分发数据库名称可写为“分发教学管理”,单击“下一步”,出现“发布服务器”对话框,再单击“下一步”。在“向导完成”对话框中选择默认选项,单击“下一步”。在进行下一步以前,查看SQL Server代理服务器是否启动,如果没有启动,需要启动。在“完成配置发布和分发向导”对话框中单击“完成”。完成后,服务器实例ZUFE-MXH下会增加一个“复制监视器”文件夹,在数据库文件夹中会增加一个分发数据库“分发教学管理”。,30,浙江财经学院,16.8 复制实例,2配置分发和出版选项 由于服务器实例ZUFE-MXH是自己的分发者,所以分发选项和出版选项的配置都是针对它的。本例分发和出版选项全部采用默认配置。3配置出版数据库 本例的出版数据库是ZUFE-MXH上的“教学管理”,故需要在对象资源管理器中选中出版者服务器ZUFE-MXH,在主菜单上选择“复制配置分发”,在“发布服务器属性”对话框中打开“发布数据库”标签,选择“教学管理”为事务复制。4创建出版物 本例的出版物是“教学管理”数据库中的“学生表”,故需要在对象资源管理器中执行如下步骤:,31,浙江财经学院,4创建出版物,选中出版者服务器ZUFE-MXH,在主菜单上选择“复制本地发布”,单击右键,选择“新建发布”出现“新建发布向导”对话框,单击【下一步】按钮。在“选择发布数据库”对话框中选择“教学管理”,单击【下一步】。在“选择发布类型”对话框中选择快照复制。单击【下一步】按钮,在“项目”对话框中选中“学生表”,其余均采用默认设置。,32,浙江财经学院,4创建出版物,两次单击【下一步】按钮后,出现“快照代理”对话框,选择“计划在以下时间运行快照代理”单击【更改】按钮,在弹出的对话框中做如图16-7所示的设置,目的在于将代理程序执行频度设置为每分钟一次。单击【下一步】按钮,设置代理安全。单击【安全设置】按钮,出现如图16-8所示,在“进程账户”中输入“ZUFE-MXHmeng”,单击【确定】按钮。两次单击【下一步】按钮后,在“发布名称”后输入“发布教学管理_学生表”,单击【完成】按钮。在完成后,在对象资源管理器的本地发布处会出现“发布教学管理_学生表”。,33,浙江财经学院,图16-7 设置代理程序执行频度,34,浙江财经学院,图16-8 快照代理安全性设置,35,浙江财经学院,16.8 复制实例,5订阅出版物 在创建完出版物之后,必须订阅出版物才能实现数据的复制。在订阅出版物之前应在订阅者上创建订阅数据库。本例的订阅数据库是ZUFE-MXH上的“教学管理复制”数据库。为了实现从ZUFE-MXH上的“教学管理”数据库到ZUFE-MXH上的“教学管理复制”数据库的推订阅,需要在对象资源管理器中执行以下步骤:,36,浙江财经学院,5订阅出版物,选中出版者服务器ZUFE-MXH,在主菜单上选择“复制本地订阅”,单击右键,选择“新建订阅”,出现“新建订阅”向导对话框,两次单击【下一步】。在“订阅服务器”对话框中的“订阅数据库”选项下选择“教学管理复制”,(如果没有,则需要新建数据库)单击【下一步】指定分发代理安全性。单击按钮出现如图16-8所示,在“进程账户”中输入“ZUFE-MXHmeng”,单击【确定】按钮。单击【下一步】,在“同步计划”对话框中选择“连续运行”选项,单击【下一步】。在“初始化订阅”对话框中选择“首先同步”。其余步骤全部选择默认设置,最后单击【完成】结束订阅创建。,37,浙江财经学院,Thank you very much!,谢谢您的光临!,