当master(主)数据库的数据发生变化时,数据会实时同步到slave(从)库
3.1-主从同步体系结构
3.2-针对数据库的操作(delete,insert,update,创建函数,创建存储过程等) 都在master数据库上操作,当master上有
操作时,slave会快速的结束这些操作,从而做到同步;
3.3-在master机器上,主服务器会把所有的数据库发生改变的操作写到特殊的log文件中去(binary-log),slave机器
读取binary-log日志文件中记录的数据库发生改变的操作,并在slave机器上执行这些操作,从而保证了主从数据库的数据
同步
4.1-主从同步事件类型(三种)
(1)statement :会将对数据库操作的sql语句写入到binary-log日志文件
(2)row:会将每一条数据的变化写入到binary-log日志文件
(3)mixed:statement与row的混合;Mysql决定什么时候写statement格式的,什么时候写row格式的binlog
4.2-当master机器上数据发生变化时,master机器会按照操作顺序记录数据发生变化(delete,upate,insert)的操作
到binary-log日志文件中去
4.3-当slave机器连接到master机器上时,master机器会为slave机器开启binlog dump线程,当binary-log上数据
发生变化时,binlog dump线程会通知slave机器,并将发生变化的binary-log内容发送给slave机器
4.4-当主从同步开启时,slave机器会创建两个线程
(1)I/O线程:该线程连接到master机器,master机器的binlog dump线程会把binary-log日志文件的内容
发送给该I/O线程;该I/O线程接受到binary-log日志文件的内容后,再将其写入到本地的relay-log日志文件中
(2)SQL线程:该线程读取I/O线程写入的relay-log日志文件,再根据其内容对slave数据库进行操作
4.5-可以通过SHOW PROCESSLIST命令查看master机器和slave机器上各自的线程