MySQL半同步复制--master dump线程2
来源:互联网 发布:校宝软件 编辑:程序博客网 时间:2024/06/15 23:06
mysql_binlog_send: //是否在binlog index文件中能够找到指定的binlog文件名 if (mysql_bin_log.find_log_pos(&linfo, name, 1)) ... if ((file=open_binlog_file(&log, log_file_name, &errmsg)) < 0)//打开binlog文件 ... //初始化semi-syncif (RUN_HOOK(binlog_transmit, transmit_start,thd, flags, log_ident, pos, &observe_transmission))) ... while (!net->error && net->vio != 0 && !thd->killed){//进入while循环//开始发送binlog之前需要重置packet(reset_transmit_packet) if (reset_transmit_packet(thd, flags, &ev_offset, &errmsg,observe_transmission)) //会调用RUN_HOOK(binlog_transmit, reserve_header, (thd, flags, packet))) while (!thd->killed && !(error= Log_event::read_log_event(&log, packet, log_lock, current_checksum_alg,log_file_name,&is_active_binlog))){ if (observe_transmission && RUN_HOOK(binlog_transmit, before_send_event,(thd, flags, packet, log_file_name, pos))) ... my_net_write(net, (uchar*) packet->ptr(), packet->length());//发送binlog if (skip_group == false && event_type == LOAD_EVENT){ send_file(thd);//通过TCP方式发送 } if (observe_transmission && RUN_HOOK(binlog_transmit, after_send_event,(thd, flags, packet, log_file_name, skip_group ? pos : 0))) ... }//end 一批 //等待master通知 ret= mysql_bin_log.wait_for_update_bin_log(thd, heartbeat_ts); if (goto_next_binlog){//打开下一个binlog end_io_cache(&log); mysql_file_close(file, MYF(MY_WME)); file=open_binlog_file(&log, log_file_name, &errmsg); ... } }//end while RUN_HOOK(binlog_transmit, transmit_stop, (thd, flags));//dump停止reset_transmit_packet(thd, flags, &ev_offset, &errmsg,observe_transmission)
1)observe_transmission初始为FALSE,如果是半同步,在transmit_start函数中会置成TRUE
2)repl_semisync.reserveSyncHeader(header, size)->repl_semi_reserve_header
用于在packet的头部预留字节,以维护和slave的交互信息,目前预留3字节
ReplSemiSyncBase:kSyncHeader[2],这里为在packet头部拷贝2字节,
固定值作为MAGIC NUMBER,只有slave开启semisync才会保留额外的
packet头部比特位,不管master是否开启了semisync
const unsigned char ReplSemiSyncBase::kPacketMagicNum = 0xef;
const unsigned char ReplSemiSyncBase::kSyncHeader[2] ={ReplSemiSyncBase::kPacketMagicNum, 0};
阅读全文
0 0
- MySQL半同步复制--master dump线程2
- MySQL半同步复制--master dump线程1
- MySQL半同步复制--handle_slave_io线程--2
- MySQL半同步复制--handle_slave_io线程--1
- mysql同步复制M-M(master master)模式
- mysql同步复制M-M(master master)模式
- MySQL半同步复制
- mysql半同步复制
- MySQL半同步复制
- MySQL半同步复制
- MySql-半同步复制
- MySQL半同步复制
- MySQL半同步复制
- MySQL半同步复制
- mysql半同步复制
- MySQL半同步复制
- MySQL半同步复制
- mysql半同步复制
- JSP
- 设计模式【空对象模式NullObjectPattern】
- 个在 Android 上实现录像和录音功能的小例子。
- SQLite 命令
- java se--8.多线程-2.创建线程和常用方法
- MySQL半同步复制--master dump线程2
- Java 中Socket的用法
- Universal-CollapsingTabLayout
- 变量属性(auto、register、static、extern)
- p59-4.1(2)
- DeepLearing学习笔记-改善深层神经网络(第三周作业-TensorFlow使用)
- 分页查询
- PixelSlide
- 文字存入mysql数据库时出现Incorrect string value错误