mysql lenenc int_MySQL-NonMySQL同步工具源码解读——确定同步位置

经过上一节的鉴权过后,程序已经受主库认可,并且可以像主库发起同步请求。在发起请求之前,还有一个可选的步骤:确认同步时间点。同步时间点由两个属性进行标识:Binlog文件名、偏移量。工具支持自定义时间点,如果没有指定,默认从主库的当前时间点开始同步。下面,介绍获取时间点协议,主要是向主库发起“SHOW MASTER STATUS”查询指令。

这是一个COM_QUERY类型的查询。COM_QUERY是基本的查询命令,服务器返回若干行,每行若干列,可能我们常见的select指令,也是COM_QUERY命令。他的格式非常简单。1 [03] COM_QUERY

string[EOF] the query the server shall execute

而解析服务器返回的结果可以说非常复杂,所以我们写数据库程序一般是使用客户端库,而不是自行解析。总体流程如下:

0cd836d71112b6532d09c5d3a561bd84.png

对于第一个字节是0xfb的情况,只在执行如下指令的时候才会发生。应用目前没有这种操作,所以暂时忽略之。LOAD DATA LOCAL INFILE '' INTO TABLE

EOF、ERR、OK包的格式上一节都有描述,下面给出列定义和行数据的解析方法。

列定义

主要是两个版本,一个是ColumnDefinition41和ColumnDefinition320这两种,后者应用于4.1以前版本的MySQL。这里只给出新版MySQL的格式。lenenc_str catalog

lenenc_str schema

lenenc_str table

lenenc_str org_table

lenenc_str name

lenenc_str org_name

lenenc_int length of fixed-length fields [0c]

2 character set

4 column length

1 type

2 flags

1 decimals

2 filler [00] [00]

if command was COM_FIELD_LIST {

lenenc_int length of default-values

string[$len] default values

}

行数据

每行可以包含多个列,每个列都是一个lenenc_str。

lenenc_xxx

这里简单说一下这种lenenc_xxx类型的东西到底是什么。lenenc_str由两部分组成,第一部分是一个lenenc_int类型、标记字串长度的整数,第二部分是字串本身。这个lenenc_int类型,保证了字串长度可以超过255。同时考虑到大部分数据都比较短,每次都用多个字节表示长度过于浪费,于是指定了编码规则,规则如下:

A. 如果第一个字节小于0xfb,那么他本身就是字串长度。

B. 如果第一个字节是0xfc,那么他后面的2个字节表示字串长度。

C. 如果第一个字节是0xfd,那么他后面的3个字节表示字串长度。

D. 如果第一个字节是0xfe,那么他后面的8个字节表示字串长度。需要注意,此时需要查看究竟他后面有没有8个字节,如果没有,可能这是一个EOF包。

E. 如果第一个字节是0xff,那么这意味着一个ERR包。

F. 如果第一个字节是0xfb,这只会出现在行数据中,意味着这个字段是个NULL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DancingLinks刷题集

HDU 3663 Power Stations 精确覆盖 题意&#xff1a;每个城市i有xi->yi天可以成为发射站&#xff0c;发射站覆盖范围为与该站有一条边链接的城市。 同时&#xff0c;每个每天城市必须且只能被一个发射站覆盖 天数D<5。 每个城市的发射站关闭后就不再开启。即只能选择一段…

【web前端优化】前端无优化,庸人自扰之!

前言 我发现一个人厉害不只是他厉害&#xff0c;他的名字也一定要跟着厉害才行&#xff0c;比如我刀狂剑痴叶小钗了&#xff0c;若是老夫叫做刀狂剑痴叶小草&#xff0c;估计就缺少气势了&#xff01;&#xff01;&#xff01; 又如百世经纶一页书&#xff0c;如果叫做百世经纶…

react源码解读 {createClass}

对一个框架源码的解读&#xff0c;既有利于更深入地了解框架&#xff0c;使用上更得心应手&#xff0c;又可以学习到其中代码组织的思路&#xff0c;吸收其精华简洁的写法以便于日常工作上使用。下面我就挑选近年大热门react&#xff08;15.3.1&#xff09;&#xff0c;从中剖析…

mysql分析sql语句性能_sql语句执行性能分析

explain根据上面提到的explain去比较&#xff0c;就可以得出结果了mysql> explain select * from users limit 1000,20;---------------------------------------------------------------------------------| id | select_type | table | type | possible_keys | key | key…

sourceTree添加git密钥步骤

给多个远程服务器比如https://github.com/wangjian2014/wjtest/blob/master/wj.txt添加public密钥 本地服务器添加private密钥 SSH Client 选择PuTTY/Plink 选择Generate&#xff0c;生成public 和private密钥&#xff0c;将public密钥数据复制到远程服务器上面 保存private…

[tomcat] 配置数据源介绍

从tomcat5.5开始,内置了DBCP数据源的实现。tomcat数据源提供两种配置方式,两种数据源的访问范围不同&#xff0c; 1.全局数据源:顾名思义在tomcat应用下的所有web都可以访问。 2.局部数据源&#xff1a;适用单个web应用 ★★ 不管以那种方式都得提供特定数据源的jdbc驱动。 此…

background-size

