mysql主从同步的原理和实操

什么是mysql的主从同步?

当主库(master)的数据发生变化的时候,变化的数据会实时同步到从库(slave)

mysql主从同步有什么好处?

. 水平扩展数据库的负载能力

. 容错,高可用。 Failover(失败切换)/high Available

. 数据备份

主从同步的原理

master-slave的原理

无论是add,delete,update,还是创建函数,存储过程这些操作,都是在master上,master有这些操作时,slave库都会实时同步这些数据。

在master机器上,主从同步事件会写到特殊的log文件(binlog)中;

在slave机器上,读取log文件的主从同步事件,根据读取的文件变化,在slave上做出相应的更改。

这样就完成了主从同步。

主从同步事件方式

有3种形式:statement、row、mixed。

statement:会将对数据库操作的sql语句写入到binlog中。 row:会将每一条数据的变化写入到binlog中。 mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。

master机器上的操作

当master上数据发生改变,该事件变化会按顺序写入到binlog文件中

binlog dump线程

slave连接到master的时候,master会为slave开启binlog Dump线程,master的binlog发生改变时,binlog Dump线程会通知slave,并把binlog的数据发送到slave。

在slave机器上的操作

当主从同步开启的时候,slave上会创建2个线程。

    I/O线程。该线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log。 SQL线程。该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。
经验分享 程序员 微信小程序 职场和发展