内网数据库和外网数据库同步

观铃 2017-09-27 06:13:50
遇到这么一个问题。
网站有一个内网服务器在不联外网的情况下供web'端使用,使用一个数据库。可以对他进行增删查改。
同时有一个外网服务器在联外网的情况下供同一批人员通过手机端使用。

每天某个时间,同步两个数据库。以内网的更新为主,外网更新其次。
如何使两个数据库利用相互的数据,都更新到最新,且一致。
...全文
1105 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
观铃 2017-10-12
  • 打赏
  • 举报
回复
引用 19 楼 yenange 的回复:
[quote=引用 18 楼 OkamiMisuzu 的回复:] 找到一款ApexSQLLog工具,可以将任意时间的数据库变动保存为sql脚本。 将主服务器的变动脚本导出,更新到副服务器。这样子副服务器就是最新的数据。在办这个数据重新拷贝到主服务器。就可以实现同步功能。
据我所知这个是图形界面操作的, 有命令行的操作方式?[/quote] 可能有,就是分析数据库log。但我肯定是不会。
吉普赛的歌 2017-10-09
  • 打赏
  • 举报
回复
引用 18 楼 OkamiMisuzu 的回复:
找到一款ApexSQLLog工具,可以将任意时间的数据库变动保存为sql脚本。 将主服务器的变动脚本导出,更新到副服务器。这样子副服务器就是最新的数据。在办这个数据重新拷贝到主服务器。就可以实现同步功能。
据我所知这个是图形界面操作的, 有命令行的操作方式?
观铃 2017-10-09
  • 打赏
  • 举报
回复
找到一款ApexSQLLog工具,可以将任意时间的数据库变动保存为sql脚本。 将主服务器的变动脚本导出,更新到副服务器。这样子副服务器就是最新的数据。在办这个数据重新拷贝到主服务器。就可以实现同步功能。
rouqu 2017-09-29
  • 打赏
  • 举报
回复
SQLServer有什么功能可以做到双活?Failover, log shipping, db mirror, always on都是ActivePassive模式,这个还是在两台服务器保持网络连通的情况下 而且你供同一批用户使用,为了保持数据连续性,你说一个为主,一个为辅,我感觉好像不大可行 最简单的,像上面说的,只保留一个数据源,外网映射一下不就结了 内网服务器搭建在公司内部。不允许联网。 外网服务器部署在云服务端,可以联网供手机端使用。 公司可以开放一台联网的电脑,来完成两个服务器数据的交换。 ------------------------------------- 联网服务器上做个反代
繁花尽流年 2017-09-29
  • 打赏
  • 举报
回复
表有GUID的话这个不算什么大问题。 次级更新的每次把新数据作为增量insert到主服务器,然后根据上次同步的时间戳或者log日志,再把主服务器数据更新到次级服务器。
观铃 2017-09-28
  • 打赏
  • 举报
回复
内网服务器搭建在公司内部。不允许联网。 外网服务器部署在云服务端,可以联网供手机端使用。 公司可以开放一台联网的电脑,来完成两个服务器数据的交换。
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 10 楼 yenange 的回复:
[quote=引用 9 楼 OkamiMisuzu 的回复:] 内网无法联网。
客户->外网WEB服务器->内网DB服务器 内网不需要联网, 只要外网WEB服务器能连接到DB服务器就好了。[/quote] 感觉这个方法似乎可行,但不知道客户那边会不会同意外网去连接内网数据服务器。
OwenZeng_DBA 2017-09-28
  • 打赏
  • 举报
回复
引用 9 楼 OkamiMisuzu 的回复:
[quote=引用 7 楼 yenange 的回复:] 感觉有点多余。 分两个数据库有何意义? 如果是出于安全考虑, 将数据库放内网, 设置防火墙不允许外网访问, WEB服务器与DB服务器分开,WEB服务器可以访问DB服务器即可。 至于手机端, 本身就不应该直接访问外网上的数据库, 访问 webservice 之类的接口就可以了。 同步比你想象的要复杂, 你制定了这些规则, 只能写程序来弄了。 不仅有更新update, 还有 delete , insert 之类的, 这些逻辑也只有你能懂, 而且一点不能错。
内网无法联网。[/quote] 看你的描述,你们应该是BS架构。可以在web服务器上面弄2个网卡,一个内网一个外网。由这个web服务器去访问内网的数据库,这是普遍使用的结构。不过手机端还是web端都可以链接这个web服务器
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 8 楼 z10843087 的回复:
[quote=引用 6 楼 OkamiMisuzu 的回复:] [quote=引用 5 楼 yenange 的回复:] 内网的是主还是外网的是主?
“以内网的更新为主,外网更新其次。”[/quote] 这个规则有点矛盾,最好你就从逻辑上吧内外网分开。两边的数据不要操作相同的数据。 [/quote] 内网和外网都需要操作一部分相同数据。逻辑上分不开。 可能存在,有一些数据,先在内网更新了。又去外网更新了。也可能只内网或者只外网更新。 所以才要将两个服务器的数据库,有规则的更新到最新。
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 7 楼 yenange 的回复:
感觉有点多余。 分两个数据库有何意义? 如果是出于安全考虑, 将数据库放内网, 设置防火墙不允许外网访问, WEB服务器与DB服务器分开,WEB服务器可以访问DB服务器即可。 至于手机端, 本身就不应该直接访问外网上的数据库, 访问 webservice 之类的接口就可以了。 同步比你想象的要复杂, 你制定了这些规则, 只能写程序来弄了。 不仅有更新update, 还有 delete , insert 之类的, 这些逻辑也只有你能懂, 而且一点不能错。
内网无法联网。
OwenZeng_DBA 2017-09-28
  • 打赏
  • 举报
