热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

发布、订阅、复制、同步SQLServer2000数据库

为什么要同步SQLServer2000数据库,它都用在什么场合数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡数据实时备份同步,数据库服务器可以无间断,无损失迁移主服务器

为什么要同步SQL Server 2000 数据库,它都用在什么场合 数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份 数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡 数据实时备份同步,数据库服务器可以无间断,无损失迁移 主服务器

为什么要同步SQL Server 2000 数据库,它都用在什么场合

数据实时备份同步,数据库服务器出问题时我们也有其正常工作时的备份
数据实时备份同步,一台服务器负载不起时,可以用来做负载均衡
数据实时备份同步,数据库服务器可以无间断,无损失迁移
主服务器被攻击或当机时另一台服务同步机可以应急
SQL Server 2000 数据库同步配置的原理

复制的概念

Microsoft? SQL Server? 2000 的复制是在数据库之间对数据和数据库对象进行复制
和分发并进行同步以确保其一致性的一组技术。

使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过 Internet 分
发给远程或移动用户。复制还能够使用户提高应用程序性能,根据数据的使用方式物理
分隔数据(例如,将联机事务处理 (OLTP) 和决策支持系统分开),或者跨越多个服务
器分布数据库处理。


SQL复制的基本元素包括

发布服务器、订阅服务器、分发服务器、发布、项目

发布服务器
发布服务器是提供数据以便复制到其它服务器的服务器。发布服务器可以具有一个或多个
发布,每个发布代表一组逻辑相关的数据。除了指定其中哪些数据需要复制之外,发布服
务器还检测事务复制期间发生更改的数据并维护有关此站点上所有发布的信息。

分发服务器
分发服务器是作为分发数据库宿主并存储历史数据和/或事务以及元数据的服务器。分发
服务器的角色根据执行的复制类型而不同。有关更多信息,请参见复制类型。
远程分发服务器是独立于发布服务器并配置为复制的分发服务器的服务器。本地分发服务
器是既配置为复制的发布服务器又配置为复制的分发服务器的服务器。

订阅服务器
订阅服务器是接收复制数据的服务器。订阅服务器订阅的是发布而不是发布中分离的项目;
并且订阅服务器只订阅其需要的发布,而不是发布服务器上所有可用的发布。根据复制的类
型和所选择的复制选项,订阅服务器还可以将数据更改传播回发布服务器或将数据重新发布
到其它订阅服务器。

发布
发布是一个数据库中的一个或多个项目的集合。这种多个项目的分组使得指定逻辑相关的一
组数据和数据库对象以一起复制变得更容易。

项目
项目是指定要复制的数据表、数据分区或数据库对象。项目可以是完整的表、某几列(使用垂
直筛选)、某几行(使用水平筛选)、存储过程或视图定义、存储过程的执行、视图、索引视图
或用户定义函数。

订阅
订阅是对数据或数据库对象的复本的请求。订阅定义将接收的发布和接收的时间、地点。订阅的
同步或数据分发可以由发布服务器(强制订阅)或订阅服务器(请求订阅)请求。发布可以支持
强制订阅和请求订阅的混合。


SQL复制的工作原理
SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务
器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器
分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些
改变分发给订阅服务器


精品版SQL Server 2000 数据库同步配置

SQL SERVER复制技术类型,三种复制技术,分别是(详细的说明参考SQL联机帮助):
1、快照复制
2、事务复制
3、合并复制

下介绍实现复制的步骤。(以快照复制为例)

准备工作:

1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户

2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:

我的电脑--D: 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定

3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

开始--程序--管理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码

4.设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)

企业管理器
--右键SQL实例--属性
--安全性--身份验证
--选择"SQL Server 和 Windows"
--确定

5.在发布服务器和订阅服务器上互相注册
企业管理器
--右键SQL Server组
--新建SQL Server注册...
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个"SQL Server身份验证"
--下一步--输入用户名和密码(一般是sa,密码最好设置一下非常复杂的)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成

6.对于只能用IP,不能用计算机名的,为其注册服务器别名
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

正式开始:

1.配置发布服务器

a. 选中指定 [服务器] 节点
b. 从 [工具] 下拉菜单的 [复制] 子菜单中选择 [发布、订阅服务器和分发] 命令
c. 系统弹出一个对话框点 [下一步] 然后看着提示操作
--直到"指定快照文件夹"
--在"快照文件夹"中输入准备工作中创建的目录: \<服务器名>pub
一[下一步] 直操作到完成。
d. 当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器
同时也生成一个分发数据库(distribution)

2.创建发布
a. 选中指定的服务器
b. 从 [工具] 菜单的 [复制] 子菜单中选择 [创建和管理发布] 命令。此时系统会弹出
一个对话框
c. 选择要创建发布的数据库,然后单击 [创建发布]
d. 在 [创建发布向导] 的提示对话框中单击 [下一步] 系统就会弹出一个对话框。对话
框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个
大家可以去看看帮助)
e. 单击 [下一步] 系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在
不同的数据库如 ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行
"SQL SERVER 2000"的数据库服务器
f. 单击 [下一步] ,选择要发布的对象(如表,视图,存储过程,一般是表)
g. 然后 [下一步] 直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了
一个共享数据库。

