MySQL的复制是异步复制
以下MySQL主从同步的结构图
一共分三部分首先master的进行数据的操作,然后master会把日志写到binarylog里面。在slave里面有两个进程,一个是IO一个是SQLthread,IO复制读取master的binarylog并存取到slave的relaylog里面SQLthread负责在relaylog里面读取日志并在slave存取这个日志
MySQL复制基础是基于BinLog日志。
三种日志
statement:binlog中存储SQL语句,存储日志量是最小的。可能会造成主从不一致。(不建议)row:存储event数据,存储日志量大,但是不能很直接的进行读取。mixed:介于row和statement之间,对于不确定的操作使用row记录,如果每天数据操作量很大,产生的日志比较多,可以考虑使用mixed格式。MySQL复制可以是对整个实例进行复制,也可以对实例中的某个库或是某个表进行复制
master控制参数
--binlog-do-dp控制哪个表--binlog-ignore-db忽略哪些表slave端控制参数replicate-do-doreplicate-ignore-dbreplicate-do-tablereplicate-ignore-tablereplicate-wild-do-tablereplicate-wild-ignore-table存在两种复制类型。
基于二进制日志的复制如果主宕机,从不能确定日志点使用GTID完成基于事务的复制MySQL5.6的新特性MySQL支持半同步复制