mysql主从复制原理和binlog模式、主从延时解决

(1)master记录一个binlog日志,该日志存储着sql语句。

(2)slave启动一个IO线程负责把master的 bin-log 文件 sql 语句复制过来写到本地的relay-log(中继日志)文件中;

(3)slave同时启动一个SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行。

主从同步事件binlog模式有3种形式:statement、row、mixed。

  1. statement: 会将对数据库操作的 sql 语句写入到 binlog 中。
  2. row: 会将每一条数据的变化写入到 binlog 中。
  3. mixed: statement 与 row 的混合。MySQL 决定什么时候写 statement 格式的,什么时候写 row 格式的 binlog。

主从延时解决方案:

  • 主服务器要负责更新操作,对安全性的要求比从服务器要高,所以有些设置参数可以修改,比如 sync_binlog=1,innodb_flush_log_at_trx_commit =  1   之类的设置等。
  • 选择更好的硬件设备作为 slave。
  • 把一台从服务器当度作为备份使用, 而不提供查询, 那边他的负载下来了, 执行relay log 里面的 SQL 效率自然就高了。
  • 增加从服务器喽,这个目的还是分散读的压力,从而降低服务器负载。

你可能感兴趣的:(mysql)