mysql

mysql的主从复制依靠的是binlog文件,master 执行sql会将sql语句存储到binlog文件中。 slave读取该文件保存至slave中,然后再读取这个文件写入slave库

主从复制有三种模式

  1. statement 基于sql语句
  2. row 基于行模式
  3. mixed 综合模式

    常见问题

    image.png
    MySQL使用单线程重放RelayLog。
    在高并发情况下进行了修改操作后,数据还没有从主库同步到从库,这时进行查询操作将会查询到到历史数据或者未保存数据.

    解决方案:

  4. 设置mysql为强制走主库.

  5. 选择性走主库:对数据做缓存, 一旦数据在1秒内做过变更,那么久强制从主库查询

    设置强制走主库时,java代码需要保证在同一个事物下, 否则sql语句只有第一条会强制走主库