【实战】:sqlserver 数据实时同步到mysql

1.安装安装mysqlconnector

2.配置mysqlconnector

ODBC数据管理器->系统DSN->添加->mysql ODBC 5.3 ANSI driver->填入data source name如jt,mysql的ip、用户名、密码即可

3.新建链接服务器

exec sp_addlinkedserver

@server=‘jt‘,       --ODBC里面data source name

@srvproduct=‘mysql‘,    --自己随便

@provider=‘MSDASQL‘,    --固定这个

@datasrc=NULL,

@location=NULL,

@provstr=‘DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=192.168.5.188;DATABASE=suzhou;UID=root;PORT=3306;‘,

@catalog = NULL

exec sp_addlinkedsrvlogin

@rmtsrvname=‘jt‘,

@useself=‘false‘,

@rmtuser=‘root‘,

@rmtpassword=‘password‘;

select * from openquery(jt,‘SELECT * FROM sz ; ‘)

GO

USE [master]

GO

EXEC master.dbo.sp_serveroption @server=N‘jt‘, @optname=N‘rpc out‘, @optvalue=N‘TRUE‘

GO

EXEC master.dbo.sp_serveroption @server=N‘jt‘, @optname=N‘remote proc transaction promotion‘, @optvalue=N‘false‘

GO

---4.sqlserver和mysql新建库和表

create database suzhou;

create table sz(

id int not null  identity(1,1) primary key,

orderno char(20) not null,

ordertime datetime not null default getdate(),

remark varchar(200)

)

go

create table sz(

id int(11) not null ,

orderno char(20) not null,

ordertime datetime(6) not null ,

remark varchar(200),

primary key (id)

) engine=innodb  default charset=utf8;

---5.建立回环

--建立LOOPBACK 服务器链接

EXEC sp_addlinkedserver @server = N‘loopback‘ , @srvproduct = N‘ ‘ , @provider = N‘SQLNCLI‘,

@datasrc = @@SERVERNAME

go

--设置服务器链接选项,阻止SQL Server 由于远过程调用而将本地事务提升为分布事务(重点)

USE [master]

GO

EXEC master.dbo.sp_serveroption @server=N‘loopback‘, @optname=N‘rpc out‘, @optvalue=N‘TRUE‘

GO

EXEC master.dbo.sp_serveroption @server=N‘loopback‘, @optname=N‘remote proc transaction promotion‘, @optvalue=N‘false‘

GO

----6.编写触发器和存储过程

----6.1 insert

--重写触发器

use suzhou

go

alter trigger tr_insert_sz on suzhou.dbo.sz

for insert

as

declare  @id   int, @orderno  char(20),@ordertime datetime,@remark  varchar(200)

select @id=id,@orderno=orderno,@ordertime=ordertime,@remark =remark from inserted;

begin

print @id

print @orderno

print @ordertime

print @remark

exec loopback.suzhou.dbo.sp_insert @id,@orderno,@ordertime,@remark

end

go

--存储过程

use suzhou

go

create PROCEDURE sp_insert(

@id   int,

@orderno  char(20),

@ordertime datetime,

@remark  varchar(200)

)

AS

BEGIN

SET NOCOUNT ON;

Insert openquery(jt, ‘select * from sz‘)(id,orderno,ordertime,remark)values(@id,@orderno,@ordertime,@remark)

END

go

----6.2 update

--重写触发器

use suzhou

go

create trigger tr_update_sz on suzhou.dbo.sz

for update

as

declare  @orderno  char(20),@remark  varchar(200)

select @orderno=orderno,@remark =remark from inserted;

begin

exec loopback.suzhou.dbo.sp_update @orderno,@remark

end

go

--存储过程

use suzhou

go

create PROCEDURE sp_update(

@orderno  char(20),

@remark  varchar(200)

)

AS

BEGIN

SET NOCOUNT ON;

update openquery(jt, ‘select * from sz‘) set [email protected] where [email protected]

END

go

---update数据测试

use suzhou

go

update sz set remark=‘ocpyang‘ where orderno=‘a001‘

go

----6.3 delete

--重写触发器

use suzhou

go

create trigger tr_delete_sz on suzhou.dbo.sz

for delete

as

declare  @orderno  char(20)

select @orderno=orderno from deleted;

begin

exec loopback.suzhou.dbo.sp_delete @orderno

end

go

--存储过程

use suzhou

go

create PROCEDURE sp_delete(

@orderno  char(20)

)

AS

BEGIN

SET NOCOUNT ON;

delete openquery(jt, ‘select * from sz‘)  where [email protected]

END

go

---delete数据测试

use suzhou

go

delete from sz where orderno=‘a001‘

go

时间: 2024-10-20 15:31:02

【实战】:sqlserver 数据实时同步到mysql的相关文章

Sqlserver2000连接Oracle11G数据库进行数据实时同步

 Sqlserver2000连接Oracle11G数据库进行数据实时同步 1,前提条件 已经有sqlserver2000环境,已经存在oracle11g环境,准备这两个数据库,建立各自的访问账号,两者之间需要ping通,telnet端口也要能通,目的是将sqlserver里面的数据自动同步到oracle数据库里面去.Sqlserver里面有链路服务器(linked server)可以实现. 2,在sqlserver上面建立odbc数据源 有2种方式:"Microsoft ODBC for Ora

Linux Debian8 Rsync+Sersync实现数据实时同步

Rsync+sersync实现数据实时同步Rsync??Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.Rsync的基本特点如下:?1.可以镜像保存整个目录树和文件系统:?2.可以很容易做到保持原来文件的权限.时间.软硬链接等:?3.无须特殊权限即可安装:?4.优

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

rsync + inotify 用来实现数据实时同步

一.简介 1.rsync 比其cp.tar备份的方法,rsync的优点是,安全性高.备份迅速.支持增量备份.只能做对实时性要求不高的数据备份,例如:备份文件服务到远端从服务器.在本地磁盘上做数据镜像等 增量备份:就是rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.但是对于大量文件达到千万量级别时,扫描所有文件是非常耗时的. 如果发生改变的只是其中的一小部分的话,这是非常低效的方式. rsync 不能实时的去监测,同步数据,虽然它可以通过 linux 守护进程的方式进行触发同步,两

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync与inotify实现数据实时同步

Rsync与Inotify 单一的rsync只可以进行数据同步,单一的inotify只可以实时监控文件,两者结合使用刚好满足数据实时同步的需求,下面就用一个数据发布服务器和两个web服务器实例解析rsync+inotify实现实时同步. 数据发布服务器 192.168.1.5 (rsync+inotify) web服务器 192.168.1.6 192.168.1.7 (rsync) 首先在web服务器上部署rsync 192.168.1.6配置 [[email protected]~]# yu

Linux下Rsync+Inotify-tools实现数据实时同步

说明: 一.先安装好rsync的服务端和客户端: http://douya.blog.51cto.com/6173221/1573968 二.安装,使用inotify-tools,实时同步 1.查看服务器内核是否支持inotify ll /proc/sys/fs/inotify   #列出文件目录,出现下面的内容,说明服务器内核支持inotify -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events -rw-r--r-- 1 root r

centos 6.9使用Rsync+Inotify-tools实现数据实时同步

说明: 操作系统:CentOS 6.9 源服务器:192.168.1.222 备份服务器:192.168.1.1.233 目的:把源服务器上/backup目录实时同步到备份服务器的/backup目录下 一.在备份服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #编辑防火墙配置文件 #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存,退出

Linux下Rsync+sersync实现数据实时同步

inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个