MySQL主从复制与读写分离,mysql主从读写
所谓的读写分离就是事先准备两种类型的MySQL数据库,一种做更新操作(master)、一种做查询操作(slave)。当应用系统需要更新数据时调用master,查询数据时调用slave。这样做的好处就是将单一数据库的业务处理分担给多个数据库,也可以理解为负载均衡,这样就有一个问题,master的数据什么时候通过哪种方式同步到slave中呢?这时候就用到了主从复制了,主从复制提供了多种方式将Master中的数据同步到Slave中,具体如何实践请参考网络上其他文章。
下边通过一张图来看下系统结构:
上边说到了利用主从复制实现读写分离来提高系统的负载能力,其实还应该再加上一个Master来实现数据库系统的高可用性,这样就算是其中任何一个数据库服务器宕机也不影响系统业务使用。
关于应用系统如何实现读写分离、高可用性请根据具体的项目情况,例如:在spring项目中配置多个数据源,使用aop切入点根据save*、update*、delete*等方法调用master数据源,根据find*、get*、query*来调用slave数据源。
1 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是实时的业务数据库,从数据库的作用和使用场合一般有几个:
一是作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;
二是可在从数据库作备份、数据统计等工作,这样不影响主数据库的性能;
2 读写分离,是指读与写分别使用不同的数据库,当然一般是在不同服务器上的;在同一台服务器上的读写环境,估计只是用来测试吧。
一般读写的数据库环境配置为,一个写入的数据库,一个或多个读的数据库,各个数据库分别位于不同的服务器上,充分利用服务器性能和数据库性能;当然,其中会涉及到如何保证读写数据库的数据一致,这个就可以利用主从复制技术来完成。
一般应用场合为:业务吞吐量很大,读数据库(可简单理解为select语句的 比例和影响)的负载较大;
官方的mysql-proxy就是一个实现了读写分离、负载均衡等多个功能的软件。
主从复制时MySQL自身带的功能
如果要实现负载均衡需要其他来配合,
我现在研究的是用Amoeba来实现读写分离,建议您多到网上检索一些关于mysql负载均衡的帖子。
当然还有人用MySQL Proxy来做读写分离。不知道能不能帮到你。