当前位置:文档之家› 数据库同步

数据库同步

数据库同步
数据库同步

一个是远程SQLServer数据库,一个是本地SQLServer数据库

回答

验证码:换一张

登录并发表取消

回答

dhy40022008-11-18 10:15:22

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

准备工作:

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

我的电脑--D:\ 新建一个目录,名为: PUB

--右键这个新建的目录

--属性--共享

--选择"共享该文件夹"(另外还可以通过"权限"按纽来设置具体的用户权限

--确定

2.设置SQL代理(SQLSERVERAGENT)服务的启动用户

开始--程序--管理工具--服务

--右键SQLSERVERAGENT

--属性--登陆--选择"此账户"

--输入".\Administrator",或者选择其他系统管理员

--"密码"中输入该用户的密码

3.设置SQL Server身份验证模式,解决连接时的权限问题

企业管理器

--右键SQL实例--属性

--安全性--身份验证

--选择"SQL Server 和Windows"

--确定

4.在发布服务器和订阅服务器上互相注册

企业管理器

--右键SQL Server组

--新建SQL Server注册...

--下一步--可用的服务器中,输入你要注册的远程服务器名--添加

--下一步--连接使用,选择第二个"SQL Server身份验证"

--下一步--输入用户名和密码

--下一步--选择SQL Server组,也可以创建一个新组

--下一步--完成

lixiaohui11520012008-11-20 10:29:07

假设你的远程SQLServer数据库和你的本地是局域网,不知道sqlServer里面有没有dblin k(oracle中有,oracle就是用DBLink实现数据库同步的)。

ai000052009-10-04 08:05:07

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/XIAO WANGZI_database_database下面看是不是有一些以时间做为文件名的文件夹差不多一分中就产生一个。要是你还不信的话就打开你的数据库看在订阅的服务器的指定订阅数据库下看是不是看到了你刚才所发布的表—

ai000012009-10-05 12:06:08

Database Link 翻译过来就是数据库链接。

创建的语法很简单,建议还是记住sql的创建方式。

一,关于文档

关于这个比较详细的可以参考oracle 文档

<>, B14231-02。前者是书名,后者是文件Pdf文件名。在该书中的第29章对database link 有比较详细的介绍,从第5节到第16节都是。

29-6 What are database link ? 什么是数据库链接?

29-7 What are shared database link? 什么是共享数据库链接?

29-8 Why use database link ? 为什么使用数据库链接?

Global Database Names in Database links 数据库链接中的全局数据库名称

29-9 Names for dabase links 数据库链接的名称

29-10 Types of Database Links 数据库链接的种类

29-11 Users of Database Links 数据库链接的用户

29-13 Creation of Database Links :Examples 创建数据库链接的例子

29-14 Schema objects and Database Links 模式中的对象和数据库链接的关系29-15 Database Link Restrictions 数据库链接的限制

二,对文档的详细解释

2.1 什么是数据链接?这个就不用说了,值得提的就是,它们是单向的作用的。

2.2 什么是共享数据库链接?关于这个描述还是比较复杂的,这是oracle文档为什么老是这么多的缘故之一,

A:共享数据库链接是本地服务器进程和远程数据库之间的连接,但是多个的客户端进程可以共享它。

B:本地的服务器和远端的服务器可以是各种的模式(shared server or decicated s erver),共有四种组合

C:不同的用户可以通过一个网络连接来访问远程的模式对象。

D:一个共享的数据库链接可以在不同的会话间共享。而非共享的数据库连接不能。

E:如果服务器是共享型配置的,共享连接是直接在共享服务器上的一个进程上建立的。而非共享类型的

数据库链接必须通过分发器来创建,需要分发器的上下文切换,数据也必须通过这个分发器。

2.3 为什么用数据库链接?这个是想当然的,您不必要成为远程数据库的用户就可以访问远程数据库的对象。

2.4 数据库链接中的全局数据命名。关于这个则必须了解每个数据库的全局命名。

一个数据库的全局数据库命名,在创建的时候已经建立起来了,它是被初始化参数DOMAIN_NAME,DB_NAME. 最终它们的组成方式和一般的站点的组成是一样的,越大的放在越后面。

譬如某个数据库的名称可以使https://www.doczj.com/doc/1f17672939.html,

2.5 数据库链接的命名方式。

这是和初始化参数global_names密切相关的,如果是TRUE,则本地的DBLINK必须和远程的服务器的

GLOBAL NAME同名,否则就可以是任意的。

ORACLE 建议您使用全局的命名方式,因为许多的特性都要求使用这个,包括数据的复制。

2.6 类型

分为PRIVATE ,PUBLIC,和GLOBAL 。

PRIVATE只能在某个数据库中的某个模式下创建,并且也只能在这个模式下使用。用户是特定的。

PUBLIC可以被一个数据库中的不同用户使用,创建者必须是PUBLIC.

GLOBAL可以被一个ORACLE网络中的所有服务器使用,但是这个网络中必须有目录服务器(DIRECTORY

SERVER),而这个数据库链接就是被自动创建和存储在目录服务器上的。创建者必须是目录服务器上的

PUBLIC.

2.7 链接中的用户。指的是链接串中用户。

譬如Create database link SP connect to User using 'Sp';

这个connect to后面连接的用户可以是当前连接的用户(不输入用户(,也可以是关键字current_user ,

也可以指定了用户的。

关于用户的内容有许多,具体的看pdf.

2.8 模式对象和链接的关系。使用schema.object@global_database_name来访问远程的数据对象。

2.9 限制或者局限。

。Grant privileges on remote objects 不能分配权限

■ Execute DESCRIBE operations on some remote objects. The following remot e

objects, however, do support DESCRIBE operations:

–Tables

–Views

–Procedures

–Functions

不能对表格,视图,过程和函数使用desc操作

■ Analyze remote objects 不能分析远程对象

■ Define or enforce referential integrity 不能定义或者强制关系一致性

■ Grant roles to users in a remote database 不能给非远程用户赋予角色

■ Obtain nondefault roles on a remote database. F or example, if jane connects

to

the local database and executes a stored procedure that uses a fixed user link connecting as scott, jane receives scott's default roles on the remote database.

Jane cannot issue SET ROLE to obtain a nondefault role. 不能获得远程服务器上的非默认对象,当

用指定链接的时候。

■ Execute hash query joins that use shared server connections 不能执行哈希查询的连接当使用共享服务区器上的连接的时候。

■ Use a current user link without authentication through SSL, password, or NT native authentication 必须用SSL或者NT的方式进行验证。

2.10 关于访问远程对象的权限

这个取决与connect to 之后的用户的权限。一般我们都用FIXED的方式。

CREATE DATABASE LINK STU CONNECT TO USER IDENTIFIED BY PWD USING 'CONNSTR';

三,对SQL的限制

关于这个,没有太多的描述,首先一般赋予SQL的限制都必须遵循,然后才是关于DB LINK的。

四,附录关于GLOBAL_NAME的处理

SQL> select * from global_name;

GLOBAL_NAME

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

https://www.doczj.com/doc/1f17672939.html,

SQL> alter database rename global_name to https://www.doczj.com/doc/1f17672939.html,/

Database altered

SQL> SELECT * FROM GLOBAL_NAME;

GLOBAL_NAME

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

https://www.doczj.com/doc/1f17672939.html,

查看系统的GLOBA_NAMES设置方法之一

SQL> show parameters GLOBAL_NAMES;

NAME TYPE VALUE

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

global_names boolean FALSE

查看系统的GLOBA_NAMES设置方法之二

SQL> select name,value from v$parameter where name in ('global_names','db_ domain');

NAME VALUE

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

db_domain

global_names FALSE

修改默认的global_names布尔值

alter system set global_names=false;

alter system set global_names=true;

wxa7592009-10-05 12:18:04

我不是很理解你所说的话,但大致就以下几种情况:

1、本机器上的不同数据库之间的表,并目标数据库中不存在此表名称。那么这样做:

在选择要倒出的数据库的表上(数据库上都可以)右键\所有任务\倒出数据\下一步\下一步.在这里的对话框中的下方有一个选择目标数据库的下拉菜单,它包含了所有本机器的数据库系统,选择你要的数据库.然后直接下一步直到运行为止.

如果目标数据库中有要倒入的表名称,方法一是修改目标表名,二是直接倒,方法一是看具体应用,方法而是在原表数据基础上进行追加数据,不过注意:若主外键冲突或某些约束情况,此表倒入操作将不能倒入任何一条数据。若多表的同时倒入,出现上述情况,出现冲突的表将不能倒入任何数据,未出现冲突的可以正常倒入。

2、本两个机器之间的数据转移,那么前提是目标机器的数据库系统在本机器得到了注册的(关于注册这里就不多说了,任何书籍上都有),在操作中大部分和上述工作一样,就在选择数据库的对话框中间有一个选择服务器,再此输入目标服务器的服务器号码,并使用

SQL Server用户名和密码(这里的用户名和密码是目标服务器的)。若目标服务器中不存在自己想要的数据库名称,可以在数据库选择的下拉列表中选择―新建‖,建立一个目标数据库就可以执行下面的操作了。

3、不同数据源之间的操作,操作同上,不过要在目标的对话框中上方―目的‖下拉列表中选择一个数据源(比如:ACCESS、ORACLE),如果没有这个数据源就可以建立一个新的数据源不测试是否通过。其他操作同上。

4、向EXCEL、txt等倒出数据,其实它也归属于第3种数据转移,只不过这里区别大所以独立出来,这些适合于一些答应报表的直接生成。操作方法和3相同。不过不同数据源之间的数据转移很多可能是不可以完全成功的(此情况出现在有多个表并且它们之间有很多主外键关系的情况),主要是因为SQL Server在处理倒入倒出的时候没有按照主次关系,因为只考虑数据转移,然而,在数据进入

SQL Server 的时候就有部分表的数据进入就并不一定按照主次关系进入,导致他们的倒入违反主外键约束。像这样的情况我一般倒两次,第一次至少主键表可以进入,第二次,主键表的信息冲突就不改变信息了,关系表的信息自然也进去了,但这样的情况不是对于复杂的关系模式,如果关系模式很复杂,就没有那么简单了。我一般有备份或程序来实现转移

oracle数据库实时同步技术解决方案研究

oracle数据库实时同步技术解决方案研究 近幾年,容灾及高可用已经成为信息数据中心建设的热门课题。本文在对oracle数据库同步技术的初步研究的基础上,根据大庆油田数据中心的实际情况,提出以goldengate和dataguard这两种技术为主的同步解决方案。通过对两种技术的对比研究,根据不同的应用需求选择适合的技术,强调了数据实时同步作为数据库容灾的重要手段,通过实时的数据同步提供高可用的业务分离的应用环境,大大降低主库的压力,保证数据的安全性和高可用性。 标签:数据库同步;goldengate;dataguard;容灾;高可用 一、数据库同步技术 数据库同步是在两个以上的数据库之间进行数据交换,以使得任何一个数据库的改变,会以同样的方式出现在另一个数据库里。数据库同步可以是单向的,也可以是双向的。单向同步也叫主从同步。只有主数据库的改变可以被复制到从数据库里去,从数据库是被动的。双向同步顾名思义就是任何一端的数据变化都要同步到另一端,因为这种同步对应用的要求很高,成功的案例并不多,现实中,应用最为广泛的是单向同步。使用数据库同步技术,用户可以将一份数据发布到多台服务器上,也可以从多台服务器到一台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。同步技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。 二、Oracle提供的数据同步方案 从实现机制来分的话,Oracle的数据同步主要分为两大类: (一)运用Oracle数据库内部的机制来实现 1、触发器/Job+DBLINK的方式,可同步和定时刷新。 这种方式主要用于单个数据表,数据量较小的情况。这种方式对网络要求较高,如果两个数据库之间的网络中断,那么主库那边就会报错,而且如果表数多或数据量大的话对数据库性能影响很大,所以这种方式现在很少被采用了。 2、物化视图刷新的方式,有增量刷新和完全刷新两种模式,定时刷新。 物化视图的方式的缺点与触发器方式的缺点基本一致,所以要慎重使用。 3、高级复制,分为多主复制和物化视图复制两种模式。其中多主复制能进行双向同步复制和异步复制,物化视图用于单向复制,定时刷新,高级复制也是基于触发器(trigger)原理,因此高级复制只能到表一级,而且只能是单向复制,否则会冲突,高级复制同样对数据库性能影响很大。

PI 实时数据库系统 详细介绍

PI 实时数据库系统详细介绍 PI.实时数据库系统---详细介绍2010-08-20 11:50PI实时数据库系统(Plant Information System)是由美国OSI Software公司开发的基于C/S、 B/S结构的商品化软件应用平台,是工厂底层控制网络与上层治理信息系统连 接的桥梁,PI在工厂信息集成中扮演着特别和重要的角色。 PI实时数据库系统适用于电力、石油、化工、冶金、造纸、制药、水处理、食品饮料、通讯等各种生产流程企业的生产过程优化。 PI是全世界装机量最多的实时数据库系统,已成为OSI公司的标志产品。 美国OSI Software公司创建于1980年,总部设在加州San Leandro。在休斯顿、西雅图、克里夫兰设有分部,在美国的IL、FL、MO、MA、NY、NC等州设有办事处,在澳大利亚、新西兰、德国、新加坡设有办事处,全球范围有超过50 多个分销商,智网科技(杭州)有限公司是OSI Software公司在中国的指定分销商。同时,智网科技还利用自身的技术优势,在PI系统的平台上,二次开发了诸多的电厂应用子系统,使用户十分方便地进行电厂生产过程优化及安全运行 治理。 OSI Software公司与Microsoft、SAP、KBC等闻名公司保持着良好的合作 关系,PI的客户端产品中底层完全采用微软Windows技术,同时也将用户界面Windows化。迄今为止,PI的客户端模块以功能强盛、灵活、易用的特点在业 界一直保持着领先的地位。OSI Software公司还与世界上几乎所有的DCS/PLC 厂商保持着良好合作关系,这就使得PI与DCS/PLC的数据接口建立在坚实的基础之上。 PI实时数据库系统概述世界上众多的企业都熟悉到生产过程的实时数据与 历史数据是企业最有价值的信息财富,是整个企业信息系统的核心和基础。但是,假如生产现场缺乏数据,数据不完整或者不一致,以及历史数据丢失,都 将导致管理者对工厂的现状无法判断,给管理带来困难,严峻时甚至导致工厂 停产,发生事故等等。二十年来,OSI Software公司一直致力于实时数据库产 品的开发工作,使得PI系统成为世界上最优秀的实时数据库产品。

数据库与数据库进行对接SQL同步不同数据库的表

//192.168.2.9中dbo.test_hr表中的數據拋入192.168.3.127中dbo.test insert into OA_TO_HR.FlowMaster.dbo.test(id,a,b,c,d) (select * from dbo.test_hr) //在192.168.2.9中刪除192.168.3.127中dbo.test表中的數據 delete from OA_TO_HR.FlowMaster.dbo.test //在192.168.2.9中查詢192.168.3.127中dbo.test表中的數據 select * from OA_TO_HR.FlowMaster.dbo.test //192.168.3.127中dbo.test表中的數據拋入192.168.2.9中dbo.test_hr insert into OA_HR.ESHR.dbo.test_hr(id,a,b,c,d) (select * from dbo.test) //在192.168.3.127中刪除192.168.2.9中dbo.test表中的數據 delete from OA_HR.ESHR.dbo.test_hr //在192.168.3.127中查詢192.168.2.9中dbo.test表中的數據 select * from OA_HR.ESHR.dbo.test_hr 1、建立數據庫鏈接 MSDTC 服務需開啟 組件服務中的安全配置頁中的網絡訪問勾選 2、新建作業 現方式為將2.9服務器中表i_test數據寫入到2.34 ivan_t表中 insert into srv_link.rldata.dbo.ivan_t(uid,uname) (select*from dbo.i_test) select*from srv_link.rldata.dbo.ivan_t delete from srv_link.rldata.dbo.ivan_t

MySQL数据双向同步解决方案

1.mysql数据同步实现原理 即读写操作在两台服务器上进行,每台服务器即主也是从。当其中的任何一台服务器收到操作请求时,其进行相应的数据变化,并把变化的数据复制到另一台服务器中。 2.配置服务器master 初始服务器 通过mysql工具连接服务器master后,新建两个数据库audit,idm。导入初始化数据库文件,完成数据库的初始化 给用户授权 从开始菜单中打开mysql5的命令行,输入正确的密码,进入mysql控制台命令行模式后,输入如下命令: #授权来自192.168.0.189的backup用户拥有对所有库的复制数据的权限,该用户的密码设为123456 GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.189' IDENTIFIED BY '123456'; #刷新权限设置 FLUSH PRIVILEGES ; 修改配置文件 修改主目录中的my.inf文件,在mysqld下面加入如下内容 server-id = 1 log-bin=mysql-bin binlog-do-db = audit binlog-do-db = idm binlog-ignore-db = information_schema binlog-ignore-db = mysql binlog-ignore-db = test master-host = 192.168.0.189 master-user = backup master-password = 123456 master-port = 3306

replicate-do-db = audit replicate-do-db = idm master-connect-retry = 60 3.配置服务器slave 初始服务器 通过mysql工具连接服务器ha002后,新建两个数据库audit,idm。导入初始化数据库文件,完成数据库的初始化 给用户授权 从开始菜单中打开mysql5的命令行,输入正确的密码,进入mysql控制台命令行模式后,输入如下命令: #授权来自192.168.0.188的backup用户拥有对所有库的复制数据的权限,该用户的密码设为123456 GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.0.188' IDENTIFIED BY '123456'; #刷新权限设置 FLUSH PRIVILEGES ; 修改配置文件 修改主目录中的my.inf文件,在mysqld下面加入如下内容 server-id = 2 master-host = 192.168.0.188 master-user = backup master-password = 123456 master-port = 3306 relicate-do-db = audit replicate-do-db = idm master-connect-retry = 60 log-bin=mysql-bin binlog-do-db = audit binlog-do-db = idm binlog-ignore-db = information_schema

debug遇到的问题

关于CLOSE BY CLIENT STACK TRACE 程序正常运行,数据库连接可以获取,一些列操作都可以实现,可在debug信息中总会一段时间就报如下错误: https://www.doczj.com/doc/1f17672939.html,ng.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooled Connection.java:566) at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooled Connection.java:234) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledCon nectionResourcePoolManager.destroyResource(C3P0PooledConnecti onPool.java:470) at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResource Task.run(BasicResourcePool.java:964) at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThrea d.run(ThreadPoolAsynchronousRunner.java:547) 跟踪错误代码,发现是c3p0内部的异常输出(红色部分)

C3p0相关源码: com.mchange.v2.c3p0.impl. NewPooledConnection public synchronized void close() throws SQLException { close( null ); } private void close( Throwable cause ) throws SQLException { close( cause, false ); } private void close( Throwable cause, boolean forced ) throws SQLException { 。。。。。。。。。。。。。。。。 if ( cause == null ) { this .invalidatingException = NORMAL_CLOSE_PLACEHOLDER; if ( Debug.DEBUG&& logger.isLoggable( MLevel.FINEST ) ) logger.log( MLevel.FINEST, this + " closed by a client.", new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE") ); logCloseExceptions( null , closeExceptions ); if (closeExceptions.size() > 0) throw new SQLException("Some resources failed to close properly while closing " + this );

Oracle数据库同步技术

基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年 刚收购的一款叫做GoldenGate的数据同步软件。第三方厂商的数据同步技术有Quest公司的SharePlex 和DSG的RealSync。下面对这些技术逐一进行介绍。 一、DataGuard数据同步技术 DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。DataGuard 提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式 和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。 最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的 数据保护等级。在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日 志写到目标数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。 最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库 的备用日志文件(standby redo log),事务才能提交。这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。这也是目前市场上唯一的一种可确保数据零丢失的数据同步解决方案。 最大可用模式:这种模式在不牺牲源数据库可用性的条件下提供了尽可能高的数据保护等级。与最 大保护模式一样,日志数据需同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交,与最大保护模式不同的是,如果日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库不会被关闭,而是运行在最大性能模式下,待故障解决并将延迟的日志成功应用在目标库上以后,源数据库将会自动回到最大可用模式下。 根据在目标库上日志应用(Log Apply)方式的不同,DataGuard可分为Physical Standby(Redo Apply)和Logical Standby(SQL Apply)两种。 Physical Standby数据库,在这种方式下,目标库通过介质恢复的方式保持与源数据库同步,这种方 式支持任何类型的数据对象和数据类型,一些对数据库物理结构的操作如数据文件的添加,删除等也可支持。如果需要,Physical Standby数据库可以只读方式打开,用于报表查询、数据校验等操作,待这些操 作完成后再将数据库置于日志应用模式下。 Logical Standby数据库,在这种方式下,目标库处于打开状态,通过LogMiner挖掘从源数据库传 输过来的日志,构造成SQL语句,然后在目标库上执行这些SQL,使之与源数据库保持同步。由于数据 库处于打开状态,因此可以在SQL Apply更新数据库的同时将原来在源数据库上执行的一些查询、报表等操作放到目标库上来执行,以减轻源数据库的压力,提高其性能。 DataGuard数据同步技术有以下优势: 1)Oracle数据库自身内置的功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不 需要另外付费; 2)配置管理较简单,不需要熟悉其他第三方的软件产品; 3)Physical Standby数据库支持任何类型的数据对象和数据类型;

数据库实时同步技术解决方案

数据库实时同步技术解决方案 一、前言 随着企业的不断发展,企业信息化的不断深入,企业内部存在着各种各样的异构软、硬件平台,形成了分布式异构数据源。当企业各应用系统间需要进行数据交流时,其效率及准确性、及时性必然受到影响。为了便于信息资源的统一管理及综合利用,保障各业务部门的业务需求及协调工作,常常涉及到相关数据库数据实时同步处理。基于数据库的各类应用系统层出不穷,可能涉及到包括ACCESS、SQLSERVER、ORACLE、DB2、MYSQL等数据库。目前国内外几家大型的数据库厂商提出的异构数据库复制方案主要有:Oracle的透明网关技术,IBM的CCD表(一致变化数据表)方案,微软公司的出版者/订阅等方案。但由于上述系统致力于解决异构数据库间复杂的交互操作,过于大而全而且费用较高,并不符合一些中小企业的实际需求。 本文结合企业的实际应用实践经验,根据不同的应用类型,给出了相应的数据库实时同步应用的具体解决方案,主要包括: (1) SQLSERVER 到SQLSERVER 同步方案 (2) ORACLE 到SQLSERVER 同步方案 (3) ACCESS 到SQLSERVER/ORACLE 同步方案

二、异构数据库 异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库的异构性主要体现在以下几个方面: 1、计算机体系结构的异构 各数据库可以分别运行在大型机、小型机、工作站、PC嵌入式系统中。 2、基础操作系统的异构 各个数据库系统的基础操作系统可以是Unix、Windows NT、Linux等。 3、DMBS本身的异构 可以是同为关系型数据库系统的Oracle、SQL Server等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库共同组成一个异构数据库系统。 三、数据库同步技术

全球及中国实时数据库系统市场分析

全球及中国实时数据库系统市场分析来源:计世网 一、2008年全球实时数据库系统市场规模突破5亿美元 上世纪八十年代,随着国外众多针对实时领域和数据领域进行数据融合的研究群体的显现,实时数据库那个新兴研究领域开始浮出水面。到上世纪九十年代,国外实时数据库开始大规模应用。随着应用的持续推广,国外实时数据库技术得到了持续的提升,显现了众多开发实时数据库系统的厂家,如美国OSI公司、美国INSTEP公司、GE-Fanuc公司、美国Won derware公司等,事实上时数据库产品广泛应用在电力、钢铁、化工等众多领域。到21世纪初期,实时数据库市场进展也大致趋于平稳。据美国软件与信息产业协会与汉鼎咨询的联合统计,以后5-10年间全球实时数据库的总体潜在市场容量为100亿美元,随着全世界越来越认识到实时数据库在工业及其他领域信息化建设中发挥的重要作用,目前全世界实时数据库市场规模也在加大,2008年的市场规模为5亿美元。 在上世纪九十年代,我国实时数据库市场一直被国外品牌所垄断,国内没有自主品牌的实时数据库产品。随着国家鼓舞进展软件行业政策的出台,以及国内企业对实时数据库系统的重视度持续提升、研究持续深入,国内实时数据库产品产生。到目前为止,国内实时数据库在理论和实践上均取得了专门大的进展,部分产品差不多可与进口品牌相比美。然而作为一个通用的产品开发和应用平台,国内可用的杰出的产品还不多,组态软件厂商提供的低端实时数据库仍旧大量充斥市场,中高端品牌比较有代表性的有上海麦杰科技openPlant、三维力控pSpace、中科启信Agilor等,高端市场目前仍旧被国外产品如PI、EDNA等所占据。 二、2008年中国实时数据库系统市场规模2.64亿元,石化、电力、钢铁三大领域占据绝对份额 依据中国机电一体化协会工业实时数据库分会与汉鼎咨询的联合统计,2008年,国内实时数据库销售总量近500套,当年市场销售额2.64亿元,估量2009年达到611套,较上年增长24.6%。以后4-5年我国实时数据库系统的总体潜在市场规模在17-25亿元。

通过触发器实现数据库的即时同步

通过触发器实现数据库的即时同步 --即时同步两个表的实例: --测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test --创建测试表,不能用标识列做主键,因为不能进行正常更新 --在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器 if exists (select * from dbo.sysobjects where id = object_id(N'[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [test] create table test(id int not null constraint PK_test primary key ,name varchar(10)) go --创建同步的触发器 create trigger t_test on test for insert,update,delete as set XACT_ABORT on --启动远程服务器的MSDTC服务 exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output --启动本机的MSDTC服务 exec master..xp_cmdshell 'net start msdtc',no_output --进行分布事务处理,如果表用标识列做主键,用下面的方法 BEGIN DISTRIBUTED TRANSACTION delete from openrowset('sqloledb','xz';'sa';'',test.dbo.test) where id in(select id from deleted) insert into openrowset('sqloledb','xz';'sa';'',test.dbo.test) select * from inserted commit tran go --插入数据测试 insert into test select 1,'aa' union all select 2,'bb' union all select 3,'c' union all select 4,'dd' union all select 5,'ab' union all select 6,'bc' union all select 7,'ddd' --删除数据测试 delete from test where id in(1,4,6)

MYSQL四种备份方法总结

MYSQL四种备份方法总结 Mysql数据库备份主要有4种方法: 1、mysqldump 2、直接拷贝(cp、tar,gzip,cpio) 3、mysqlhotcopy 4、同步复制 mysqldump生成能够移植到其它机器的文本文件,缺省地,文件内容包含创建正在倾倒的表的CREATE语句和包含表中行数据的INSERT语句。也就是说,mysqldump产生的输出可在以后用作mysql的输入来重建数据库。mysqldump比直接拷贝要慢些。 使用直接拷贝,如果正在备份的表正被读写就容易导致表损坏,而且不建议对isam表使用直接拷贝的方法来备份,因为ISAM表只能在相似的硬件结构的机器上拷贝。 1、mysqldump备份: 使用方法:mysqldump [OPTIONS] database [tables] 输出文件的开头看起来象这样: # MySQL Dump 6.0 # # Host: localhost Database: samp_db #--------------------------------------- # Server version 3.23.2-alpha-log # # Table structure for table 'absence' # CREATE TABLE absence( student_id int(10) unsigned DEFAULT '0' NOT NULL, date date DEFAULT '0000-00-00' NOT NULL, PRIMARY KEY (student_id,date) ); # # Dumping data for table 'absence' # INSERT INTO absence VALUES (3,'1999-09-03'); INSERT INTO absence VALUES (5,'1999-09-03'); INSERT INTO absence VALUES (10,'1999-09-08'); ...... 文件剩下的部分有更多的INSERT和CREATE TABLE语句组成。例: %mysqldump samp_db >/opt/mysqldatabak/samp_db.2006-5-15 %mysqldump samp_db | gzip >/usr/archives/mysql/samp_db.1999-10-02.gz #产生压缩备份 %mysqldump samp_db student score event absence >grapbook.sql #备份数据库的某些表 %mysqladmin -h https://www.doczj.com/doc/1f17672939.html, create samp_db %mysqldump samp_db | mysql -h https://www.doczj.com/doc/1f17672939.html, samp_db #直接恢复到另一个服务器上使用--add-drop-table选项告诉服务器将DROP TABLE IF EXISTS语句写入备份文件,这样当我们以后用来恢复数据库时,如果表已经存在,你

vs2010连接mysql数据库方法

Vs2010连接Mysql数据库方法 下载MySQL 5.5.13 正式版:https://www.doczj.com/doc/1f17672939.html,/html/361.html ------------------------------------------- 操作系统:winxp-32bit 数据库:MySQL Server 5.5 (安装路径:D:\Program Files\MySQL\MySQL Server 5.5) IDE: Microsoft Visual Studio 2010 untimate/Professional (以上东西都是完整安装的) ------------------------------------------- 一、VC设置 1、新建一个工程,随便写一个helloworld,目的是就是让工程下的“debug”文件夹出现 2、把D:\Program Files\MySQL\MySQL Server 5.5\lib下面的libmysql.dll复制到工程的debug文件夹里面 3、接下来要设置一些引用文件的环境变量,首先,点击项目->属性->vc++目录。 然后“include目录”那把“D:\Program Files\MySQL\MySQL Server 5.5\include”给加进来 再然后“lib目录”那里把“D:\Program Files\MySQL\MySQL Server 5.5\lib”也一起加进来 VC6.0设置: (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。(我的是D:\Program Files\MySQL\MySQL Server 5.5\include)。 (2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。Lib目录下有debug目录,选debug。(我的是D:\Program Files\MySQL\MySQL Server 5.5\lib\debug)。 4、然后在项目->属性窗口下点击:连接器->输入->附加依赖项,把"libmysql.lib"写进去VC6.0设置:在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。 使用VC++编译时再添加以下项: 5、在stdafx.h里面添加如下的内容: #include "mysql.h" #include "winsock.h" // 如果编译出错,则把该行放到#include "mysql.h"之前#pragma comment(lib,"libmySQL.lib") // 如果在附加依赖项里已增加,则就不要添加了 二、数据库的相关操作 1、打开“开始->所有程序->MySQL->MySQL Server 5.5->MySQL Command Line Client.exe”,如果有密码就输入密码,没有设置密码就直接按回车,会提示服务器启动成功。

数据库同步

一个是远程SQLServer数据库,一个是本地SQLServer数据库 回答 验证码:换一张 登录并发表取消 回答 dhy40022008-11-18 10:15:22 下介绍实现复制的步骤。(以快照复制为例) 准备工作: 1.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作: 我的电脑--D:\ 新建一个目录,名为: PUB --右键这个新建的目录 --属性--共享 --选择"共享该文件夹"(另外还可以通过"权限"按纽来设置具体的用户权限 --确定 2.设置SQL代理(SQLSERVERAGENT)服务的启动用户 开始--程序--管理工具--服务 --右键SQLSERVERAGENT --属性--登陆--选择"此账户" --输入".\Administrator",或者选择其他系统管理员 --"密码"中输入该用户的密码 3.设置SQL Server身份验证模式,解决连接时的权限问题 企业管理器 --右键SQL实例--属性

--安全性--身份验证 --选择"SQL Server 和Windows" --确定 4.在发布服务器和订阅服务器上互相注册 企业管理器 --右键SQL Server组 --新建SQL Server注册... --下一步--可用的服务器中,输入你要注册的远程服务器名--添加 --下一步--连接使用,选择第二个"SQL Server身份验证" --下一步--输入用户名和密码 --下一步--选择SQL Server组,也可以创建一个新组 --下一步--完成 lixiaohui11520012008-11-20 10:29:07 假设你的远程SQLServer数据库和你的本地是局域网,不知道sqlServer里面有没有dblin k(oracle中有,oracle就是用DBLink实现数据库同步的)。 ai000052009-10-04 08:05:07 MSSQL数据同步利用数据库复制技术实现数据同步更新(来自网络,也是非常完美的教程) 复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。 SQL复制的基本元素包括 出版服务器、订阅服务器、分发服务器、出版物、文章 SQL复制的工作原理 SQLSERVER主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器 SQLSERVER复制技术类型 SQLSERVER提供了三种复制技术,分别是: 1、快照复制(呆会我们就使用这个) 2、事务复制 3、合并复制

分布式数据库数据同步技术研究

分布式数据库数据同步技术研究 由于分析式数据库同步技术应用越来越广泛,因此相关的研究也备受人们关注。本文主要是从分布式数据库同步技术的流程,以及数据同步的方法来对其进行阐述,以供大家参考。 标签:分布式数据库同步技术研究 一、前言 经济逐步发展,企业的数量和规模都在不断增多,每个企业在各地都有自己的子公司,为了能够使不同的公司运用相同的数据,就要采取数据库同步技术来解决。但是,因为其操作复杂,对网络以及系统的依赖性比较高,其运用时经常出现各种问题。 二、分布式数据库同步技术概述 1.分布式数据库的定义以及特征 分布式数据库又称DDB,其是Distributed Database的英文简称,它是一个数据库的集合,该集合包括计算机网络当中的每一个场地以及节点上面的数据库。分布式数据库有两大特点,即分布性和逻辑的协调性相统一。分布性是指所有的数据不是仅仅存放在单个的计算机的储存器上,而是根据整体的需要,将数据进行划分,形成具有一定结构的数据子集,然后将其储存在各个场所中;逻辑协调性就是指分布在不同场所的数据子集,其相互之间互相制约,使其形成一个逻辑上的整体。 2.数据同步技术 数据同步技术利用的是分布式数据库,使数据库中位于不同场所的数据实现同步更新,从而实现数据库的分布式处理应用。该项技术可以大大地提高用户使用和处理数据的透明程度,使每一个站点的自治性也有所提高。 三、技术同步的过程 根据数据同步流程,按照典型的三步数据同步过程,采用基于XML与.NET Removing的分布式数据同步模型,该数据同步模型采用松散一致性的单向数据同步方式,同步时由源端以推式方式进行。数据同步系统由三个部分组成,分别是更新差异数据模块、捕获差异数据模块以及分发差异数据。 该模型主要适用的是具有触发器功能的数据库管理系统,其是在https://www.doczj.com/doc/1f17672939.html,平台上面构建而成的,它通过触发器来讲源数据库中的数据变化情况进行捕获,其数据变化的差异称作为差异数据,差异数据会在源端进行储存,

mysql数据库同步跳过临时错误

mysql数据库同步跳过临时错误 slave stop; set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; slave start; 几个跟热备有关的mysql命令:(需要在mysql命令行界面或query ) stop slave #停止同步 start slave #开始同步,从日志终止的位置开始更新。 show slave status #查看同步状态 SET SQL_LOG_BIN=0|1 #主机端运行,需要super权限,用来开停日志,随意开停,会造成主机从机数据不一致,造成错误 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=n # 客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。 RESET MASTER #主机端运行,清除所有的日志,这条命令就是原来的FLUSH MASTER RESET SLAVE #从机运行,清除日志同步位置标志,并重新生成https://www.doczj.com/doc/1f17672939.html, 虽然重新生成了https://www.doczj.com/doc/1f17672939.html,,但是并不起用,最好,将从机的mysql进程重启一下,LOAD TABLE tblname FROM MASTER #从机运行,从主机端重读指定的表的数据,每次只能读取一个,受timeout时间限制,需要调整timeout时间。执行这个命令需要同步账号有 reload 和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值 LOAD DATA FROM MASTER #从机执行,从主机端重新读入所有的数据。执行这个命令需要同步账号有reload和super权限。以及对相应的库有select权限。如果表比较大,要增加net_read_timeout 和 net_write_timeout的值 CHANGE MASTER TO master_def_list #在线改变一些主机设置,多个用逗号间隔,比如CHANGE MASTER TO MASTER_HOST='https://www.doczj.com/doc/1f17672939.html,', MASTER_USER='replication', MASTER_PASSWORD='bigs3cret' MASTER_POS_WAIT() #从机运行 SHOW MASTER STATUS #主机运行,看日志导出信息 SHOW SLAVE HOSTS #主机运行,看连入的从机的情况。 SHOW SLAVE STATUS (slave) SHOW MASTER LOGS (master) SHOW BINLOG EVENTS [ IN 'logname' ] [ FROM pos ] [ LIMIT [offset,] rows ] PURGE [MASTER] LOGS TO 'logname' ; PURGE [MASTER] LOGS BEFORE 'date'

MySQL配置文件详解

./configure --prefix=/usr/local/mysql \ --without-debug \ #去除debug模式. --enable-thread-safe-client \ #以线程方式编译客户端. --with-pthread \ #强制使用pthread线程库编译. --enable-assembler \ #允许使用汇编模式. --enable-profiling \ #Build a version with query profiling code (https://www.doczj.com/doc/1f17672939.html,munity-features) --with-mysqld-ldflags=-all-static \ #静态编译mysqld的额外link参数. --with-client-ldflags=-all-static \ #静态编译client的额外link参数. --with-charset=utf8 \ #默认字符utf8. --with-extra-charsets=all \ #支持所有的语言字符. --with-innodb \ #innodb数据引擎. --with-plugins=innobase \ --with-plugins=heap \ #内存数据引擎. --with-mysqld-user=mysql \ #mysql安装使用的帐号 --without-embedded-server \ #去除安装embedded-server. --with-server-suffix=-community \ #社区形式安装. --with-unix-socket-path=/tmp/mysql.sock MYSQl启动的一般设置: /etc/https://www.doczj.com/doc/1f17672939.html,f基本部设参数设置. # back_log 是操作系统在监听队列中所能保持的连接数, # 队列保存了在MySQL连接管理器线程处理之前的连接. # 如果你有非常高的连接率并且出现"connection refused" 报错, # 你就应该增加此处的值. # 检查你的操作系统文档来获取这个变量的最大值. # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果 # 在MYSQL的连接请求等待队列中允许存放的最大连接请求数. defautl=50,最大65535,根据os对网络监听队列的情况来设置. back_log = 20000 # MySQL 服务所允许的同时会话数的上限 # 其中一个连接将被SUPER权限保留作为管理员登录. # 即便已经达到了连接数的上限. # 整个Mysql允许的最大连接数.这个参数会影响mysql的应用并发处理能力.有些资料上提到 500-800,以我们的机子来说单个mysql实例设置10000应该是没有问题的。如果还需可能需要第三方软件解决php连接池的问题,提高还需要连接池. max_connections = 10000 # 每个客户端连接最大的错误允许数量,如果达到了此限制. # 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启 # 非法的密码以及其他在链接时的错误会增加此值. # 查看 "Aborted_connects" 状态来获取全局计数器. max_connect_errors = 10

实时数据库系统选型

实时数据库系统选型 目前国内外实时数据库分为四种类型:一种是国外传统实时数据库、国外组态软件供应商实时数据库、国内传统实时数据库和国内组态软件供应商实时数据库,下面分别介绍以上四种类型的实时数据库: (1)国外传统实时数据库包括: a. OSI公司的PI( Plant Information System ) b. Aspen公司的IP21( InfoPlus.21 ) c. Honeywell公司的PHD( Process History Database ) d. Instep公司的eDNA(enterprise Distributed Network Architecture) PI在国内广泛应用于电力行业,它采用了旋转门压缩专利技术和独到的二次过滤技术,使进入到PI数据库的数据经过了最有效的压缩,极大地节省了硬盘空间;IP21和PI一样属于正宗的实时数据库软件,价格和PI差不多,比较昂贵,IP21在中石油、中石化内部得到了广泛使用;由于Honeywell占据了化工行业DCS大部分份额,因此PHD在化工行业使用得也比较广泛,PHD在内部使用了Oracle关系数据库; 以上三种实时数据库均为二十世纪末推出来的传统实时数据库,由于在电力行业占垄断地位的PI价格居高不下,Instep eDNA凭借价格优势进入了电力行业,逐渐拥有了一定的客户,因此目前大型电力企业仍然偏爱OSI PI,不少中小电力企业则选择了eDNA。 特点:价格高、实时数据库包含实时数据库及其它配套软件。 (2)国外组态软件供应商实时数据库 a. Wonderware公司的Historian( 原InSQL) b. GE Fanuc公司的iHistorian c. Rockwell公司的RSSQL d. Siemens公司的SIMATIC-IT-Historian 由于Wonderware的组态软件Intouch在国内工控业界的普遍使用,尤其在钢铁行业的广泛使用,因此Wonderware Historian(原InSQL)在钢铁行业占有较大的市场,Wonderware Historian在内部使用了MS SQL Server关系数据库,相对前三种实时数据库,Wonderware Historian进入实时数据库市场较晚,相对易学

相关主题
文本预览
相关文档 最新文档