有一个药店的ERP软件,用的sybase数据库,每天每时都会产生新的数据,本人想把这些数据实时同步到云端的mysql数据库
我现在是用python的pandas.read_sql,实时读取sybase的数据,再上传到mysql数据库,但中间过程过于复杂
大家有简单一点的方法吗
PS:其实我把这些数据实时同步到云数据库,也是方便企业微信号的开发,因为企业微信上开发了一个应用,要经常用到这些数据
如果有办法让企业微信号上的应用实时读取到本地的sybase数据库,也是可以的,但可能不够稳定
本地数据库设置触发器,当数据insert或者update的时候触发。
触发器把数据发送到MySQL。
如果触发器不能直接把数据发送到MySQL,可以创建一张表,让触发器把发生变化的数据id放到这个表中,加一个标记状态,让程序去读。读完写到MySQL了,变一下状态就好了。
1、获取新增数据:
可以创建一个中间表,用来存增量数据,中间表可以包含主键和要同步的数据项,同时增加一个时间戳字段create_time和操作类型字段op_type,op_type 值为insert、update、delete,表示这几种操作。
在原表上新建触发器,将增量数据写到中间表。
2、轮询中间表,按照create_time时间顺序和操作类型进行同步,同步后删除中间表中已经同步的数据。
这个过程就和把一台电脑上的数据拷贝到另一台电脑上一样,云服务器其实就是一台只要你费用足够就能永远不死机的电脑。
一.操作本地数据库
(1)打开数据库
(2)导出数据库(例如: tangshi 数据库)
在这里插入图片描述
二.将刚刚导出的 123.sql 文件上传到云服务器(工具:Xshell6+Xftp)
将本地的 123.sql 文件通过 Xftp 上传到云服务器中
在这里插入图片描述
三.操作云服务器上的数据库
(1)输入mysql -uroot -p 再输入正确密码进入到云服务器数据库中
在这里插入图片描述
(2)在云服务器数据库中创建名为 tangshi 的数据库
在这里插入图片描述
(3)执行命令
sudo mysqldump -u root -p tangshi < 刚刚 123.sql 所在的路径
1
在这里插入图片描述
(4)再次进入云服务器数据库中执行 use tangshi 命令,使用该数据库
在这里插入图片描述
(5)在刚才的操作之后用输入命令:
source 刚刚 123.sql 文件所在的路径;
1
在这里插入图片描述
(6)完成所有操作,进行检查。
在这里插入图片描述
和本地数据库中的诗词创作数量一样,到此完成所有。
你用Python应该也是定时扫表吧达不到实时变更,实时同步的话可以考虑几个方向
上游应用程序双写
数据库操作CDC同步,你这个库没了解过可不可行
云上应用读内网数据库也是可以的,宽带直连公网做映射稳定,内网穿透稳定性就看用的工具了
1、写个定时任务进行同步
2、通过触发器来实现同步
在本地建一个中间库 写个触发器 有变化就同步
1,自己写程序定时任务,外加暴露接口,这样可以手动自动都支持。
2,使用云服务的服务方给提供工具
本机数据库----》flinkCDC -------》云端数据库
简单的甚至只要配置一下,十来行代码就行。
可不可以通过redis 中转吗
可以写个定时任务,每分钟检查一次,根据时间戳判断,如果有更新就同步,
手动写个触发器,当产生新的数据时,往指定的表中插入数据即可
加个redis缓存队列吧,一直去取这个队列中的数据,数据结构包含数据id、做什么操作,这样就可以啦
通过GoldenGate同步
https://blog.csdn.net/qq_36370497/article/details/103714265
这是我之前做的数据库对等发布(也就是本地和云服务的数据库数据实时同步的问题)
https://blog.csdn.net/qq_41248260/article/details/114638464
好家伙,你还不如本地直接连接云数据库
可以使用:数据库触发器+消息中间件 这种方式可以做到尽实时数据同步
方案一:
1、导出SQL(结构和数据)
2、到云上登录MYSQL,然后执行当前SQL文件
方案二:
1、使用navicate工具,连接云上数据库;
2、使用navicate的数据同步功能,实现同步。