Mysql主从中Master上面的Mysql Query与Slave上的bin-log执行上的差别

吕秀才 发布于 2013/12/06 14:42
阅读 431
收藏 2

今天灵光一现,突然想到一个问题,而后有一些疑问,希望各位道友予以解惑!

一般来说,当并发到一定程度,单台的Mysql服务器承受不住的时候,会做主从来缓解压力。而主从的原理就是Master端在执行查询的时候,会生成bin-log日志,然后Master会把bin-log日志同步到Slave端,然后Slave端执行bin-log日志,来实现主从的数据复制,而这时候,我们可以把读的操作指向Slave端,从而分解,降低Master端的压力。

我的疑问是这时候Master端写的压力与Slave端写的压力是否变化不大,当然,前提是我们忽略主从同步所带来的那几秒延迟与误差。因为Master的写操作,生成bin-log,然后同步到Slave端,Slave端执行bin-log其实也是一个执行写操作的过程,当我们忽略那几秒误差与延迟的前提下,它的写压力是不是变化也不会太大。另外,Master执行查询与Slave端执行bin-log里面的查询,有没有什么区别?或者说执行bin-log比直接执行SQL语句效率要高?


因为之前在看两台机器互为主从的相关原理的时候发现,两台机器互为主从的好处就是一台down机,不会影响网站的访问,但是整体所支持的并发是不会变的。


所以才有上面的疑问!主从的好处可能就是降低Master端的查询压力。把相关的压力分散到Slave上面,但缺点是一台挂,就全挂了。互为主从和这个刚好相反,一台挂,不会影响网站(当然,可能会影响体验,必竞是单台服务器,比如慢,甚至也会挂掉),两台机器的所承受的并发数是固定的!有没有更好的方案能解决主从和互为方从的缺点?

重新整理下疑问吧!

1、在忽略主从同步数据的误差与延迟的情况下,Master端的写压力是否与Slave端的写压力变化不大?

2、bin-log与普通的sql查询两者效率有没有什么区别?或者是哪个效率要好一些

3、有没有更好的办法来解决主从的单点故障与互为主从并发数固定的的问题!


拜谢各位道友!


要开会了,欢迎留言!

加载中
0
leo108
leo108
多主多从
0
eechen
eechen
可以配置双主多从,一台master宕机,另一台 master可以顶上。
slave负责读,master负责写,如果有些数据要求 实时性,可以从master上读。

另外binlog是二进制数据,跟SQL文本不一样,slave的IO Thread读取master的binlog生成relay log(中继日志),slave的SQL Threads再重放 relay log日志批量写入数据。
吕秀才
吕秀才
感谢,我抽空测试下多主多从,研究下!
0
Wentasy
Wentasy

1、在忽略主从同步数据的误差与延迟的情况下,Master端的写压力是否与Slave端的写压力变化不大?

从原理上来说,Master端的写压力一般要大于Slave端,不过还得看你是结构。

2、bin-log与普通的sql查询两者效率有没有什么区别?或者是哪个效率要好一些

SQL查询通过解析器、优化器、创建执行计划,执行,输出;bin-log还要实现对磁盘的IO操作,解析SQL,再重复SQL的执行过程,所以从效率上来说,普通sql的效率要高些。

3、有没有更好的办法来解决主从的单点故障与互为主从并发数固定的的问题!

@eechen 的方案可行。如果想解决数据同步和数据备份,可以考虑使用MySQL集群,不过成本就要高很多。

Wentasy
Wentasy
回复 @吕秀才 : http://jxwpx.blog.51cto.com/15242/459174 http://bbs.csdn.net/topics/350035969
吕秀才
吕秀才
可否简单的描述下Mysql集群与多主多从的区别,亦或者有没有相关的文章介绍,给个链接!拜谢!
-1
子矜
子矜
MySQL都不算数据库 还折腾啥 
子矜
子矜
一点都不合理 是吧@宏哥
吕秀才
吕秀才
这位道友,存在即合理,必竞现在它的市场占有份额还是蛮大的!就目前而言,还是有必要深入研究下的
返回顶部
顶部