3.设计订阅
a. 选中指定的订阅服务器
b. 从 [工具] 下拉菜单中选择 [复制] 子菜单的 [请求订阅]
c. 按照提示单击 [下一步] 操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行
复制操作的前提条件是SQL SERVER代理服务必须已经启动。(选择一发布服务器,然后选择你要的一个发布,一次只能添加一下,然后新建一个同名的数据库,一路下一步就可以了,其它数据库也这样来。操作过程中可能会出现说服务器不支持匿名什么来着,需要在发布服务器上右击一个发布,订阅选项,允许匿名请求订阅选中就可以了。)
d. 单击 [完成] 完成订阅操作。

完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?
这里可以通过这种方法来快速看是否成功。
展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度
把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。
接下来就是判断复制是否成功了打
开C:Program FilesMicrosoft SQL ServerMSSQLREPLDATAuncXIAOWANGZI_database_database下面
看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。
要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表

从0开始一步一步配置SQL Server 2000 数据库同步

首先,一般情况下数据库安装好后,在企业管理器里看到的sql注册是(local)(Windows NT),

SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。

删除该服务器的 SQL Server 注册并使用实际的服务器名对它进行注册。

我先把这个删除,右击他,选择删除sql server 注册 。。然后新建注册,右击Sql server组,新建Sql server 注册下一步--》可用的服务器里有你的计算机名,点中间的添加,添加到“添加的服务器里”--下一步--》下一步--》下一步--》完成

单击刚刚以计算机名建好的sql server 注册,以选中它--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》出现“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。--》确定,选择“本帐户”(这时进入系统新建一个帐户比如SQL120),用户名输入"SEOGIRLSQL120",输入密码,确定,出现:所做的一个或多个更改只有在 SQL Server 代理重新启动后才会生效。现在要停止并重新启动 SQL Server 代理吗?,确定,确定,--》下一步--》下一步--》快照文件夹路径“\SEOGIRLD$Program FilesMicrosoft SQL ServerMSSQLReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。

确实要使用此快照文件夹路径吗?
--》否,因为这个路径是没办法请求订阅的代理程序,咱们建一个文件夹D:ReplData,在这个文件夹的属性里设置“共享此文件夹”,点击“权限”设置everyone为完全。--》确定后退出--》返回咱们刚才的“快照文件夹”,在里边输入“\SEOGIRLReplData”--》下一步--》下一步--》完成--》关闭

打开企业管理器--》选中发布服务器--》工具--》复制--》配置发布、订阅服务器和分发。。。--》下一步--》下一步--》下一步--》否,选择一个快照文件夹位置,\seogirlReplData--》下一步--》--》--》--》--》--》--》--》

“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。
“SEOGIRL”上的 SQL Server 代理使用系统帐户,所以服务器之间的 SQL Server 复制将会失败。若要在服务器之间使用复制,请选择另一个服务器器作为“SEOGIRL”的分发服务器。
“SQL120”不是有效的 Windows NT 名称。请给出完整名称: <域用户名>。

输入"administrator"时提示以下错误:
错误 15407: 'administrator' 不是有效的 Windows NT 名称。请给出完整名称: <域用户名>。

系统出现两个选择 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
然后选那个呢?
我两个都试过了 然后出现快照文件夹
\XXLJDF$Program FilesMicrosoft SQL ServerMSSQLReplData
系统提示 不是有效的文件名或路径

1。 一个是 是,将SQL server代理服务配置为自动启动
另一个是 否,我将手工启动 SQL server 代理服务器
说明:这个选择是或者否都可以。是:则系统自己启动代理服务器
否:你自己手工的启动代理服务器
这就是区别。
2。
\XXLJDF$Program FilesMicrosoft SQL ServerMSSQLReplData
系统提示 不是有效的文件名或路径

这样修改:

1。创建一个文件夹在ntfs分区上,如:D:ReplData
2.共享这个文件夹 --右击文件夹-属性-共享
3。同时在相同的界面-有权限-设置为everyone-完全控制的权限
这样就可以了。
4.路径里输入\计算机名ReplData

配置SQL Server 2000 数据库同步时的 常见问题

问题:SQL Server 复制不支持昵称,例如使用“.”或“(local)”作为服务器名。

回答:删除该服务器的 SQL Server 注册并使用计算机名进行注册。

问题:“SEOGIRL”上的 SQL Server 代理当前在使用系统帐户,它会导致服务器之间的复制失败。在下列对话框中,为服务启动帐户另外指定一个帐户。

回答:应该先建一个有管理员组权限的帐户,然后用在这。

