MySQL数据库之主从复制
一)MySQL主从复制的原理
MySQL主从复制是一个异步的复制过程,数据从一个MySQL数据库(master)复制到另一个MySQL数据库(slave),master和slave之间实现主从复制,主要由3个线程来完成工作。
分别为: I/O dump线程(Master端),I/O线程、SQL线程(Slave端)
- 在slave节点上执行start slave命令开启主从复制,开始进行复制
- slave节点上的IO线程会通过master节点上已经授权的复制用户请求连接master节点,并请求将执行binlog日志文件的指定位置
- master节点接收到来自slave节点的IO线程的请求,其负责复制的IO线程会根据Slave节点IO线程请求的信息,分批读取binglog日志文件指定位置之后的宾隆信息,然后返回给Slave节点的IO线程,返回的信息中除了binlog日志内容外,还有在Master服务器端记录的IO线程。返回的信息中除了binlog中的下一个指定更新位置
- Slave节点的IO线程获取到Master节点上的IO线程发送的日志内容,日志文件及位置点,会将binlog日志内容依次写到slave节点的relay log(中继日志)文件中,并将binlog文件和位置记录到master-info文件中
- slave节点的SQL线程会实时检测本地relay log中新增的内容,然后把relay log文件中的内容解析成sql语句,应用到本地,完成数据同步
二)为什么要做MySQL主从复制
1)数据分布
可以做异地容灾,然后也可以提高用户体验
(假如北京和上海机房都有服务器,mysql安装在北京,为了提高效率,我们会在上海布置一台从服务器,然后让上海机房的服务器访问上海的从库)
2)负载均衡
可以布置多台从服务器,提高读效率
3)备份
我们可以专门在一台从服务器上实施备份
4)高可用性和故障切换
5)升级和测试
我们可以先找一台从数据库来升级服务(MySQL),不会影响主库
三)MySQL主从复制的简单配置