上篇我们搭建了MySQL的主从集群,现在我们了解下相关知识。
bin_log介绍
bin_log即二进制日志,它记录了数据库的所有操作,并记录在系统磁盘中。它可以用来查看数据库的变更历史,数据库增量备份和回复,MySQL复制(主从复制)。
bin_log的格式
statement(statement-basedreplication,SBR)基于SQL语句的复制优点
①基于段的模式,binlog相对较小,因此产生的日志量小,节省网络传输I/O
②并不要求主从数据库的表结构相同
③相比基于行的模式更为简单
缺点
①基于段的模式,对于非确定性的时间,无法保证主从复制的一致性,比如UUID,now等函数(因为是执行SQL,那uuid这种函 数相同的可能性基本为0),造成主从复制链路的中断
②对于存储过程,触发器,自定义函数修改也可能造成数据不一致
③相比基于行的复制方式在从节点上执行需要更多的行锁。当执行一条批量的SQL,在主库上锁定了一批数据,那么在从节点上 也要锁定相同的一批数据。
row(row-basedreplication,RBR)基于行的复制优点
①因为binlog的格式row,所以可以应用于任何SQL的复制,包括非确定函数,存储过程、自定义函数等。因为它同步过去的是 值,举个例子,UUID,从库执行的时候不是重新执行UUID,而是把主库的这个已经生成的值直接同步到从节点上
②可以减少数据库锁的使用
缺点
①要求主从数据库的表结构必须要相同,对于相同的列,即使顺序不同,有可能会引起主从中断
②无法在从节点单独执行触发器,有的时候你只想在从库上执行一些操作,是不行的。但基于SQL语句的没问题,执行那些变更的SQL就行了,但是基于行的就不行了。
mixed(mixed-basedreplication,MBR)混合模式复制
或者直接修改/etc/my.cnf
binlog扩展
当停止或重启服务器时,服务器会把日志文件记入下一个日志文件,Mysql会在重启时生成一个新的日志文件,文件序号递增;此外,如果日志文件超过max_binlog_size(默认值1G)系统变量配置的上限时,也会生成新的日志文件(在这里需要注意的是,如果你正使用大的事务,二进制日志还会超过max_binlog_size,不会生成新的日志文件,事务全写入一个二进制日志中,这种情况主要是为了保证事务的完整性);日志被刷新时,新生成一个日志文件。