项目的架构是:生产的mysql库有一个备库,备库不对外提供服务,唯一的目的是备份生产mysql库的数据
MySQL主从复制需要开启binlog日志,一共有三种模式
binlog模式
STATEMENT模式
- 基于SQL语句的复制(statement-based replication, SBR)
- 每条修改操作SQL语句都会记录到binlog
- 优点是日志量比较少,缺点是会导致主从不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
ROW模式
- 基于行的复制(row-based replication, RBR)
- 逐行记录每条被修改的数据
- 优点:STATEMENT模式数据不一致的问题得到解决
- 确点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。
MIXED模式
- 混合模式复制(mixed-based replication, MBR)
- 优先使用STATEMENT模式,某些特殊情况,使用ROW模式
- 集合了两种模式的优点,规避了缺点
binlog配置参考
#设置日志格式
binlog_format = mixed
#设置日志路径,注意路经需要mysql用户有权限写
log-bin = /data/mysql/logs/mysql-bin.log
#设置binlog清理时间
expire_logs_days = 7
#binlog每个日志文件大小
max_binlog_size = 100m
#binlog缓存大小
binlog_cache_size = 4m
#最大binlog缓存大小
max_binlog_cache_size = 512m