不同数据库之间表数据的实时同步-发布与订阅
不同数据库之间表数据的实时同步-发布与订阅
下载⽹站:
客服QQ1793040
----------------------------------------------------------
关于HKROnline SyncNavigator 注册机价格的问题
HKROnline SyncNavigator 8.4.1 ⾮破解版注册机授权激活教程
最近⼀直在研究数据库同步的问题,在⽹上查了很多资料,也请教了很多⼈,到了⼀种通过快照复制的⽅法。研究了⼀番后发现之前就是⽤的这个⽅法,效果不是很好,果断放弃。经过了⼀番寻觅和他⼈指点,最后从⼀位热⼼⽹友那⾥得知⼀款很好⽤的软件
—— SyncNavigator。
好东西就要拿出来跟⼤家分享,所以今天向⼤家介绍⼀下这款软件,及其⼀些使⽤⽅法。下⾯先看看它有什么强⼤的功能吧!SyncNavigator的基本功能:
⾃动同步数据/定时同步数据
⽆论是实时同步/24⼩时不间断同步,还是根据计划任务(每⼩时/每⽇/每周/等)定时⾃动同步都能完全胜任。
完整⽀持 Microsoft SQL Server
完整⽀持 Microsoft SQL Server 2000 2005 2008 数据库类型。并能在不同数据库版本之间相互同步数据。
⽀持 MySQL 4.1 以上版本
⽀持 MySQL 4.1 5.0 5.1 5.4 5.5。并能在不同数据库版本之间相互同步数据。
⽆⼈值守和故障⾃动恢复
当数据库故障或⽹络故障以后,⽆需⼈⼯⼲预(或操作)⾃动恢复同步并确保数据完全准确,可靠。
同构数据库同步/异构数据库同步
SQL Server to SQL Server, MySQL to MySQL, SQL Server to MySQL 等都能轻松实现。
断点续传和增量同步
当同步完成(或中断)后,再次同步时能继续上⼀次的位置增量同步,避免每次都需要从头开始的问题。
最近要将不同服务器上数据库的表数据同步汇总,所以就涉及到了数据同步的问题,以前没有接触过,在⽹上了⽅法,
⼤抵的⽅法有三种:
1,在数据库中编写触发器
2,写⼀个同步程序去完成同步
3,使⽤数据库的发布和订阅功能
以上前两种⽅法暂且不提,今天说说第三种⽅法:使⽤数据库的发布和订阅功能实现同⼀服务器下的不同数据库的表数据同步和不同服务器下的不同数据库的表数据同步前提是源数据表结构和⽬标数据表结构必须相同。
先来说说【发布】和【订阅】的操作步骤,在⽂章的后⾯,会将这个过程中可能会遇到的所有问题做⼀个汇总,然后给出解决⽅法。
学习格言
⽬录
1发布
2订阅
3发布和订阅过程中的可能遇到问题及解决⽅案
1发布
腾讯客服人工服务1,⾸先使⽤本机名称连接到数据库,不能使⽤IP地址连接数据库,⾄于为什么,在⽂后说明到【。复制,展开复制选项,可以看到两个节点】:【本地发布】,【本地订阅】
2,⿏标右键点击【本地发布】,【选择新建发布】
3,【弹出新建发布向导】对话框,【选择下⼀步】
4,选择要发布的数据库,点击然后【下⼀步】
5,选择发布类型,这⾥数据库有四种发布类型,每种发布类型下⾯都有类型说明,这⾥在选择选择【快照发布】,点击然后【下⼀步】
如图6所⽰,选择要发布的表对象,在左侧的选择区域选择要发布的表信息,然后点击【下⼀步】dnf纯净的灵魂气息
7,进⼊筛选表的设置界⾯,这⾥的筛选是指发布的表数据中的某⼀个或者全部字段只能为固定的值,从⽽达到当所有的订阅服务器接收数据时,接收到的该字段的值为发布时设定的值。如果不需要,直接点击【下⼀步】
8,进⼊快照代理界⾯,将界⾯上的两项内容选中
9,如果需要修改数据同步的时间和频率,则点击【更改】
10,设置数据同步的的的频率段段,每天执⾏的的的频率段段状语从句:执⾏的开始时间结束状语从句:时间,设置完成点击【确定】,返回到上⼀界⾯,然后点击【下⼀步】
11,设置代理快照,点击【安全设置】,进⼊设置界⾯
12,选择【在SQL Server代理服务账户下运⾏】和【使⽤以下SQL Server登录名】,登录名和密码是为了使订阅的服务器登录到发布服务器。设置完成点击【确定】,返回到上⼀个界⾯,然后点击【下⼀步】
13,该页⾯选择默认设置,直接点击【下⼀步】
14,为本次发布创建⼀个名称,然后点击【完成】
15,以上步骤全部做完之后,等待发布的创建完成,当提⽰成功时,表⽰本次发布创建成功大学毕业祝福语
16,返回到数据库的连接初始界⾯,的左侧处节点选择【复制】 – 》【本地发布】,可以在改节点下看到刚才创建好的发布棉布
⾄此,发布的相关操作已经做完,⼀个完整的发布已经成功发布。接下来要做的就是在需要同步数据的服务器上订阅该发布。
2订阅
在需要同步数据的服务器上添加订阅,订阅刚才我们添加的发布,这样可以实现数据库表数据之间的同步和迁移。
1,同样的是使⽤本机名称连接数据库,然后选择【复制】,展开该节点,选择【本地订阅】,⿏标右键点击该项,选择【新建订阅】
2,进⼊新建订阅向导界⾯,初始界⾯同新建发布界⾯,选择【下⼀步】
3,进⼊为订阅选择发布的界⾯,如果是⼀个服务器不同数据库之间的表数据同步,则在发布服务器中选择本地服务器;如果是不同服务器之间不同数据库的表的数据同步,则在发布服务器中选择远程服务器。
4,如果是不同服务器之间的数据同步,选择【发布服务器】的下拉框,选择第⼀项【查SQL Server发布服务器】,会弹出【连接到服务器】的对话框,点击【服务器名称】⼀栏的下拉框,选择【浏览更多】,在打开的界⾯【选择⽹络服务器】,到发布的服务器。
5,到该服务器之后,选择⽤实例名登录数据库,选择⽤SQL Server⾝份验证,登录名和密码则为源服务器创建发布时选择的登录名和密码
6,选择连接,⾃动返回到选择发布服务器的界⾯,在数据库和发布区域,会将连接到的服务器的所有发布的数据库显⽰出来,例如这个的textdb就是刚才创建的发布数据库,然后展开该项,可以看到我们刚才创建的发布为111的名称,选中该发布,点击然后【下⼀步】
如图7所⽰,选择然后【在配给物服务器***运⾏上所有代理】,【点击下⼀步】
如图8所⽰,选择订阅服务器,选中当前需要订阅的服务器,然后点击后⾯的【订阅数据库】,选择下拉框,然后选择⽬标数据库,之后完成【选择下⼀步】
9,进⼊分发代理安全性设置界⾯,选择与订阅服务器的连接的选择按钮,进⼊设置界⾯
10,按照图中所⽰进⾏设置,SQL Server登录名和密码即为当前数据库的登录名和密码,设置完成点击【确定】,返回到上⼀界⾯,然后点击【下⼀步】
11,同步计划的设置,点击代理计划框,出现下拉框,选择需要的⽅式,完成设置点击之后【下⼀步】
12,初始化的设置,点击初始化时间设置框,出现下拉框,选择需要的初始化时间,完成设置点击【下⼀步】
13,其他选项全部默认,点击直接【下⼀步】
14,点击完成,等待订阅的成功提⽰
⾄此,⽬标服务器端的订阅也成功配置。
以上发布和订阅同时完成之后,只要保证服务器之间的连接畅通,则数据会实时的实现同步。
以上只是⼀对⼀的服务器之间的数据同步,⼀个服务器同时订阅多个发布会有冲突,⽐如服务器1的
甲数据库有⼀个表⼀,服务器2的⼄数据库有⼀个表B,需要将数据库阿中表⼀的数据和数据库⼄中表b的数据汇总同步到服务器3的数据库的ç表中,A,b,C三个表的结构需要完全相同,在的服务器3单独订阅服务器1时,数据可以顺利同步,当同时订阅服务器1和服务器2的时候,在同步服务器1的数据时没有问题,在同步服务器2的时候,会⾃动覆盖掉服务器1的数据。
3 发布和订阅过程中的可能遇到问题及解决⽅案
在发布和订阅的创建过程中,往往会因为电脑的设置原因,⽽出现各种各样的问题,在这⾥整理⼀下最常见到的问题,并提供⼀些解决⽅案1
问题:新建发布或者订阅,提⽰“⽆法连接到服务器,需要有实际的服务名才能连接到服务器”,
解决⽅案:该问题是因为使⽤了IP地址登录服务器导致的,需要使⽤实际的服务名登录服务器,具体的名称查看⽅法:【右键我的电脑】 –“【属性】即可查看到计算机名,使⽤该名称连接服务器即可
2
问题:新建发布或者订阅,提⽰“SQL Server复制需要有实际的服务器名称才能连接到服务器,不⽀持通过别名,ip地址或其他任何备⽤名称进⾏连接。请指定实际的服务器名称”xxxx“”
dnf 阿修罗加点解决⽅案:该问题是由于更改计算机名称导致的。如果遇到此问题,则复制下⾯的SQL语句到数据库中执⾏
select @@servername
select serverproperty(‘servername’)
执⾏以上两句代码,结果如上图所⽰,如果两个结果的名称不⼀致,则需要修改,修改代码如下:
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(MSSQLSERVER)服务,然后重启之后再使⽤⼀下代码查询。
select @@servername
select serverproperty(‘servername’)
结果显⽰查询结果⼀致,则该问题解决。
3
问题:在创建发布的最后⼀步,提⽰⼀个警告,显⽰“SQL Server⽆法启动快照代理”
解决⽅案:该问题是由于SQL服务器的⼀个服务没有启动导致的打开SQL服务器的配置管理器,查看SQL服务器的代理服务是否启动,如果没有启动,则启动该程序即可
暂时遇到的这⼏种问题,以后遇到的在做补充。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。