热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

SQLServer2005数据库复制详细介绍-SQL

SQLServer2005数据库复制详细介绍是千自学中一篇关于SQL的文章简介:对于一个地域分散的大型企业组织来说,构建具有典型的分布式计算机特征的大型企业管理信息系统时,总要解决一个很重要的问题:如何在多个不同数据库服务器之间保证共享数据的一致性。之所以有这个重要的问题在于企业

对于一个地域分散的大型企业组织来说,构建具有典型的分布式计算机特征的大型企业管理信息系统时,总要解决一个很重要的问题:如何在多个不同数据库服务器之间保证共享数据的一致性。之所以有这个重要的问题在于企业组织在不同地点对具有相同结构的本地数据库进行修改,但要保证修改后的数据库有相同的结果,其本质就是在对本地数据库的修改体现在其他具有相同数据的远程数据库中。那么如何解决这个问题就要用到数据库的复制技术。

SQL SERVER提供了内置的复制能力,复制组件并不是附加产品,而是核心引擎的一部分。在复制这个技术的支持下,用户可以跨局域网、广域网或因特网的不同数据服务器上维护数据的多个拷贝,从而保证数据的一致性。

复制模型;
SQL SERVER使用出版和订阅这一术语来描述其复制活动,所谓出版,就是向其他数据库服务器(订阅者)复制数据,订阅就是从另外服务器(出版者)接收复制数据。虽然出版和订阅的对象都是将数据复制,但出版和订阅却并不是不同角度的同一数据操作,而是体现出一定的层次性和顺序性(总是先进行出版,再进行订阅)。SQL SERVER的复制组件有出版物与论文。出版者、订阅者、推订阅和拉订阅。

(1)出版物和论文

论文是被复制的数据集合,一篇论文一般就是咱们所说的表,论文是出版物的基本组成单元。出版物是论文的集合。它可以包括一个或多个论文订阅者,订阅的是出版物而不是出版物中的论文,这样可以使订阅更为简单。

(2)出版者

出版者是出版出版物的服务器。出版者服务器来维护源数据库以及有关出版物的信息。使数据可用于复制。除了决定哪些数据将被复制外,出版者要检测哪些复制数据发生了变化,并将这些变化复制到分发者的分发数据库中。

(3)分发者

分发者是指把从出版者传递来的复制数据或事务等送至相应的订阅者的服务器,并负责维护分发数据库。

(4)订阅者

订阅者是指存储复制数据的副本机器。且接收并维护已出版的数据的服务器,订阅者也可以对出版数据进行修改,尽管订阅者可以对数据进行修改,但它仍是一个订阅者,当然订阅者也可以作为其他订阅者的出版者。
出版者、分发者、订阅者实际上并不一定指相互独立的服务器。它只是对SQL SERVER在复制过程中所扮演的不同角色的描述。SQL SERVER允许一台SQL SERVER服务器可以扮演不同的角色。比如一台出版者的服务器既可出版出版物,也可以作为分发者来存储和传送快照复制和事务复制。在实际应用中,用户决定是否让一台服务器扮演一个或多个角色。在很大程序是基于对复制系统性能的考虑,例如,为了提高分发者从分发数据库向订阅者的数据库复制出版物的效率,降低出版者服务器的负载,用户常不允许一台服务器既扮演出版者又扮演分发者。而是让其他的服务器专站承担分发者任务,从而提高了出版者和分发者的性能。

(5)订阅类型

推订阅和拉订阅
推订阅是指由出版者将所有发生在出版数据库的修改复制给订阅者,而不必向订阅者发出请求,只要出版数据库发生修改,出版者就会自动把这种修改体现在订购者那里,在对数据同步性要求比较高的场合,最好使用推订阅,拉订阅是指订阅者在经过一段时间就会向出版者要求复制出版数据库发生的变化。
 
复制代理:

(1)快照代理