background-size:contain;contain:包含 按比例调整图片&#xff0c;使得图片的宽度自适应容器的宽度。 相当于在ps中&#xff0c;约束比例设置原始图片的宽度值等于容器的宽度值。 如果图片过大&#xff0c;等比压缩后容器的高度方向上可能会有空白。 background-size:cover;co…

在mybatis用mysql的代码块_关于Mybatis 中使用Mysql存储过程的方法

1.存储过程的简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译&#xff0c;然后执行&#xff0c;而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集&#xff0c;经编译后存储在数据库中&#xff0c;用户通过指定存储过程的名字并给定参数(如果该存储…

MySQL5.6免安装配置与“系统找不到指定的文件”错误

1.下载免安装版本的mysql-5.6.11-winx64 (本机 win7 64位)2.将文件解压到任意&#xff0c;不要有中文&#xff08;有中文的情况没试过&#xff0c;不过最好避免这种情况&#xff09;3.配置mysql 环境变量&#xff0c;在 path后面加上D:\Program Files\mysql-5.6.11-winx64\bin…

安装配置OSA运维管理平台

1、下载完整包V1.0.2wget http://www.osapub.com/download/OSA_BETA_V1.0.2.tar.gzV1.0.5wget http://www.osapub.com/download/OSA_BETA_V1.0.5.tar.gz 2、解压安装tar xvf OSA_BETA_V1.0.5.tar.gzmv osa /usr/local/ PS&#xff1a;该版本只允许指向/usr/local/osa/目录&…

as5300g2 nas软件功能_【浪潮混闪存储AS5300G5-可同时提供SAN和NAS两种服务的中端混闪存储系统】价格_厂家 - 中国供应商...

功能特性极速性能(1)平台升级&#xff1a;G5采用全新一代硬件平台&#xff0c;芯片升级、规格升级&#xff0c;性能同比上一代平均提升30%&#xff0c;为提高存储系统的数据处理效率提供有力支撑。同时结合G5的智能软件&#xff0c;如智能缓存加速、智能分层、智能QOS等高级功能…

c 总结

C-总结 #pragma mark - 第一章&#xff1a;C基础 void func1(); void func1() { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ int a 030; // 以0开头得数是八进制的数&#xff0c;计算的时候要换算成10进制进行计算 int b a * 10; printf("%d", b); // 此时打印…

windows下使用cpanm进行模块安装

windows下使用cpanm进行模块安装要放假了&#xff0c;突然想整理一下手头上的软件&#xff0c;突然发现perl的安装模块这个功能不能用。弄了一下&#xff0c;使得windows 下 perl 的 cpanm能用&#xff0c;避免成天为了依赖痛苦。软件版本&#xff1a;#理论上此方法所有版本通用…

Response缓冲区

1 protected void Page_Load(object sender, EventArgs e)2 {3 //关闭缓冲区&#xff0c;输出会一个一个写出来&#xff08;只有在火狐浏览器中才有效果&#xff09;。4 //Response.BufferOutput false;5 6 //开启缓冲区7 Response.Buffe…

Javascript模块模式学习分享

之前一直也有听说和接触到模块模式、这次整理了一下、感觉蛮有收获的、特来分享。 模块模式很基本的一点就是匿名函数的 闭包、通过这点来实现。 1 //模块模式2 3 var MODULE (function(){4 /*函数默认是返回this的、但是定义了my对象后、return my; 返回值就变成了my对象…

Source Insight基本使用和快捷键

为什么要用Source Insight呢&#xff1f;貌似是因为比完整的IDE要更快一些&#xff0c;比较利于查看大量的代码。 软件的安装很简单&#xff0c;设置好安装目录。 配置好文档路径&#xff0c;当然这个也可以在Options里面改&#xff0c;选Options->Preferences…里面的Folde…

powerquery mysql数据库_window 10 下 --excel | power query 通过 ODBC链接 mysql 数据库

excel链接到mysql的方法有几种&#xff0c;今天主要介绍如何通过ODBC链接odbc是 “开放数据库连接”&#xff0c;你可以通过下载插件使得自己的excel可以连接到不同的数据库。关于版本的选择&#xff0c;就是excel版本obdc版本mysql obdc版本(需要一样)第一步 下载mysql odbc…

table样式

一直以来&#xff0c;css和JS都是软肋&#xff0c;因为需要不得不重新温故。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style type"text/css">table.hover…

MAC和XCODE常用快捷键

摘自&#xff1a;http://www.cnblogs.com/yjmyzz/archive/2011/01/25/1944325.html 1. 文件CMD N: 新文件CMD SHIFT N: 新项目CMD O: 打开CMD S: 保存CMD SHIFT S: 另存为CMD W: 关闭窗口CMD SHIFT W: 关闭文件2. 编辑CMD [: 左缩进CMD ]: 右缩进CMD CTRL LEFT: …

数组与内存控制

注&#xff1a;我已对本文章进行了更新&#xff0c;劳烦移步。 java语言是典型的静态语言&#xff0c;因而&#xff0c;数组也是静态的&#xff0c;即当该数组被初始化之后&#xff0c;该数组的长度是不可变的。java 语言的数组变量是引用类型&#xff0c;什么意思呢&#xff1…