读写分离----构建报表和查询系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库读写分离
随着一个网站的业务不断扩展,数据不断增加,数据库的压力也会越来越大,对数据库或者SQL的基本优化可能达不到最终的效果,我们可以采用读写分离的策略来改变现状。读写分离现在被大量应用于很多大型网站,这个技术也不足为奇了。ebay就做得非常好。ebay用的是oracle,听说是用Quest Share Plex 来实现主从复制数据。
读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库
服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。Quest SharePlex就是比较牛的同步数据工具,听说比oracle本身的流复制还好,mysql也有自己的同步数据技术。mysql只要是通过二进制日志来复制数据。通过日志在从数据库重复主数据库的操作达到复制数据目的。这个复制比较好的就是通过异步方法,把数据同步到从数据库。
主数据库同步到从数据库后,从数据库一般由多台数据库组成这样才能达到减轻压力的目的。读的操作怎么样分配到从数据库上?应该根据服务器的压力把读的操作分配到服务器,而不是简单的随机分配。mysql 提供了MySQL-Proxy实现读写分离操作。不过MySQL-Proxy好像很久不更新了。oracle可以通过F5有效分配读从数据库的压力。
ebay的读写分离(网上找到就拿来用了)
mysql的读写分离
上面说的数据库同步复制,都是在从同一种数据库中,如果我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像现在市面还没有这个工具吧。那样应该怎么实现数据同步?
其实我们可以考虑自己开发一套同步数据组件,通过消息,实现异步复制数据。其实这个实现起来要考虑很多方面问题,高并发的问题,失败记录等。其实这种方法也可以同步数据到memcache中。听说oracle的
Stream也能实现,不过没有试过。
数据读写分离构建报表查询系统
1.系统现状
传统方式中,各种应用通过中间件,甚至直接连接到后台数据库,后台数据库处理各种各样的业务。但是随着业务系统的逐渐成熟,稳定运行的it系统收集了越来越多的企业或者单位的信息之后,其重要的地位越发凸现出来。核心业务系统,报表系统,查询系统,统计分析模块都需要从后台数据库获取和修改数据,造成了数据库的压力的同时,也为数据库单点故障带来的所有的业务系统的坍塌买下了隐患。为了更快更可靠地访问后台数据库,数据中心需要采用数据库读写分离技术实现对应用系统的加固。
2.读写分离应用架构
采用realsync复制软件分离出一个只读数据库,有两点好处
1、分离出来的数据库可读可写,但是为了读写分离系统两边数据一致,不建议对分离出来的数据库进行修改。可以提供报表,查询,统计这样的业务。
2、可以起到容灾的效果。一旦主生产系统有问题,可以用分离的数据库进行主业务系统的接管