MySQL 5.7 复制1
2018-01-23 本文已影响10人
8813d76fee36
简介
复制可以使数据从一台MySQL数据库服务器(master)复制到一台或多台MySQL数据库服务器(slaves)。默认情况下,复制是异步的,slaves不需要为了接受更新而长期与master保持连接。通过设置,你可以将多个数据库、指定的数据库、甚至数据库中指定的表进行复制。
优点
- 横向扩展
通过设置多台slaves来提升读取性能。在该场景下,所有的写及更新操作必须由master完成。读操作可以在一台或多台slaves上完成。由于master主要负责写操作,所以写操作的性能会大大提升;读操作也会随着slaves的数量提升而提升。 - 数据更安全
由于数据被复制到slave,而slave能够暂停复制进程,所以有必要在slave上开启数据备份服务。 - 数据分析
实时数据在master上产生,同时slave可以在不影响master性能的前提下完成数据分析操作。 - 远距离数据传输
可以通过复制将本地数据同步到远程服务器。
继续介绍。。。
MySQL 5.7支持使用不同的方式来实现复制。
- 基于binary log
MySQL实现主从复制的传统方式,需要日志文件和位置信息用于master和slave的同步。 - 基于global transaction identifiers(GTIDs)
新的主从复制方式。不需要日志文件和位置信息,简化了复制任务。复制操作使用GTIDs的时候,只要master提交了事务,slave上也会提交相同的事务,以此来保证数据一致性。
MySQL的复制支持不同类型的同步机制。
一种原始的同步类型是单程的,异步的复制。一台服务器扮演master,一台或多台服务器扮演slaves。这与NDB Cluster的特征——同步复制形成了对照。
在MySQL 5.7中,除了内置的异步复制外,还支持半同步复制。使用半同步复制时,提交操作在master锁返回执行事务直到至少一个slave得知它收到并记录了这次事务事件的会话之前执行。
有两种主要的复制格式。
- Statement Based Replication(SBR)
复制所有的SQL语句。 - Row Based Replication(RBR)
仅复制受影响的行。
除此之外,还可以使用混合模式。
- Mixed Based Replication(MBR)
复制通过一些不同的设置和参数控制。
后记
- 复制格式由
my.cnf
的binlog-format
设置,其中MySQL版本<=5.7.6,默认为STATEMENT;>=5.7.7默认为ROW。
binlog-format