MySQL-主从复制:基于二进制文件复制详解
前言
主从复制是指把一个MySQL的数据库服务器作为主服务器(master),然后把master的数据复制到一个或者多个MySQL数据库服务器作为从服务器(slave)。从master到slave的复制一般是异步复制,所以从服务器的复制可以随时停止,也不会影响到主服务器的使用。可以通过配置来决定只复制哪些数据库或者哪些表的数据。
主从复制的优点
- 读写分离提高负载:master服务器不在负载读操作,只处理写入和更新操作,可显著提升主服务器的写操作的性能。而读操作是通过多个slave服务器来读取数据,多个slave服务器可以分散读操作的压力,减少对单机I/O和带宽的依赖,也可以提升读操作的性能。
- 数据安全:因为数据是异步复制过来的,可以在slave服务器上进行测试,或者进行数据分析。即不会更改master服务器的数据,也不会影响master服务器的性能
- 远程数据分发:当你需要在本地使用数据时,可以通过复制功能把数据复制到本地,这样就不需要访问远程master服务器
基于二进制文件(binary log)复制
原理介绍
1、master服务器把对源数据库的写入和更新操作以事件的方式记录到二进制日志文件(binary log)中。不同的操作方式会以不同的日志格式记录到文件中
2、slave服务器开启一个I/O线程连接master服务器去请求binary log,然后写入到本地的中继文件(relay log)中
3、master的开启一个log dump线程读取binary log并传送给slave的I/O线程
4、slave开启一个SQL线程读取relay log中的命令,在slave服务器上执行
环境准备
操作系统 | 数据库 | ip地址 | 端口 | 主/从 |
---|---|---|---|---|
window server 2008 r2 | mysql 8.0.12 | 192.168.1.98 | 3006 | 主 |
window server 2008 r2 | mysql 8.0.12 | 192.168.1.97 | 3006 | 从 |
window server 2008 r2 | mysql 8.0.12 | 192.168.1.96 | 3006 | 从 |
1.Master配置
1.需要设置一个唯一的 server-id ,并且设置二进制日志文件 log-bin