回复
引用 6 楼 OkamiMisuzu 的回复:
[quote=引用 5 楼 yenange 的回复:] 内网的是主还是外网的是主?
“以内网的更新为主,外网更新其次。”[/quote] 这个规则有点矛盾,最好你就从逻辑上吧内外网分开。两边的数据不要操作相同的数据。
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 5 楼 yenange 的回复:
内网的是主还是外网的是主?
“以内网的更新为主,外网更新其次。”
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 2 楼 RINK_1 的回复:
既有主次之分,又有要求更新到最新的,这好像有冲突。如果次数据库是最新的,这时以次数据库来同步更新主数据库?
是的。 假如最开始数据库内a=1,b=1,c=1。 这段时间内,主数据库改为:a=2,b=2。次数据库改为b=3,c=3。 那同步时需要将主数据库和次数据库,都更新为a=2,b=2,c=3。
观铃 2017-09-28
  • 打赏
  • 举报
回复
引用 1 楼 z10843087 的回复:
是同样的表结构吗?建议还是都把数据库放一台上面。都放内网
内网不联网,放在内网,手机端无法接收数据。 也是为了安全。只允许某台电脑在某个时间,去同步一下内网和外网的数据。
吉普赛的歌 2017-09-28
  • 打赏
  • 举报
回复
引用 9 楼 OkamiMisuzu 的回复:
内网无法联网。
客户->外网WEB服务器->内网DB服务器 内网不需要联网, 只要外网WEB服务器能连接到DB服务器就好了。
吉普赛的歌 2017-09-28
  • 打赏
  • 举报
回复
感觉有点多余。 分两个数据库有何意义? 如果是出于安全考虑, 将数据库放内网, 设置防火墙不允许外网访问, WEB服务器与DB服务器分开,WEB服务器可以访问DB服务器即可。 至于手机端, 本身就不应该直接访问外网上的数据库, 访问 webservice 之类的接口就可以了。 同步比你想象的要复杂, 你制定了这些规则, 只能写程序来弄了。 不仅有更新update, 还有 delete , insert 之类的, 这些逻辑也只有你能懂, 而且一点不能错。
吉普赛的歌 2017-09-28
  • 打赏
  • 举报
回复
内网的是主还是外网的是主?
RINK_1 2017-09-28
  • 打赏
  • 举报
回复
引用 4 楼 OkamiMisuzu 的回复:
[quote=引用 2 楼 RINK_1 的回复:] 既有主次之分,又有要求更新到最新的,这好像有冲突。如果次数据库是最新的,这时以次数据库来同步更新主数据库?
是的。 假如最开始数据库内a=1,b=1,c=1。 这段时间内,主数据库改为:a=2,b=2。次数据库改为b=3,c=3。 那同步时需要将主数据库和次数据库,都更新为a=2,b=2,c=3。[/quote] 你这逻辑就是主次两个数据库同时存在的数据,以主数据库为准,不考虑哪个是最新修改的。只有在其中一个数据库存在而另一个数据库不存在的数据,才需要进行互相同步更新。 那要么在处理时分3个步骤, 1.把主次数据库同时存在,但具体数值不相同的数据,以主数据库数据更新至次数据库。 2.把主数据库单独存在的数据,插入到次数据库。 3.把次数据库单独存在的数据,插入到主数据库。 如果一条数据记录有很多字段,估计第一步的判断会有些复杂。
RINK_1 2017-09-27
  • 打赏
  • 举报
回复
既有主次之分,又有要求更新到最新的,这好像有冲突。如果次数据库是最新的,这时以次数据库来同步更新主数据库?
OwenZeng_DBA 2017-09-27
  • 打赏
  • 举报
回复
是同样的表结构吗?建议还是都把数据库放一台上面。都放内网

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