快照代理在分发者上创建并存储快照文件,任务是:在分发数据库中准备已发布表的架构和初始数据以及其他对象、存储快照文件并记录出版数据库和订阅服务器之间的同步信息,快照代理运行在分发者服务器上,并与出版者相连接。每一个出版物都有自己的快照代理。与各种类型的复制一起使用。

(2)日志阅读代理

日志读取器代理与事务性复制一起使用。它将发布服务器上的事务日志中标记为复制的事务移至分发数据库中。使用事务性复制发布的每个数据库都有自己的日志读取器代理,该代理运行于分发服务器上并与发布服务器连接(分发服务器与发布服务器可以是同一台计算机)。

(3)分发代理

分发代理与快照复制和事务性复制一起使用。它将初始快照应用于订阅服务器,并将分发数据库中保存的事务移至订阅服务器。分发代理既可以运行于分发服务器(对于推送订阅),也可运行于订阅服务器(对于请求订阅)。

(4)合并代理:   

合并代理与合并复制一起使用。它将初始快照应用于订阅服务器,并移动和协调所发生的增量数据更改。每个合并订阅都有自己的合并代理,该代理同时连接到发布服务器和订阅服务器并对它们进行更新。合并代理既可以运行于分发服务器(对于推送订阅),也可以运行于订阅服务器(对于请求订阅)。默认情况下,合并代理将订阅服务器上的更改上载到发布服务器,然后将发布服务器上的更改下载到订阅服务器。

(5)队列阅读代理

队列读取器代理与包含排队更新选项的事务性复制一起使用。该代理运行于分发服务器,并将订阅服务器上所做更改移回至发布服务器。与分发代理和合并代理不同,只有一个队列读取器代理的实例为给定分发数据库的所有发布服务器和发布提供服务。
复制类型: SQL SEVER提供了三大类复制类型:快照复制、事务复制、合并复制。可以在实际应用中使用相应的复制类型,每一种复制类型都在不同程序上实现数据的一致性。

(1)快照复制

如其名字所言,快照复制指在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者服务器。快照复制实现较为简单,其所复制的只是某一时刻数据库的瞬间数据,
快照复制是将整个出版物传送给订阅者,就是在某一时刻将出版数据进行一次“照相”,生成一个描述出版数据库中数据的当前状态的一个文件,然后在相应的时间将其复制到订阅都的数据库上,快照复制并不是不停的监视出版数据库中发生的变化情况,它是对出版数据库进行一次扫描,把所有出版数据中的数据从源数据库送至目标数据库,而不仅仅是变化的数据。如果数据量很大,那么要复制的数据就很多。因此对网络资源要求很高,不仅要有较快的传输速度,而且要保证传输的可靠性。
快照复制是最为简单的一种复制类型,能够在出版者和订阅者之间保证数据的一致性。快照复制通常使用在以下场合:
在一定时间内出现大量的更改的操作,但数据总量不大,变化周期较长。

(2)事务复制

快照复制是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。那么事务复制使用事务日志来生成将复制到订阅服务器的事务,因为它只复制事务也就是变化,所以滞后也比快照复制低得多,因为将不断地在订阅服务器处得到及时应用。

事务复制有三个组件:

快照代理,它生成架构,数据以及跟踪复制过程所需的数据;
分发代理:它分发快照和随后的命令;
日志读取器代理:它读取发布数据的事务日志。
在事务复制中,当出版数据库发生变化时,这种变化就会立即传递给订阅者。并在较短时间内完成(几秒),而不是像快照复制那样要经过很长一段时间间隔。因此,事务复制是一种接近实时地从源到目标分发数据的方法。由于某种原因事务复制的频率较高。所以必须保证在订阅者与出版者之间要有可靠的网络连接。

(3)合并复制

