mysql repication
1 mysql repication原理
前端用户的写操作,或者是数据库修改操作,都会记录到二进制日志文件,保存为事件;master通过3306端口将binlog发给slave mysql服务器,slave mysql服务器将binlog保存到relay log,读取relay log并执行一遍,将数据写入磁盘
1.1 主从示意图
1.2 一主多从、多级复制
2 mysql repication先天缺陷
mysql一个查询只能在一颗CPU上执行,若主有多个CPU,同时执行多个事务,多个事务的往数据库中写数据的速度会比较快,但是二进制日志会在内存中缓存,一段时间后才会一条一条从缓存同步到二进制日志文件。此时,二进制日志才会同步到从上,salve从中继日志一条一条读取事件,并执行,这样,主的速度比从快很多
3 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:分摊读负载,一主多从,主写从读