数据库读写分离技术

读写分离是为了提供程序的性能,随着用户的增长,数据库的压力也会愈来愈大,对数据库或者SQL的基本优化可能达不到最终的效果,读写分离简单的说是把对数据库读和写的操做分开对应不一样的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操做,从数据库提供读操做。
系统使用缓存后,很大部分功能是不用经过数据库就能够完成的。可是仍然有一部分功能须要和所有的写入操做须要访问数据库。因此要提供主从数据库来分离读写操做,主数据库同步到从数据库后,从数据库通常由多台数据库组成这样才能达到减轻压力的目的mysql

 

 

随着一个网站的业务不断扩展,数据不断增长,数据库的压力也会愈来愈大,对数据库或者SQL的基本优化可能达不到最终的效果,咱们能够采用读写分离的策 略来改变现状。读写分离如今被大量应用于不少大型网站,这个技术也不足为奇了。ebay就作得很是好。ebay用的是oracle,据说是用Quest Share Plex 来实现主从复制数据。sql

     读写分离简单的说是把对数据库读和写的操做分开对应不一样的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操做,从数据库提 供读操做,其实在不少系统中,主要是读的操做。当主数据库进行写操做时,数据要同步到从的数据库,这样才能有效保证数据库完整性。Quest SharePlex就是比较牛的同步数据工具,据说比oracle自己的流复制还好,mysql也有本身的同步数据技术。mysql只要是经过二进制日志来复制数据。经过日志在从数据库重复主数据库的操做达到复制数据目的。这个复制比较好的就是经过异步方法,把数据同步到从数据库。数据库

      主数据库同步到从数据库后,从数据库通常由多台数据库组成这样才能达到减轻压力的目的。读的操做怎么样分配到从数据库上?应该根据服务器的压力把读的操做分配到服务器,而不是简单的随机分配。mysql提供了MySQL-Proxy实现读写分离操做。不过MySQL-Proxy好像好久不更新了。oracle能够经过F5有效分配读从数据库的压力。缓存


ebay的读写分离(网上找到就拿来用了)服务器


 mysql的读写分离
       上面说的数据库同步复制,都是在从同一种数据库中,若是我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像如今市面尚未这个工具吧。那样应该怎么实现数据同步?其实咱们能够考虑本身开发一套同步数据组件,经过消息,实现异步复制数据。其实这个实现起来要考虑不少方面问题,高并发的问题,失败记录等。其实这种方法也能够同步数据到memcache中。据说oracle的Stream也能实现,不过没有试过。并发

相关文章
相关标签/搜索