合并复制是为移动用户设计的,可以在发布服务器或是订阅服务器处执行修改,在合并代理运行时,这些修改将同步,多用于发布服务器与订阅服务都修改数据的情况下。工作原理如下:在要复制的每个表上实现触发器,并使用包含GUID列唯一标识要复制的表中的每一行。对其中的任何一个表进行修改时,都会将更改将记录一个数据表中,在合并代理运行时,它收集数据表中的GUID,这些GUID指出了在发布服务器和订阅服务器处修改过的行。对于只在发布服务器或是订阅端修改的数据则直接进行相应操作,如INSERT,UPDATE,DELETE,如果双方都有GUID则按照用户指定的方式解决冲突,默认发布服务器伏先。

配置复制:无论是快照复制,事务性复制还是合并复制,创建复制都要经过以下几个步骤:

1.    创建发布服务器。选择要发布的服务器。如果有条件的,也可以分发服务器,在这里我们就将发布服务器和分发服务器设置在同一台计算机上。
2.    不论是发布服务器还是订阅服务器必须开启代理服务。
3.    创建一个发布。即将需要的数据库及对象发布出来。
4.    选择一个适合自己的发布类型。
5.    设置复制代理及安全,即指定可以运行代理的用户帐号。

创建可以使用此发布的订阅服务器。
现在我们的实验基于下图:

我们将SERVER1上的DB1数据库复制到SERVE2服务器上
具体操作如下 :
SERVER1上操作:实例名----复制----本地发布-----新建发布

我们在这里选择将发布服务器本身作为自己的的分发服务器。下面指定一个快照文件夹,用于存放快照信息,并依次选择发布数据库DB1

接下来指定复制类型;我们先进行快照复制

几种发布类型前面已做讲解,具有可更新订阅的事务发布属于事务发布的一种。

在该对话框里可以指定用于在分发服务器上运行快照代理的WINDOWS用户。WINDOWS用户又称为进程帐户,因为代理进程是在该帐户下运行的。

此时发布成功完成,如果要修改发布属性,可以在复制-----本地发布----看到该发布

下面就可以进行订阅了,订阅可以在发布服务器上进行,也可以在订阅服务器上进行。

在订阅服务器上订阅:

SERVER2上操作:实例名-----复制--本地订阅----新建订阅
在发布服务器上订阅:实例名-----复制--本地发布------右击属性---选择新建订阅

接下来的操作双方是一样的:

选择发布服务器,然后指定复制类型:我们选择是推复制 并且给SERVER2选择数据库

弹出如图所示的分发代理安全性对话框。在该对话框里可以设置同步订阅时运行分发代理进程的帐号:

对于推送订阅来说,分发代理在分发服务器上运行。对于请求订阅来说,分发代理在订阅服务器上运行。在本例使用的是推送订阅,因此应该使用发布服务器的用户
连接到分发服务器:对于推送订阅来说,只能通过模拟进程帐户来与分发服务器连接。
对于请求订阅来说,可以使用模拟帐户或是SQL SERVER用户来连接。
连接到订阅服务器:对于推送订阅来说,可以通过模拟进程或是SQL SERVER用户来连接。
对于请求订阅来说,只能使用模拟帐户来连接。

测试:
此时我们就可以看到发布服务器中的YG表已经复制到了订阅服务器中。
我们在SERVER1的DB1数据库中的YG表中插入一条记录,杜飞 男 29

至于事务复制和合并复制,过程大致相同只是要注意表的主键和GUID问题,在此不再累述,如有疑问或不同意见请批评指定

杜飞
2008-06-30

常见错误;

1.代理服务一定要事先运行

2.如果是GHOST的系统,会发生计算机名和SQL SERVER中所能识别的服务器名称不一致的情况,则请使用以下的代码进行同步更新,

if serverproperty('servername') <> @@servername 
begin 
declare @server sysname 
set @server = @@servername 
exec sp_dropserver @server = @server 
set @server = cast(serverproperty('servername') as sysname) 
exec sp_addserver @server = @server , @local = 'LOCAL' 
end 

再重新启动SQL SERVER 核心服务和代理服务

本文出自 “杜飞” 博客

更多SQL内容来自#



推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
author-avatar
minggute_111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有