mysql读写分离 存储过程_Mysql数据库读写分离

497ef747ff115ab6dbfc84ecf09b8e64.png

b8099a448ba48303adcb7ab88c4ce15d.png

b30c79856230fd99efcaf25e17c64c55.png

(先对数据库操作进行读写分离,使得具有master角色的主服务器主要用于执行写操作,这样就能大大减少主服务器由于读操作而产生的负载过大的问题。读交给slave。对于多台读服务器,还要把读操作的压力分摊到不同的slave服务器上。通常来说,读写分离和多台slave服务器的读负载均衡也是两个不同的问题,也要分别进行解决。先读写分离,再将读操作平均分摊到各slave服务器)

redis和memcache差距不大,还具有更多的数据类型,还能持久化,主从复制,集群等功能

cecab5a58d84ba781410d03687ee021b.png

44b42894d26033657d0cbccec0eb086f.png

(比如库存的查询就必须在主库上进行,如果从库上就可能出现超卖的情况。因此,不是什么查询都要进行读写分离的。所以,由开发人员自行判断比较灵活)

还可以通过数据库中间层完成读写分离(如mysql proxy、maxscale、one proxy、proxySQL等):

c4df1f8aef291ffe75ba48bdc6cc54f8.png

455ea8f986203bfc276219a2559f4700.png

b2464e2976b5789aa54cd7ebb7d29474.png

(通过中间层对sql语句的解析,如果是select操作,则发送到从服务器处理,非select操作,全发送到主服务器处理。对于存储过程这种无法通过调用语法分析出是读操作还是写操作的sql就只能全部由主数据库服务器去完成。由于存储过程可能很大一部分只是进行查询处理,这无疑加大了主数据库服务器的负载。虽然使用中间层很方便,但也会付出一些代价)

(由于读写分离是通过中间层自动进行的,而中间层无法区分哪些是对延迟敏感的,哪些不敏感,所以无法把对延迟敏感的查询自动分配到主库上执行,而要实现这些功能就要在查询语句中加入提示的关键字,而增加提示不得不对原来程序进行修改,这样就失去了对程序透明的好处了)

常用的读服务器负载均衡方式:

f7b370a22d4e3e184c72c69097105083.png

对于数据库服务器来说,读负载和写负载是两个完全不同的问题,所以,对于读负载和写负载要分开对待,因为写操作只能在master上进行,而读操作可以在master上,也可以在slave上,因此,相对写负载,解决读负载更加容易。

89050f68f3729c06b90eb104bda4fc24.png

(lvs是工作在网络协议的四层上的,只进行流量分发,不会对数据包内容进行解析,性能强,对内存和cpu消耗低,当然,由于不会对数据进行解析,所以也不会知道数据包中sql的具体内容,自然不能做读写分离)

(lvs只分发请求,流量并不从他本身出去,所以无流量消耗,这点就保障了io性能不会受到大流量影响)

b363f07dfff0174d0f8fb460fd94c417.png

203a5771cca3f72448a7d468633a286a.png

主从复制流程就不贴出来了...

在.100和.101服务器都安装lvs管理工具:

fd50039a63786fd83e356ffce829d9bc.png

加载ipvs模块(所有参加lvs集群的三台服务器都要安装):

5ce416b67cd61101658d9ca6c877cb0e.png

lvs脚本的编写:

先看下slave(.101服务器)上的脚本:

b4822147f6713bd5e34a20c3f3576890.png

58bf1bcd16c45c1b8296c05d3bdc5845.png

(注意,这个脚本要有可执行权限)

执行脚本:

4ff2843668a9627b1e912eb640de7943.png

查看:

a7e7ca1d827c286a1fb185f952cf8f30.png

同样在.102上也要执行:

9906d8a20582e8c1b3782a33fedf3b3c.png

查看:

d3f189815f4d0416b2d54f2adb81d608.png

.100上的keepalived配置:

bd324b1070ce38024980f6500a88e724.png

0d3af64a8ed4d02700a0f7127a873fc7.png

查看check_slave脚本:

f6e4555efafa48bceb5210aecf9db7d0.png

90ebd87b894d4802c8b8264ec2dcf790.png

......

.100上建立lvs可操作的账号:

9113197cacdd9ae616d6b4555e15c166.png

未完待续......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值