码迷,mamicode.com
首页 > 数据库 > 详细

mysql主从复制--概念及架构

时间:2016-07-03 23:34:51      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:数据库   mysql   style   用户   

mysql repication

mysql repication原理
    前端用户的写操作,或者是数据库修改操作,都会记录到二进制日志文件,保存为事件;master通过3306端口将binlog发给slave mysql服务器,slave mysql服务器将binlog保存到relay log,读取relay log并执行一遍,将数据写入磁盘

1.1 主从示意图
技术分享
1.2 一主多从、多级复制
技术分享

mysql repication先天缺陷
    mysql一个查询只能在一颗CPU上执行,若主有多个CPU,同时执行多个事务,多个事务的往数据库中写数据的速度会比较快,但是二进制日志会在内存中缓存,一段时间后才会一条一条从缓存同步到二进制日志文件。此时,二进制日志才会同步到从上,salve从中继日志一条一条读取事件,并执行,这样,主的速度比从快很多

mysql repication模式
异步:默认模式,master本地执行成功,即成功;不管二进制日志是否发送发送到slave
半同步:在一主多从模式下,master将二进制日志发送到多个slave,但只保证一个slave接收成功,则表示半同步成功,与同步类似。mysql 5.5后支持半同步。
同步:master执行一条语句,master二进制日志同步到slave中继日志中,slave读取中继日志文件并执行成功,返回信息通知master执行成功。
同步模式,mysql的速度会慢很多,前端应用将会等待很久。

4 mysql replication作用
1、slave下线做冷备份,热备较为复杂。
2、高可用,当主出现故障,从稍作处理即可上线工作
3、异地容灾
4、scale out:分摊读负载,一主多从,主写从读

5 在mysql主从中,不使用mysql代理,如何实现master负责写,slave负责读?(以discuz为例)
    php模块本身并不和mysql产生交互,和mysql交互的是discuz,让discuz解决读写问题;
    双主模型,可以减轻服务器读数据的压力,无法减轻写操作;并且容易出现重复记录二进制日志的情况,因此少采用。

6 主从、一主多从、双主都不能减轻一台服务器写的压力;当一台服务器不能承受写压力时:
1)scale on,提高其配置
2)scale out,数据拆分(垂直拆分、水平拆分)
技术分享技术分享


7 mysql读写分离的实现
mysql-proxy
amoeba
8 数据拆分
cobar

9 mysql日志
二进制日志 bin lpg
    存放位置:数据目录下mysql-bin.xxxxxxxx
    滚动:1 达到最大上线;2 flush logs;3 服务器重启
    清除二进制日志命令:purge
    格式:statement,基于语句,不建议使用
          row,基于行,建议使用
          mixed,混合
    mysql-bin.index:二进制日志文件索引文件
    查看当前mysql使用的二进制日志文件:show master stattus;
    查看二进制日志文件内容:show binlog events in “file”;
    查看二进制日志文件列表:show binary logs;
    二进制日志记录事件包含的元素:timestamp,position(offset),event,server-id
    二进制日志可用于即时点还原,但并不能替代数据备份?
        使用二进制日志恢复数据时,并不能保证数据和以前完全一样。多颗CPU并行处理数据,但记录日志时是串行写入的。
    
事务日志
错误日志 error log
一般查询日志
中继日志 relay log
慢查询日志





















mysql主从复制--概念及架构

标签:数据库   mysql   style   用户   

原文地址:http://hiyang.blog.51cto.com/10728919/1795404

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!