mysql运维日记

mysql半同步复制
  半同步的特性
    收到ack或者超时关闭半同步
    从库只有将binlog flush到repay log才会给主库的等待线程发送ack
    超时转换为异步复制后,当至少一个半同步从节点赶上来是,主库便会自动转换为半同步复制
    半同步必须在主从库上都是打开的状态,否则便为异步复制

    相较于异步复制,半同步变慢时间至少是TCP/IP一次发送与接收所用的时间(多IDC部署本地至少有一个slave)
  半同步主库端
    after_flush -- 最后一个event才需要发送ACK
    after_sync -- 从库数据可能会多余主库数据
    after_commit -- 从库会丢数据,主库是commit后再等待
    after_rollback -- 同after_commit
    transmit_start -- 发送binlog之前做判断,所有等待这个点的主库线程都可以不等了,直接commit
    transmit_stop -- 主库想从库发送完binlog结束之后
    defore_send_event -- 发送binlog之前,是否需要从库发送ACK信息
    after_send_event -- binlog发送完成之后,
    after_reset_master -- reset_master语句执行之后
  半同步从库端
  半同步实现
  插件安装
  半同步自动开关

MySQL5.7多线程复制
  延迟优化方法
    增加buffer_pool的大小、缓存更多数据,减少IO压力
    增大log_buffer_size及group,减少buffer_pool的刷盘IO,提升写入性能
    修改flush_method为O_DIRECT,提升写入性能
    如果可以的话,关掉从库binlog,或者log_slave_uodates
    修改参数innodb_flush_log_at_trx_commit为0或者2
    如果没有关掉binlog,修改参数sync_binlog为0或者更大的数,减少IO的压力
  MySQL5.6多线程复制
    1.数据库比较多
    2.每个数据库的写入比较均匀
    因为MySQL5.6复制分发级别设置的是库
  MySQL5.7多线程复制
    所有处于prepare阶段的事务都可以并行提交
      last_commit
    ordered commit

猜你喜欢

转载自www.cnblogs.com/geek-ace/p/8992103.html