MySQL知识点总结(十五)
相对于坐标位置,使用GTID配置复制时都具备哪些优势?
使用GTID(全局事务标识符)可以唯一标识复制拓扑中的每个事务。
每个GTID的格式为<source-uuid>:<transaction-id>,例如:0ed18583-47fd-11e2-92f3-0019b944b7f7:338
由于GTID记录了每个修改性事务执行的日志id和发生本次更改所在的服务器UUID,因此在主服务器发生故障时,复制链中的每个从属服务器都能精准确定每一个事务的详细信息,从而在故障修复时能确保数据库的完整性和数据的一致性,特别是对于复杂复制拓扑系统更是如此。
在对复制使用过滤规则时,给出你所知道的方法并说明各自的适用场合。
复制的过滤规则可以控制复制范围,过滤规则在主服务器和从属服务器上都可以设置。
在主服务器上设置使用binlog-*过滤器,以控制二进制日志的写入。
在从属服务器上使用replicate-*过滤器,以控制二进制日志的读取。
当数据库环境中的不同服务器用于不同目的时,就可以考虑使用过滤规则。
二进制日志有哪几种记录格式,请详细加以说明。
有三种,分别是基于行(默认),基于语句以及混合记录格式。
基于行的二进制日志:记录对单个表行的修改,始终能正确重放语句,包括CURRENT_USER()
基于语句的二进制日志:包含实际的SQL语句(DDL,DML),日志文件较小,可用于审计,但不能保证非确定性语句在远程机器上的正确重放。
混合格式二进制日志:默认情况下使用基于语句的日志记录,但当语句不确定时会自动使用基于行的日志记录,如调用UUID(),USER(),FOUND_ROWS(),ROWS_COUNT()或任何用户定义的函数。