同步方案:
1 使用 Sql Sever的链接服务器,从而对链接数据的进行插入同步
条件:
MySql端的管理权限,同步前需要我们创建表
建立链接服务器SQL脚本:
EXEC master.dbo.sp_addlinkedserver
@server = N'MyLink',
@srvproduct = N'localhost',
@provider = N'MSDASQL',
@provstr = N'Driver={MySQL ODBC 5.1 Driver};Server=118.123.20.224;
Database=db_test;User=root;Password=root;Option=3;'
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'MyLink',
@useself = N'False',
@rmtuser = N'root',
@rmtpassword = N'root'
链接服务器相关操作
--查询
select * from openquery(mylink,'select * from db_test');
--插入
insert into openquery(mylink,'select * from db_test')
select 1,'Peter',30;
--更新
update openquery(mylink,'select * from db_test')
set name=‘joke’ where id=1;
--删除
delete from openquery(mylink,'select * from db_test')
where id=1;
使用链接服务器的弊端在于:
1 同步前必须在目的数据库(MySql)创建新表
2 亲自写同步语句
3 开启Sql Server 代理 进行作业定时执行,以完成数据上传同步,在这里需要精致的设置续传方法
4 不能使用触发器与储存过程,因为MySql ODBC没有提供这些认为的服务
5 执行上传语句需要太长的时间,SQL Server传输过程你会发现在数百万记录时就需要数个小时的传输时间。
6 对MySql重复操作有时会发生错误,即多次在Sql中对MySql链接服务器进行同表操作时,会发生不能插入查询的情况,可能是MySql资源被占用问题。
REL: LINK
继续探索Sql Server 到MySql间的同步
2 数据库同步软件 SyncNavigator
这是专门的Sql Server 到MySql的数据库同步软件,操作十分简单。
遇到的问题
1 SyncNavigator需要在源数据库写入同步字段,这是一个timestamp类型,这可能会对使用该数据库的原应用程序或WEB造成影响
更好的方案:
在本地创建一个同步表,使用定时执行的存储过程将源数据表拷贝到同步表,再将同步表同步到目的数据库,以完成数据同步