问题:快照文件夹路径“\SEOGIRLD$Program FilesMicrosoft SQL ServerMSSQLReplData”使用特殊的共享名称,该名称通常只能由在计算机“SEOGIRL”上有管理权限的登录访问。此共享可能不能由在其它计算机上运行的代理程序访问,例如请求订阅的代理程序。确实要使用此快照文件夹路径吗?

回答:在D盘或你别的盘建一个文件夹如:D:pub,设为共享,并把上面那个新建的用户加到这里面设为完全控制,快照路径里写\计算机名pub

问题:“SQL120”不是有效的 Windows NT 名称。请给出完整名称: <域用户名>。

解决:使用:计算机名用户名。

另一种配置方法


我是如何设置的:
1。准备工作
设置一个公用目录并保证2台服务器有权限。
2。右键发布服务器——属性——复制——配置——创建分发服务器,并设定发布服务器和发布数据库,
然后给予订阅服务器权限。
3。依次展开:发布服务器——将要发布的数据库——右键发布内容——新建发布。
4。右键刚刚建立的发布——属性——状态——立即运行代理程序——代理程序属性中设置调度并启动。
4。右键刚刚建立的发布——属性——订阅——强制新建。

有时候会看不到新建立的项目,重新进就可以了。

--------------------------------------------------------------------------------

经过测试,可以顺利实现数据库结构的初始化和数据的单向同步(也就是订阅服务器的数据可以及时更新为发布服务器的数据)。
准备工作:
>>数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数据一致。整个执行过程是这样一来的:
a.订阅服务器应该有个初始化,一般来说我们开始做这个同步任务的时候,发布服务器已经有了相当的数据量了,而我们的订阅服务器应该是新建的服务。即使发布中没有数据,也需要把他的数据库结构初始化到订阅服务器上。
b. 我采用的是事物复制,发布服务器的数据发生变化后,相当于触发了一个更新操作,而事物复制可以在设定的时间把数据更新的操作更新到订阅服务器中去。当然,这个操作需要经过分发服务器。在我的测试中,我是把发布服务器和分发服务器设置为同一台主机,可以顺利实现数据在数分钟内同步。

> >在操作的起始,需要考虑订阅服务器是否有和发布服务器相同结构的数据库,如果有,需要做的就是使用代理把发布服务器现有的数据初始化过去;如果没有对应的相同结构的数据库,就需要要把发布服务器当前的数据库结构和当前的数据都初始化到订阅服务器中。当然这里所说的操作都是在下面的实施步骤中实现,不需要单独处理。
>>如果说对Windows系统有所要求的话,就应该保证这三个服务器(发布,分发,订阅)在同个域中,以同一个域管理员帐号身份运行,操作如下:
a.进入相应的服务器,控制面板->服务->SQLSERVERAGENT,设置登录,三台服务器同样设置。

b.操作前,也不允许这三台服务器对应的别名使用呢称,比如"LOCAL",这样的别名要删除重建,可以采用主机名,比如:server02.

下面开始执行数据库同步的操作:
>>配置发布服务器和分发服务器:
a.选中对应服务器的注册名->工具->复制->配置发布、订阅和分发,直接按照默认设置向下执行,直到完成。关闭。
b. 再一次选中这个服务器服务器的注册名->工具->复制->配置发布、订阅和分发,可以看到这次界面和步骤a中的界面有所不同,我们只需要配置一下发布服务器,发布数据库,订阅服务器。(我的发布数据库采用的是事物性的)。点“确定”完成操作。<标记P>

> >创建发布,可以选中相应的注册,用工具->复制->创建和管理发布或者在该注册下面的复制->发布内容选中后,在右边空白处,右键,新建发布,来创建你的发布。我选择的是事物发布,按照默认设置,选择你要发布的表或其他对象,其他地方不需要修改,直到完成操作。
>>修改发布属性:选择“状态”->立即运行代理程序;代理程序属性->设置你的调度,比如一分钟一次。(调度->编辑->更改;通知->写入windows应用程序事件日志),"确定"完成操作。

>>创建订阅:选择发布服务器对应的注册,复制->发布内容->在这个内容上右键,强制新订阅,->"下一步",选择订阅服务器(在标记P那一步选择的订阅服务器)->“下一步”->选择你有的数据库,或者新建一个数据库
->"下一步"-> 修改你需要的调度->按照默认设置,直到完成。

到这里就可以完成了,修改发布服务器数据库中的内容,等一两分钟,数据就同步到订阅服务器中了。不过由于第一次执行需要快照,如果发布库中有一定的内容,第一次执行可能需要几分钟时间。如果数据不能同步过去,大家是调度设置时间太短(比如1分钟)使快照不能完成,所以后面的步骤无法执行,遇到这样的情况的话,
选中你发布的内容,设置属性,在“状态”中“立即运行代理程序”,这样的话,数据会马上同步过去的。

推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
author-avatar
你就夜沉思
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有