服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 5637|回复: 2

MSSQL数据库同步

[复制链接]
dirtysea 发表于 2010-1-14 17:01:54 | 显示全部楼层 |阅读模式
MSSQL数据同步利用数据库复制技术实现数据同步更新(来自网络,也是非常完美的教程)

  复制的概念

  复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。

  SQL复制的基本元素包括

  出版服务器、订阅服务器、分发服务器、出版物、文章

  SQL复制的工作原理

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

  SQLSERVER复制技术类型

  SQLSERVER提供了三种复制技术,分别是:

  1、快照复制(呆会我们就使用这个)

  2、事务复制

  3、合并复制

  只要把上面这些概念弄清楚了那么对复制也就有了一定的理解。接下来我们就一步一步来实现复制的步骤。

  第一先来配置出版服务器

  (1)选中指定[服务器]节点

  (2)从[工具]下拉菜单的[复制]子菜单中选择[发布、订阅服务器和分发]命令

  (3)系统弹出一个**框点[下一步]然后看着提示一直操作到完成。

  (4)当完成了出版服务器的设置以后系统会为该服务器的树形结构中添加一个复制监视器。同时也生成一个分发数据库(distribution)

  第二创建出版物

  (1)选中指定的服务器

  (2)从[工具]菜单的[复制]子菜单中选择[创建和管理发布]命令。此时系统会弹出一个**框

  (3)选择要创建出版物的数据库,然后单击[创建发布]

  (4)在[创建发布向导]的提示**框中单击[下一步]系统就会弹出一个**框。**框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)

  (5)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,SQLSERVER允许在不同的数据库如ORACLE或ACCESS之间进行数据复制。但是在这里我们选择运行"SQLSERVER2000"的数据库服务器

  (6)单击[下一步]系统就弹出一个定义文章的**框也就是选择要出版的表

  (7)然后[下一步]直到操作完成。当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。

  第三设计订阅

  (1)选中指定的订阅服务器

  (2)从[工具]下拉菜单中选择[复制]子菜单的[请求订阅]

  (3)按照单击[下一步]操作直到系统会提示检查SQLSERVER代理服务的运行状态,执行复制操作的前提条件是SQLSERVER代理服务必须已经启动。

  (4)单击[完成]。完成订阅操作。

  完成上面的步骤其实复制也就是成功了。但是如何来知道复制是否成功了呢?这里可以通过这种方法来快速看是否成功。展开出版服务器下面的复制——发布内容——右键发布内容——属性——击活——状态然后点立即运行代理程序接着点代理程序属性击活调度把调度设置为每一天发生,每一分钟,在0:00:00和23:59:59之间。接下来就是判断复制是否成功了打开C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表
 楼主| dirtysea 发表于 2010-1-15 11:49:36 | 显示全部楼层
注意事项:
1。要单独建立新用户,隶属于administrators组,用于启动Sqlserveragent服务(开机自启动),本地系统帐户local,将不具备网络功能,会产生错误

2、发布和订阅服务器上企业管理器中的SQL注册必须为本机名称,不能为local或ip

3、在发布服务器上建立连接订阅服务器的SQL注册

4、发布和订阅服务器上如果安装了MSSQL后更改过机器名,需要修改MSSQL注册主机名:

4.1 检查有无sql注册问题
use master
select srvid,srvname,datasource from sysservers
如果srvid字段=0,servname与datasource的值不一样,则需要运行下步
4.2 修改注册名称
USE master
GO
DECLARE @serverproperty_servername  varchar(100),
@servername    varchar(100)
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
select @serverproperty_servername,@servername
EXEC sp_dropserver @server=@servername
EXEC sp_addserver @server=@serverproperty_servername, @local='local'
4.3 再次运行3.1,servname与datasource的值会相同

5、系统需要的扩展存储过程是否存在(如果不存在,需要恢复):
sp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'
go              
sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
go

6、同步是通过内网,内网不能关闭1433端口,不能关闭文件共享,不能删除默认共享如D$ E$
 楼主| dirtysea 发表于 2010-1-15 11:58:30 | 显示全部楼层
示列:这里以117和75为例说明:117发布&分发服务器、75订阅服务器
117角色:发布、分发服务器  117主机名称为“117”
75角色:订阅服务器 75服务器名称“75”

1、企业管理器-->选中117节点
工具-->复制-->配置发布、订阅服务器和分发
下一步-->使"117"成为它自己的分发服务器-->快照文件夹(\\117\d$\mssql\ReplData)-->是-->否,使用下列默认设置-->完成
完成后会提示 成功的将"117"启用为"117"的分发服务器
完成后会在117建立distribution库,会看到复制监视器项

2、工具-->复制-->创建和管理发布 例如同步KBOX
选中要进行同步的数据库-->点击创建发布-->下一步-->选中要同步的数据库-->下一步-->事务发布-->运行SQLServer2000的服务器-->
选择要同步的表(该表的表结构中一定要有主键才能被选择同步)-->下一步-->下一步-->发布名称(随意)-->下一步-->完成

3、在75上建立一个同名的要同步的空数据库KBOX

4、在创建和管理发布界面中
展开已经创建了发布的数据库KBOX-->选择该库下的发布-->再选择强制新的订阅-->选择75-->订阅数据库名称(默认)-->连续地 最短滞后时间-->
是,初始化架构和数据,勾选启动快照代理立即开始初始化处理(如75上已经有了要同步的数据库和表结构,选择否)-->下一步-->完成
完成后会提示成功创建订阅:75

5、点击复制监视器,第一次会提示是否希望自动刷新复制监视器,选择是,勾选不再提示

6、展开复制监视器,发布服务器-->117-->KBOX:KBOX
点刷新按钮可看到75:KBOX状态为正在运行
到75上的KBOX库,可看到表结构、内容都已同步更新完成
测试在117KBOX库任意表插入一条数据,在75上会看到同步过来的相同数据

注:KBOX库新增表、表结构更改,需要手动删除并重新强制订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-3-29 00:33 , Processed in 0.084318 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表