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数据库做相应的操作。
下一篇:
mysql 截取字符串操作实现