概述:
1.什么是读写分离?
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
2.为什么要读写分离?
因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)操作比较快速。
所以读写分离,解决的是:数据库的写入,影响了查询的效率。
3.什么时候要读写分离?
数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库主从同步 。
可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache或是表折分,或是搜索引擎,都是解决方法。
4.如何实现mysql的读写分离?
MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力。
使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请求,
对SQL语句进行分析,判断出是读操作还是写操作,然后分发至对应的mysql服务器上。
安装包:
mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
实验环境:
server1 172.25.66.1 master
server2 172.25.66.2 slave
server3 172.25.66.3 mysql-proxy
实验前提:
已经在server1(master)和server2(slave)结点上做好了主从复制(传统的或是基于GTID的均可)
点击此处查看MySQL主从复制
检测主从复制:
#查看slave的状态
mysql> show slave status\G;
在server1上:创建数据库
mysql> show databases;
mysql> create database westos;
mysql> show databases;
在ser