MySQL主从同步是一种常用的数据库复制技术,它可以将一个MySQL数据库实例(称为主库)的数据变更同步到另一个MySQL实例(称为从库)
一个Java用于首先要去连接数据库的中间件,如何中间件里面至少连接两个库,主库和从库,主库负责写数据,从库负责读数据,当主库写数据的时候就需要把数据同步到从库中,这就是主从同步。
MySQL主从复制的核心是一个二进制文件(BINLOG)记录了所有的DDL和DML语句,但不包括数据查询(SELECT,SHOW)语句。
具体同步流程如下:
当主数据发生变化(比如写操作),主库会把这些变化的数据写入到BINLOG中,这时从库有一个IOThread线程,专门去主库的BinLog日志中去读取数据,读取完成后会将数据写入到从库的中继日志中(Relay Log),再由从库的SQLThread线程读取中继日志,把命令再重新执行一下。
- Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中
- 从库读取主库的二进制文件日志文件BinLog,写入到从库的中继日志Relay Log
- slave重做中继日志中的事件,将改变反映他自己的数据。