定义 ① 指将主数据库的DDL和DML操作通过二进制日志传到从数据库中,然后在从数据库上对这些二进制日志重新执行(也称为:重做),从而使得从数据库和主数据库的数据保持同步 ② MySQL支持一台主数据库同时向多台从数据库进行复制,从数据库同时也可以作为其他从数据库的主数据库,实现链状复制
优点 ① 如果主数据库出现问题,可以快速切换到从数据库,保障服务正常可用,继续对外提供服务 ② 实现读写分离,增删改的操作在主数据库,查询的操作在从数据库,降低主数据库的访问压力 ③ 可以在从数据库中执行备份,以避免备份期间影响主数据库的服务(在进行数据备份时,需要加上全局锁,避免数据不一致的情况;一旦加上全局锁,数据库处于只读状态,其他客户端是无法执行增删改操作的)
二、底层原理
原理 ① 主数据库中一旦发生增删改以及DDL操作时,会将所有数据的变更写入二进制日志文件中 ② 从数据库中一个IO线程发起请求连接主数据库,读取主数据库中的二进制日志文件,读取完后会写入到从数据库中的中继日志文件中 ③ 从数据库中另一个SQL线程读取中继日志文件中数据,把中继日志文件中的数据变更反映到从数据库中,从而保证主从数据库的数据一致
总结 ① 主数据库在事务提交时,会把数据变更记录在二进制日志文件Binlog中 ② 从数据库读取主数据库的二进制日志文件Binlog,写入到从数据库的中继日志Relaylog中 ③ 从数据库重做中继日志中的事件,将改变反映它自己的数据
三、结构搭建
1. 服务器准备
准备好两台服务器,分别安装好MySQL服务,并完成基础的初始化准备工作
2. 主数据库配置
修改配置文件/etc/my.cnf
重启MySQL服务
登录MySQL,创建远程连接账号,并授予主从复制权限
通过指令,查看二进制日志坐标
举例说明 ① File:表示主数据库从哪个二进制日志文件开始推送给从数据库 ② Position:表示从哪个位置开始推送日志 ③ Binlog_Ignore_DB:表示不需要同步的数据库