原系统是python(cherrypy)+sqlite,现客户要求升级为双机热备,怎么解决啊?

145 views
Skip to first unread message

老光

unread,
Feb 6, 2012, 3:46:27 AM2/6/12
to pyth...@googlegroups.com
sqlite3是嵌入式文件型数据库, 不能网络访问的, 从这个角度来说, 看来数据是至少要换了?
如果使用mysql,好象4.0以上有主从数据库概念,可以异机自动同步(master-slave配置).
 
原系统搭建是采用win xp系统作服务器,用的美步的免费动态域名(meibu.com),通过ADSL MODEM接入互联网,在MoDEM里面做了端口映射,服务器上开机自登录,运行美步那个动态域名注册软件和python文件.
 
现在采取手工备份方式,我给他装了两台电脑,在两个不同的办公室,要求他的工作人员每天下班前将服务器上的sqlite3数据库文件用U盘拷到另一台电脑上去.
 
如果客户要求仅止于数据库异机自动同步备份,那私只换数据库就可以解决.或者甚至能够不换数据库(底层很多东东要重写), sqlite数据库也有异机备份解决方案?
 
但现在老板有更高要求,他希望达到应用服务器也自动热备份和热切换: 假使服务器A因为一些原因损坏或不能访问, 对该免费域名的访问自动转到服务器B上,不需要前台使用人员去记住备份网址.
 
这个好象超出cherrypy,甚至超出python的范围了? 那怎么解决呢?
 
再加上我也希望修改源程序后,不需要再拷贝到另一台电脑,最简单的解决方案是: 有没有一种基于FTP的,在两台电脑之间同步文件夹的工具或解决方案?(但这种方案对于同步sqlite3数据库文件不方便,因现在的数据库文件已经200多M了,而且在白天基本一直有访问,其大小和时间都在快速变化的).
方案B为:仅更换数据库为mysql
方案C为:python下的某框架支持双机热备, 只要在两台电脑上同时运行服务器程序,则会自动同步数据.
方案D:换其他编程语言(不考虑).
 
我的技术水平太初级,无法解决这个问题.只是了解到, 要实现BOSS要求的双机热备,好象要在路由器上设置IP地址或是DSN一类的东西吧?
 
我问度娘"双机热备", 搜到的东西太少了啊!恳请各位大大支招啊!凡提供对我有有用信息的大大,从偏僻的乡下小城丰都过路时,我定可招呼小酌一杯.
刚才问一个朋友,意思是有一种接入HUB的叫"高可用性转换器"的东东,但这东东是提供在同一个路由器后面的两台电脑以同一个IP地址暴露给外面.而我现在的情况是,两台电脑在两个不同的地方,通过各自的ADSL线路接入互联网.

M C

unread,
Feb 6, 2012, 3:55:50 AM2/6/12
to pyth...@googlegroups.com
DNS 解析双ip可以做到应用的冗余,数据就用mysql,sqlite是否支持双机备份我不太清楚

> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
> 详情: http://code.google.com/p/cpyug/wiki/PythonCn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug
> http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

Zoom.Quiet

unread,
Feb 6, 2012, 3:57:54 AM2/6/12
to pyth...@googlegroups.com
在 2012年2月6日 下午4:46,老光 <yaogua...@cq.chinatelecom.com.cn> 写道:
> sqlite3是嵌入式文件型数据库, 不能网络访问的, 从这个角度来说, 看来数据是至少要换了?
> 如果使用mysql,好象4.0以上有主从数据库概念,可以异机自动同步(master-slave配置).
>
> 原系统搭建是采用win xp系统作服务器,用的美步的免费动态域名(meibu.com),通过ADSL
> MODEM接入互联网,在MoDEM里面做了端口映射,服务器上开机自登录,运行美步那个动态域名注册软件和python文件.
>
> 现在采取手工备份方式,我给他装了两台电脑,在两个不同的办公室,要求他的工作人员每天下班前将服务器上的sqlite3数据库文件用U盘拷到另一台电脑上去.
>
> 如果客户要求仅止于数据库异机自动同步备份,那私只换数据库就可以解决.或者甚至能够不换数据库(底层很多东东要重写),
> sqlite数据库也有异机备份解决方案?
>
> 但现在老板有更高要求,他希望达到应用服务器也自动热备份和热切换: 假使服务器A因为一些原因损坏或不能访问,
> 对该免费域名的访问自动转到服务器B上,不需要前台使用人员去记住备份网址.
>
> 这个好象超出cherrypy,甚至超出python的范围了? 那怎么解决呢?
>
> 再加上我也希望修改源程序后,不需要再拷贝到另一台电脑,最简单的解决方案是:
> 有没有一种基于FTP的,在两台电脑之间同步文件夹的工具或解决方案?(但这种方案对于同步sqlite3数据库文件不方便,因现在的数据库文件已经200多M了,而且在白天基本一直有访问,其大小和时间都在快速变化的).
> 方案B为:仅更换数据库为mysql
> 方案C为:python下的某框架支持双机热备, 只要在两台电脑上同时运行服务器程序,则会自动同步数据.
> 方案D:换其他编程语言(不考虑).
>

