python-mysql-replication原理分析
- 源码地址:https://github.com/noplay/python-mysql-replication
 - 文件解析:
├── binlogstream.py
├── bitmap.py
├── column.py
├── _compat.py
├── event.py
├── exceptions.py
├── gtid.py
├── __init__.py
├── packet.py
├── row_event.py
├── table.py- binlogstream.py
- BinLogStreamReader类,是调用入口,这个类支持用户传入mysql配置,slave需要同步的信息等,同时实现了__iter__,注册slave,读packet,协议参考:https://dev.mysql.com/doc/internals/en/replication-protocol.html
 
 - packet.py
- BinLogPacketWrapper类,mysql网络包序列化和反序列化
 
 - event.py
- 各个event(select、update、insert、delete、rollback、heartbeat等)对应的实现类,全都继承子BinlogEvent,在BinLogPacketWrapper类中把获取到的event映射到对应的evnet处理类
 
 - 依赖的基础文件
- pymysql中的connnections.py:Connection类,实现连接、读写mysql包(具体包格式由protocol实现)
 - pymysql中的protocol.py:MysqlPackge类,具体包的格式和读写
 
 
 
python-mysql-replication原理分析的更多相关文章
- mysql主从复制原理分析
		
1.主从复制这类NFS存储数据通过inotify+rsync同步到备份的NFS服务器,只不 过Mysql的复制方案是其自带的工具inotify 是一种文件系统的变化通知机制,如文件增加.删除等事件可以 ...
 - Mybatis useGeneratedKeys 填充自增主键值(使用Mysql)的原理分析
		
一.Mybatis配置 <insert id="insert" parameterType="com.test.TestDO" keyProperty=& ...
 - hbase replication原理分析
		
本文只是从总体流程来分析replication过程,很多细节没有提及,下一篇文章准备多分析分析细节. replicationSource启动过程 org.apache.hadoop.hbase.r ...
 - MySql索引原理分析
		
面试 问:数据库中最常见的慢查询优化方式是什么? 同学A:加索引. 问:为什么加索引能优化慢查询?同学A:...不知道同学B:因为索引其实就是一种优化查询的数据结构,比如Mysql中的索引是用B+树实 ...
 - MySQL Replication Report
		
很多人都会MySQL主从框架的搭建,但很多人没有真正理解同步基本用途.同步的基本原理,还有当Master和Slave同步断开后的处理以及导致Master和slave不同步的原因等等,当你对这些都了如指 ...
 - python 3 mysql 索引原理与慢查询优化
		
python 3 mysql 索引原理与慢查询优化 一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最 ...
 - PHP+MySql字符问题原理分析
		
假如数据库已经设置了utf-8 ,php文件也设置了utf-8 ,但在php文件的查询语句中未添加了 mysql_query("set names utf8")语句,此时php页面 ...
 - Mysql报错注入原理分析(count()、rand()、group by)
		
Mysql报错注入原理分析(count().rand().group by) 0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截 ...
 - B+Tree原理及mysql的索引分析
		
一.索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之 ...
 - 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
		
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...
 
随机推荐
- 前端3 — js — BOM没完( 不了解也行 )
			
1.js是什么? -- 英文全称javascript javaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚 ...
 - Centos7服务器上RabbitMQ单机安装
			
一.背景 最近项目中用到了RabbitMQ,但是发现自己本地没有安装,此文记录一下本地RabbitMQ的安装过程.注意不同的系统安装方式略有不同,此处我们记录的是Centos7的安装方式. 二.安装方 ...
 - Idea中JSP页面中out内置对象报错out.println标红问题
			
问题如图: 解决方法: 导入jar包 1.在pom.xml的<dependencies>里面复制 <dependency> <groupId>javax.servl ...
 - 日常Java 2021/10/4
			
读取控制台输入 将System.in包装在BufferedReader对象中来创建一个字符流 BufferedReader b = new BufferedReader(new InputStream ...
 - 24. 解决Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
			
第一种: sudo vim /etc/resolv.conf 添加nameserver 8.8.8.8 第二种: /etc/apt/sources.list 的内容换成 deb http://old- ...
 - 17. yum
			
https://www.linuxidc.com/Linux/2015-04/116331.htm
 - 零基础学习java------30---------wordCount案例(涉及到第三种多线程callable)
			
知识补充:多线程的第三种方式 来源:http://www.threadworld.cn/archives/39.html 创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnabl ...
 - Linux基础命令---alias别名
			
alias Alias不带参数或使用-p选项在标准输出上以"name=value"的形式打印别名列表.当提供参数时,为其值给定的每个名称定义一个别名.值中的尾随空格将导致在扩展别名 ...
 - 2.8 GO 参数传递
			
简单将GO中参数传递分为三类 数字.字符.字符串等类型 结构体 方法 GO的方法本身就是地址的入口,打印一个方法输出的是这个方法的地址 func test_func(){ //0x488a30 fmt ...
 - 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)
			
1.简介 1.1. 背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...