項目的架構(gòu)是:生產(chǎn)的mysql庫有一個備庫嗜愈,備庫不對外提供服務(wù)珠十,唯一的目的是備份生產(chǎn)mysql庫的數(shù)據(jù)
MySQL主從復(fù)制需要開啟binlog日志疼邀,一共有三種模式
binlog模式
STATEMENT模式
- 基于SQL語句的復(fù)制(statement-based replication, SBR)
- 每條修改操作SQL語句都會記錄到binlog
- 優(yōu)點是日志量比較少誓焦,缺點是會導(dǎo)致主從不一致(如sleep()函數(shù), last_insert_id()诺祸,以及user-defined functions(udf)等會出現(xiàn)問題)
ROW模式
- 基于行的復(fù)制(row-based replication, RBR)
- 逐行記錄每條被修改的數(shù)據(jù)
- 優(yōu)點:STATEMENT模式數(shù)據(jù)不一致的問題得到解決
- 確點:會產(chǎn)生大量的日志携悯,尤其是alter table的時候會讓日志暴漲。
MIXED模式
- 混合模式復(fù)制(mixed-based replication, MBR)
- 優(yōu)先使用STATEMENT模式序臂,某些特殊情況,使用ROW模式
- 集合了兩種模式的優(yōu)點实束,規(guī)避了缺點
binlog配置參考
#設(shè)置日志格式
binlog_format = mixed
#設(shè)置日志路徑奥秆,注意路經(jīng)需要mysql用戶有權(quán)限寫
log-bin = /data/mysql/logs/mysql-bin.log
#設(shè)置binlog清理時間
expire_logs_days = 7
#binlog每個日志文件大小
max_binlog_size = 100m
#binlog緩存大小
binlog_cache_size = 4m
#最大binlog緩存大小
max_binlog_cache_size = 512m
主從復(fù)制圖解
image.png