- 完全没有超出哈!??!
- 关键你要明白什么是 双机热备
- 可以降为 任何一台主机死亡时,应用系统不会中断响应,用户感觉不到主机出问题
- 即,双机温备
- 永远只有一台主机提供服务
- 主服务出问题时,可以立即,自动无缝迁移请求到备用运行中主机 就好
- 最简单的,就是前置一台代理,对请求知道怎么进行灾害迁移
+ ngnix
+ haproxy
等都知道怎么来,你申請个靠谱的低配置pc 放在两个应用主机前面就好
- 置于 sqlite 的数据同步问题
- 两主机网络直接可以访问的话
- 定期从主服同步到备服 就好
- 如果两机网络本身就不通
- 那只能进行云化了,,,
- 迁移为 sae 的 mysql
- 或是,迁移为盛大云vps 中的sqlite
- 或是,通过快盘什么的作为中转来进行同步


> 我的技术水平太初级,无法解决这个问题.只是了解到, 要实现BOSS要求的双机热备,好象要在路由器上设置IP地址或是DSN一类的东西吧?
>
> 我问度娘"双机热备", 搜到的东西太少了啊!恳请各位大大支招啊!凡提供对我有有用信息的大大,从偏僻的乡下小城丰都过路时,我定可招呼小酌一杯.
> 刚才问一个朋友,意思是有一种接入HUB的叫"高可用性转换器"的东东,但这东东是提供在同一个路由器后面的两台电脑以同一个IP地址暴露给外面.而我现在的情况是,两台电脑在两个不同的地方,通过各自的ADSL线路接入互联网.
>

> --
> 来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
> 规则: http://code.google.com/p/cpyug/wiki/PythonCn
> 发言: pyth...@googlegroups.com
> 退订: python-cn+...@googlegroups.com (向此发空信即退!)
> 详情: http://code.google.com/p/cpyug/wiki/PythonCn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> 强烈: 建议使用技巧: 如何有效地报告Bug
> http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html

--
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
俺: http://about.me/zoom.quiet
文字协议: http://creativecommons.org/licenses/by-sa/2.5/cn/

ubunoon

unread,
Feb 6, 2012, 4:15:20 AM2/6/12
to pyth...@googlegroups.com
双机热备,主要是数据库同步,不是备份,你一直在备份的概念里。


在另一台机器上也搭建同样的应用,如果你的应用访问量比较大,需要memcached的,那么还需要注意,你的slave需要另外的两台,也就是你要四台,才有可能达到最好的热备。

pansz

unread,
Feb 6, 2012, 7:49:43 PM2/6/12
to pyth...@googlegroups.com
2012/2/6 ubunoon <net...@gmail.com>:

> 在另一台机器上也搭建同样的应用,如果你的应用访问量比较大,需要memcached的,那么还需要注意,你的slave需要另外的两台,也就是你要四台,才有可能达到最好的热备。
>

搭车问一下:访问量一般得要多大,才需要上个 memcached 啊?

我的网站上线三个多月,目前注册用户5k,日均访问量三万到四万。目前没有做任何优化,看样子今年可能用户数还能涨个四五倍的样子。象我这种级别的小站,是不是可能永远都不会需要用到什么优化啊?

