如果是同一种数据库的话,你同步的数据表结构是否相同,如果也相同的话,完全可以利用数据库的同步复制机制来解决;(做主从)如果表结构不相同的话,如果不在应用层处理的话,有两种方式参考:1,A推数据给B;A有数据的时候,实时或非实时(采用event或trigger)将数据推到B中,B再做处理;2,B从A拉数据,用一个event(mysql中的job)定时从A中拉数据然后进行处理;另外可以选择在应用层来做,这个我就不多介绍了,根据业务逻辑coding就行了。由于不清楚你的业务特点,所以无法进一步的帮你分析。
在pgsql的数据库中将要同步的表建立一个一模一样的同步表。然后建触发器,将进入源表中的数据触发到同步表中。然后做一个windows服务扫描这个同步表并且将同步表中的数据同步到mysql
或access中。
如果是整个数据库中有许多表要进行同步。则建立一个共用的同步表,结构非常简单。字段如下:
主键(f_id),源表名(f_tablename),主键字段名(f_keyname),主键值(f_keyvalue), *** 作标识(f_operflag
i:插入
u:更新
d:删除),时间字段(f_time)将要同步的表都建立触发器,只要有增、改、删都触发到这个表里。这样你只扫描这个共用的同步表,根据这些字段值完全可以实现数据的同步。隔离网闸就是这么个原理,只不过它的要比这复杂多了!
这个问题比较有难度哦!
这里只能提供一些范例给你参考下:
SQLServer2000同步复制技术实现步骤
一、 预备工作
1发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
--治理工具
--计算机治理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户(SynUser)
2在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录, *** 作:
我的电脑--D:\ 新建一个目录,名为: PUB
--右键这个新建的目录
--属性--共享
--选择 "共享该文件夹 "
--通过 "权限 "按纽来设置具体的用户权限,保证第一步中创建的用户(SynUser) 具有对该文件夹的所有权限
--确定
3设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始--程序--治理工具--服务
--右键SQLSERVERAGENT
--属性--登陆--选择 "此账户 "
--输入或者选择第一步中创建的windows登录用户名(SynUser)
-- "密码 "中输入该用户的密码
4设置SQL Server身份验证模式,解决连接时的权限问题(发布/订阅服务器均做此设置)
企业治理器
--右键SQL实例--属性
--安全性--身份验证
--选择 "SQL Server 和 Windows "
--确定
5在发布服务器和订阅服务器上互相注册
企业治理器
--右键SQL Server组
--新建SQL Server注册
--下一步--可用的服务器中,输入你要注册的远程服务器名 --添加
--下一步--连接使用,选择第二个 "SQL Server身份验证 "
--下一步--输入用户名和密码(SynUser)
--下一步--选择SQL Server组,也可以创建一个新组
--下一步--完成
6对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施中没用到)
(在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择 "tcp/ip "--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--假如你修改了SQL的端口,取消选择 "动态决定端口 ",并输入对应的端口号
二、 正式配置
1、配置发布服务器
打开企业治理器,在发布服务器(B、C、D)上执行以下步骤:
(1) 从[工具]下拉菜单的[复制]子菜单中选择[配置发布、订阅服务器和分发]出现配置发布和分发向导
(2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己)
(3) [下一步] 设置快照文件夹
采用默认\\servername\Pub
(4) [下一步] 自定义配置
可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置
否,使用下列默认设置(推荐)
(5) [下一步] 设置分发数据库名称和位置 采用默认值
(6) [下一步] 启用发布服务器 选择作为发布的服务器
(7) [下一步] 选择需要发布的数据库和发布类型
(8) [下一步] 选择注册订阅服务器
(9) [下一步] 完成配置
2、创建出版物
发布服务器B、C、D上
(1)从[工具]菜单的[复制]子菜单中选择[创建和治理发布]命令
(2)选择要创建出版物的数据库,然后单击[创建发布]
(3)在[创建发布向导]的提示对话框中单击[下一步]系统就会d出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助)
(4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型,
SQLSERVER答应在不同的数据库如 orACLE或ACCESS之间进行数据复制。
但是在这里我们选择运行 "SQL SERVER 2000 "的数据库服务器
(5)单击[下一步]系统就d出一个定义文章的对话框也就是选择要出版的表
注重: 假如前面选择了事务发布 则再这一步中只能选择带有主键的表
(6)选择发布名称和描述
(7)自定义发布属性 向导提供的选择:
是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性
否 根据指定方式创建发布 (建议采用自定义的方式)
(8)[下一步] 选择筛选发布的方式
(9)[下一步] 可以选择是否答应匿名订阅
1)假如选择署名订阅,则需要在发布服务器上添加订阅服务器
方法: [工具]-> [复制]-> [配置发布、订阅服务器和分发的属性]-> [订阅服务器] 中添加
否则在订阅服务器上请求订阅时会出现的提示:改发布不答应匿名订阅
假如仍然需要匿名订阅则用以下解决办法
[企业治理器]-> [复制]-> [发布内容]-> [属性]-> [订阅选项] 选择答应匿名请求订阅
2)假如选择匿名订阅,则配置订阅服务器时不会出现以上提示
(10)[下一步] 设置快照 代理程序调度
(11)[下一步] 完成配置
当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库。
更具体的你可以看这里:
>
1直接方法,将需要的查询的数据赋值到excel中。相应调整,然后再赋值到目标表中(对于数据量不大的情况下较快)
2最好两数据库拥有相同的登录名和密码不然比较麻烦
insert into 目标数据库dbo目标表名(字段1字段n)
select 段1字段n from 源数据库dbo源表名 或 select 段1字段n into 目标数据库dbo目标表名 from 源数据库dbo源表名
3这样的插入注意表字段的长度和约束条件,若原表中字段长,就得将目标表中的字段相应加长
首先你要说明一下这2个数据库是什么关系
数据库集群,那么AB两库是镜像还是互备,当然,根据数据库品牌不同,同步的方式也不一样,不过都可以通过安装过程和建立数据库实例中的配置来实现
数据库之间通过其他可控程序连接,那么,该情况下,需要数据可能出现延迟等,不推荐
数据库之间没有连接,但是都由同一个节点进行数据下发,那么就在这个节点上实现一个跨库事物控制就行了
如果是同一种数据库的话,你同步的数据表结构是否相同,如果也相同的话,完全可以利用数据库的同步复制机制来解决;(做主从)
如果表结构不相同的话,如果不在应用层处理的话,有两种方式参考:
1,A推数据给B;A有数据的时候,实时或非实时(采用event或trigger)将数据推到B中,B再做处理;
2,B从A拉数据,用一个event(mysql中的job)定时从A中拉数据然后进行处理;
另外可以选择在应用层来做,这个我就不多介绍了,根据业务逻辑coding就行了。
由于不清楚你的业务特点,所以无法进一步的帮你分析。
不同服务器数据库之间的数据 *** 作 --创建链接服务器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '远程服务器名或ip地址 'exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码'--查询示例 selectfrom ITSV数据库名dbo表名 --导入示例 selectinto 表from ITSV数据库名dbo表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins '--连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 selectfromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码',数据库名dbo表名) --生成本地表 selectinto 表fromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码',数据库名dbo表名) --把本地表导入远程表 insertopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码',数据库名dbo表名) selectfrom 本地表 --更新本地表 update b set b列A=a列A fromopenrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码',数据库名dbo表名)as a innerjoin 本地表 b on acolumn1=bcolumn1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV ', '', 'SQLOLEDB ', '远程服务器名或ip地址 '--查询selectFROMopenquery(ITSV, 'SELECT FROM 数据库dbo表名 ') --把本地表导入远程表 insertopenquery(ITSV, 'SELECT FROM 数据库dbo表名 ') selectfrom 本地表 --更新本地表 update b set b列B=a列B FROMopenquery(ITSV, 'SELECT FROM 数据库dbo表名 ') as a innerjoin 本地表 b on a列A=b列A --3、opendatasource/openrowset SELECTFROMopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' )testdboroy_ta --把本地表导入远程表 insertopendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ')数据库dbo表名 selectfromSQL code 用强制订阅实现数据库同步 *** 作 大量和批量的数据可以用数据库的同步机制处理: // 说明:为方便 *** 作,所有 *** 作均在发布服务器(分发服务器)上 *** 作,并使用推模式在客户机器使用强制订阅方式。 有疑问联系作者:zlp321001@hotmailcom 测试通过 //--1:环境服务器环境: 机器名称: ZehuaDb *** 作系统:Windows 2000 Server 数据库版本:SQL 2000 Server 个人版 客户端机器名称:Zlp *** 作系统:Windows 2000 Server 数据库版本:SQL 2000 Server 个人版 --2:建用户帐号在服务器端建立域用户帐号我的电脑管理->本地用户和组->用户->建立UserName:zlp UserPwd:zlp --3:重新启动服务器MSSQLServer我的电脑->控制面版->管理工具->服务->MSSQLServer 服务 (更改为:域用户帐号,我们新建的zlp用户 /zlp,密码:zlp) --4:安装分发服务器A:配置分发服务器工具->复制->配置发布、订阅服务器和分发->下一步->下一步(所有的均采用默认配置) B:配置发布服务器工具->复制->创建和管理发布->选择要发布的数据库(SZ)->下一步->快照发布->下一步-> 选择要发布的内容->下一步->下一步->下一步->完成C:强制配置订阅服务器(推模式,拉模式与此雷同) 工具->复制->配置发布、订阅服务器和分发->订阅服务器->新建->SQL Server数据库->输入客户端服务器名称(ZLP)->使用SQL Server 身份验证(sa,空密码)->确定->应用->确定D:初始化订阅复制监视器->发布服务器(ZEHUADB)->双击订阅->强制新建->下一步->选择启用的订阅服务器->ZLP-> 下一步->下一步->下一步->下一步->完成--5:测试配置是否成功复制监视器->发布服务器(ZEHUADB)->双击SZ:SZ->点状态->点立即运行代理程序查看:复制监视器->发布服务器(ZEHUADB)->SZ:SZ->选择ZLP:SZ(类型强制)->鼠标右键->启动同步处理如果没有错误标志(红色叉),恭喜您配置成功 --6:测试数据 --在服务器执行:选择一个表,执行如下SQL insertinto WQ_NEWSGROUP_S select'测试成功',5 复制监视器->发布服务器(ZEHUADB)->SZ:SZ->快照->启动代理程序 ->ZLP:SZ(强制)->启动同步处理 去查看同步的 WQ_NEWSGROUP_S 是否插入了一条新的记录 测试完毕,通过。
背景:项目中遇到的问题,需要二区两台数据库之间同步一些表,以及导出sql文件同步至三区数据库。
新建SQL文件生成的目录D:mptmsudataDNLTBDIR。
二区数据库中执行下列语句:
1)新建二区数据库服务器到二区数据库服务器的数据库DATABASE LINK文件。
二区数据库中执行下列语句:
2)二区数据库服务器新建表DNL_TBJL。
二区数据库中执行下列语句:
在二区数据库服务器说新建相关表的触发器,触发器实现的功能是东区2区向西区直接通过DBLINK直接执行;东区2区向东区3区通过生成SQL文件到D:mptmsudataDNLTBDIR目录下;触发器的每次 *** 作都记录到表格DNL_TBJL(id, tables,czlx, SQL, TIME, BAK)内。
通过Windows系统自带的计划任务执行下面批处理实现数据入库
1)三区区数据库服务器新建表DNL_SQLJL。
三区数据库中执行下列语句:
2)三区区数据库服务器新建计划任务定期执行DQ3QRK-ZXWJbat批处理。
3)DQ3QRK-ZXWJbat批处理调用DQ3QRK-ZXSQLbat来执行入库 *** 作。
DQ3QRK-ZXWJbat语句如下:
DQ3QRK-ZXSQLbat语句如下:
以上就是关于多数据库之间同步数据怎么做全部的内容,包括:多数据库之间同步数据怎么做、有2个数据库,怎么实现数据同步、数据库同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)