问题:当高并发下如何减轻mysql的压力(mysql服务器与web服务器不同,web服务器直接加装几台服务器就好了)
解决:mysql复制功能减轻数据库的读负载
原理:mysql复制功能是基于mysql的主数据库进行的复制二进制日志进行的
顺序:新增数据进入--->主库二进制文件记录-----(复制二进制文件到备库二进制文件并更新)------>读取从库/主库的数据(需要配置负载均衡,或者用代理来读取从数据库)
缺点:异步便会出现延迟,导致出现主从数据库的数据不一致情况
mysql的主从复制具体步骤有3步,我们分开介绍
前提:开启mysql的二进制日志
第一步:主服务器将数据库变更(数据更新)写入二进制日志中
第二步:从服务器开启一个io线程对接 主服务器的二进制日志转储线程(binlog_dump),由从服务器的io线程发起请求(类似client请求),主服务器的二进制转储线程将主服务器的二进制日志传递给从服务器。(类似tcp的握手协议:主服务器发出通知给从服务器有新的数据,从服务器发起io请求,主服务器相应,从服务器读取相关二进制日志。)
第三步:从服务器对主服务器的二进制日志起一个sql线程对主服务器二进制日志重放(relay_log)
(此步骤需要注意点:如果主从复制是statement,那么重放方式:重新执行主库执行过的sql。如果主从复制方式是row,重放方式便是对数据进行直接性的修改)
---------------------