什么是主从复制
就是将写读的操作,从数据上分离开
主库(只负责写操作),一般只有一个
从库(只负责读操作),可根据业务扩展多个
所谓的主从复制原理,简单总结成一句话就是:
主库记录日志 → 从库拉日志 → 执行日志
更加具体的说法是,通过两日志,三线程来实现
可以简单看一张图
流程如下:
1.主库只负责写,同时将写操作的日志,写入到binlog中
2.主库会创建,bin log dump thread,目的是监听binlog的变化,将binlog新增的部分发送到从库
3.从库会创建一个io thread,目的是读取主库传过来的binlog内容, 并写入到从库的relaylog中(中继日志)
4.从库再次创建一个sql thread,监测到relaylog有变化的时候,会将relaylog追加的内容,解析成sql,并且依次执行sql,这里也被叫做数据重做,也可以叫数据重演,目的是为了和主库实现数据一致。
那么,配置好主从复制之后,应用服务应该怎么做读写分离呢?,常见的会遇到什么样的问题,又应该具体怎么解决呢?