数据库读写分离的由来以及解决方案
数据库集群
主库负责写入数据
其他的从库,负责读取数据
数据库读写分离解决方案:
一、应用层解决方案
二、中间件
数据库集群对我们使用要求:
1、读库和写库数据一致
2、写入数据必须写到写库
3、读数据必须读到从库
应用层解决方案
一、主程序 (insert、select、update、delete)———— 中间件(区分)— 读库 还是写库
优点:
1.多数据源切换方便、有程序自动完成
2.不需要引入中间件
3.理论上支持任何数据库
缺点:
1.程序耦合、运维不能参与其中
2.不能动态增加数据源
二、中间件
中间件解决方案那些技术实现
1.MySQL-Proxy
2.Amoeba for MySQL
3.MyCat
4.Atlas
5.OneProxy 商业版
优点:
源程序不用改动程序实现读写分离
动态添加数据源不需要重启程序
缺点
程序依赖中间件导致切换数据库困难
中间件中转代理导致性能下降
现在有比中间件更加优秀的解决方案比如运行在公有云上,基于中间件+公有云 数据打造成分布式数据库。目前有阿里云的DRDS、PetaData,腾讯云的DCDB FOR TDSQL 以及UCloud推出的UDDB