Zoom.Quiet

unread,
Feb 6, 2012, 8:20:22 PM2/6/12
to pyth...@googlegroups.com

- 永远不用什么优化就可以安全运营
- KAO! 最幸福的运营状态好不好!
- 缓存不是用户量大,才需要
- 缓存是为了提高业务响应速度的,,,

iyuan

unread,
Feb 7, 2012, 5:13:56 AM2/7/12
to python-cn(华蟒用户组,CPyUG 邮件列表)
传说中的大杀器,友情提醒:慎用!
直接bt模式,单向p2p形式同步(爱同步啥同步啥).主定时做种,备定时更新,dns/路由那边定时扫描主,哦了~

ubunoon

unread,
Feb 12, 2012, 12:56:36 AM2/12/12
to pyth...@googlegroups.com
你的这点量,就不要去折腾服务器了,大妈说了,KAO才是最主要的。

在 2012年2月7日 上午8:49,pansz <pan.s...@gmail.com>写道:
--
来自: python-cn`CPyUG`华蟒用户组(中文Python技术邮件列表)
规则: http://code.google.com/p/cpyug/wiki/PythonCn
发言: pyth...@googlegroups.com
退订: python-cn+...@googlegroups.com (向此发空信即退!)
详情: http://code.google.com/p/cpyug/wiki/PythonCn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
强烈: 建议使用技巧: 如何有效地报告Bug http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html



--
DamonChen

老光

unread,
Feb 16, 2012, 8:08:57 PM2/16/12
to pyth...@googlegroups.com
汇报一下解决进度:
1.MySQL数据库双机热备已经通过度娘解决了, windows下面安装本来要钱钱,但找到一个mysqlnoinstallwin32.msi, 109M大小, 几乎傻瓜安装.(BTW:这东东长期在winxp下使用,有不有版权,许可等风险?)master/slave模式,一般是指两台电脑互相备份,也找到一篇文章,可以3台,或4台,多于2台时,是采用的环形结构,倒类似于电信传输网络拓扑结构.从mysql的主从同步模式,星形也可以,但星形是中心向外单向同步的.而3台及以上网状同步,是不能实现的.
2.现在继续探讨文件夹内容同步问题.搜了一下文件同步工具,大都不能满足要求.或者通过网盘(新浪微盘,金山快盘,网络硬盘等)倒是可以解决,但云存储,先决条件是需要两台电脑都能上互联网.根据cherrypy的文件一发生修改就自动重启,和mysql数据库同步,我这儿设想出一种方案:探寻cherrypy里文件修改监控的细节,可以自定义加入一些文件进行监控,在发生修改时,将修改过的文件上传到数据库中.另一边也一样地,但将对应的MySQL数据文件加入监控范围,一旦发现数据库更新,就重启cherrypy, 而其启动过程中包含从数据库中查找文件来更新本地文件的步骤.

众以为然否?

Mayli Hellsing

unread,
Feb 16, 2012, 8:16:15 PM2/16/12
to pyth...@googlegroups.com
数据库和文件系统的同步最好分开

 数据库用内置的
 文件系统使用rsync或者类似工具
 你的winxp有没有版权?


--
李梦阳上

老光

unread,
Feb 17, 2012, 2:18:25 AM2/17/12
to pyth...@googlegroups.com
汗,我没有...
文件系统同步工具,一类是只能在本机,或者是同一个网络后面,通过网上邻居共享访问那种;一类是通过FTP可以网络同步;一类是通过网盘,存到一个公共的地方.三者的共同点是:都需要在两台电脑安装一个后台运行的软件.
我的目的是两台电脑的python程序同步,不需要我在一台电脑上修改过后,再登录另一台又修改一次.其实对时间要求不高.但若用户要求应用也双机热备的话,时间要求就高.
查了几个被推荐的同步软件,都不满意哇!

Mayli Hellsing

unread,
Feb 17, 2012, 2:44:48 AM2/17/12
to pyth...@googlegroups.com
你还是网盘吧,这应该是对于你最合适的方案
Reply all
Reply to author
Forward
0 new messages