1.什么是读写分离?
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。
2.读写分离的目的?
因为数据库的“写”操作是比较耗时的,但是数据库的“读”耗时少。所以读写分离,解决的是,数据库的写入,影响了查询的效率。
3.读写分离的应用背景
数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是表折分,或是搜索引擎,都是解决方法。
4.读写分离原理
5.读写分离实现
主库:172.25.60.2
从库:172.25.60.3
mysql-proxy服务器:172.25.60.1
在mysql-proxy服务端:
安装软件(作软连接):
编辑配置文件:
修改服务器数量,(实验虚拟机只有两台):
权限太大,更改权限:
查看是否配置完成:
在主库上新建一个可以使用数据库的用户:
刷新一下:
新建一个表用于实验:
在mysql-proixy安装监控软件:
在测试主机上用dd用户登录数据库,在监控上查看:
当出现sever3时表示读写分离可以实现了。
然后在测试主机上用dd用户插入数据:
在主备库上查看:
都能看到的原因时由于之前做了半同步复制。
关掉后 (stop slave),再插入数据:此时会发现写入数据是在主库上完成,但读取数据是在备库完成。