离线数据库和主数据库的同步 [ 新手入门 ]
准备用YII 来开发一个B/S的销售管理系统, 想让在网络不能连接的时候,本地也可以使用,把数据保存在本地的mysql 里或者 sqlite 。怎么样来实现联网成功后的数据库自动同步。各位大侠出出点子看。
征得夜烛黑白 同意, 我把群里的讨论发上来,
咖啡 23:34:49
B/S 结构的销售管理这样的软件 ,我想做本地也有个数据库, 在联网的时候是直接两个数据库同时写入 是同步的,在不连接网络的时候写入本地数据库,这样可以照样操作,在网络恢复的时候再自动同步数据,大家出出点子看
微微灯火(26079288) 23:35:48
用flash吧
夜烛黑白 23:36:04
那么关键就是数据库同步了喽
想好同步方案了么?
咖啡 23:36:26
就是在考虑的 怎么实现这个同步功能
是用MYSQL 提供的主从同步功能 还是在程序里来处理
夜烛黑白 23:37:16
不知道mysql的同步效率如何
咖啡 23:37:45
这个应该没问题 数据不会是很多
从服务器同步到客户机器 比较简单
反过来同步就有很多情况
IP不固定
Satyr(Jay)(475346421) 23:38:46
/coffee
咖啡 23:38:47
有防火墙 路由等 所以不一定可以从服务器连接到客户机的3306
夜烛黑白 23:39:24
ip不固定的问题应该是两种方案都存在的问题吧
咖啡 23:39:30
这个设想能实现 ,应该还是很有用处的 ,
服务器的IP 应该是固定的
夜烛黑白 23:40:30
恩
我知道服务器的IP固定
我是说myql主从同步,和程序处理的方案,这个问题都需要解决啊
咖啡 23:41:21
程序可以只考虑连接本地数据库
这样简单清晰点
夜烛黑白 23:42:14
程序只考虑链接本地数据库?
不太明白
两边的数据库不是要相互同步么?
咖啡 23:42:47
只要保证客户机上的数据库是最新的啊
管理客户销售的 大部分数据是在客户机上的
我服务器上的数据库主要是给他做备份 分析用
咖啡 23:43:51
最主要是的在没有网络的情况下 客户机上的管理系统照样可以用
夜烛黑白 23:43:58
哦
明白了
也就是说,客户机上才会产生新数据呗
咖啡 23:44:25
是的
服务器上产生的数据少
所以只要保证两个数据库双向同步
夜烛黑白 23:45:23
哦
其实
我也在做一个项目,也是差不多的问题
涉及到mysql和sqlserver数据同步问题
咖啡 23:45:44
不同数据库同步估计要程序来处理了
夜烛黑白 23:46:00
然后,我设计的解决方案就是每个库加一个操作日志
咖啡 23:46:41
日志里记录SQL 操作记录吗
夜烛黑白 23:46:40
记录所做的更改的元数据的主键
然后同步
咖啡 23:46:59
这个也是一种方法
夜烛黑白 23:47:23
恩差不多吧
就是加一个记录操作的表
这样同步起来效率高一点
夜烛黑白 23:48:36
你可以考虑一下
咖啡 23:49:34
嗯 那您就是用程序来处理同步的数据,先把变动的数据放到一个临时表
再单独吧这个表同步复制过去
夜烛黑白 23:51:48
不是啊
就是往数据库存数据或者更新数据的时候
在日志表中存入更改的表名,所更改的记录的主键,操作的类型(更新,插入,删除)
夜烛黑白 23:53:15
日志表还要有一个字段,表明此条操作是否同步
然后,每隔一段时间,对两个库轮巡一次
看日志中是否有未同步的操作
有的话就同步一下
咖啡 23:54:54
这方法不错 学习了
我整理一下发在论坛里可以吧
夜烛黑白 23:55:34
呵呵
我这边是因为时间要求比较高
所以就这样做了
可以啊
共 6 条回复
chinaphp 江苏
最后登录:2023-01-13
在线时长:25小时8分
- 粉丝6
- 金钱340
- 威望0
- 积分590