在MySQL 5.7.x版本中,mysqlbinlog工具解析任何一个本地的binlog或relay log时,都不会在mysqlbinlog命令执行结束时追加rollback语句,

但在MySQL 5.6.x版本中,mysqlbinlog工具解析每一个本地binlog和relay log时在mysqlbinlog命令退出时都会加rollback语句
 
binlog是增量备份必备之一,在有些场景下,实时或定期备份binlog是有必要的。
其实官方mysqlbinlog自带这个功能。
MySQL Binlog Server:是利用某个工具,把线上活跃的库的日志拉取到本地进行备份。在MySQL 5.6以后,可以利用mysqlbinlog这个命令去把远程机器的日志备份到本地目录,从而达到增量或是日志安全方面的备份。
常用的参数:
-R | --read-from-remote-server 表示开启binlog备份,在对应的主节点上请求binlog到本地。
--raw 被复制过来的binlog以二进制的格式存放,如果不加该参数则为text格式。
-r | --result-file 指定目录或文件名:若指定了--raw参数,-r的值指定binlog的存放目录和文件名前缀;若没有指定--raw参数,-r的值指定文本存放的目录和文件名。
-t 这个选项代表从指定的binlog开始拉取,直到当前主节点上binlog的最后一个。
--stop-never 持续连续从主节点拉取binlog,持续备份到当前最后一个,并继续下去。该参数包含-t
--stop-never-slave-server-id 默认值65535,用于在多个mysqlbinlog进程或者从服务器的情况下,避免ID冲突。
 
mysqlbinlog开启备份后,直到连接关闭或者被强制kill才会结束。
可通过ps查看到已经开启的备份进程。
用法示例:完整并保持原样的将远程server的binlog拉到本地,并存放在/data/backup_binlog目录中。
注意,-r指定的目录必须写完整,否则会被放在/data目录下,并以"backup_binlog"为前缀命名binlog
如:-r /data/backup_binlog 则会显示为 /data/backup_binlog/mysql-bin.000008
 
mkdir -p /data/backup_binlog
mysqlbinlog -h$ip -P$port -u$user -p$password -R --raw --stop-never mysql-bin.000008 -r /data/backup_binlog/ &
 
# cat bakbinlog.sh
#!/bin/bash
MBL=/usr/local/mysql/bin/mysqlbinlog
MYB=/usr/local/mysql/bin/mysql
MYSQLHOST=192.168.1.101
MYSQLPORT=3306
MYSQLUSER=dba_user
MYSQLPASS=msds007
BACKUPDIR=/data/backup_binlog/$MYSQLHOST/
RESPAWN=10
FIRSTBINLOG=`$MYB -u$MYSQLUSER -p$MYSQLPASS -h$MYSQLHOST -P$MYSQLPORT -e "show master status;" | grep bin | awk '{print $1}'`
mkdir -p $BACKUPDIR
while :
do
    if [ `ls -A "$BACKUPDIR" | wc -l` -eq 0 ];then
        LASTFILE=$FIRSTBINLOG
    else
        LASTFILE=`ls -al "$BACKUPDIR" | tail -n 1 | awk '{print $9}'`
    fi
    echo 'Starting live binlog backup'
    $MBL -h$MYSQLHOST -P$MYSQLPORT -u$MYSQLUSER -p$MYSQLPASS -R --raw --stop-never $LASTFILE -r $BACKUPDIR
    echo 'mysqlbinlog exited with $? trying to reconnect in $RESPAWN seconds'
    sleep $RESPAWN
done
 
# sh bakbinlog.sh > mybakbinlog.log 2>&1 &
 

用Python开发MySQL增强半同步BinlogServer

项目地址为:

https://github.com/alvinzane/py-mysql-binlogserver

主要特性如下:

全Python标准模块开发,无第三方库依赖,减少学习成本

独立Dumper进程,用于同步保存Binlog event

支持半同步协议,数据零丢失

独立Server进程,支持Failover时Change master to来补数据

支持GTID,方便切换Master

暂不支持级联复制模式

仅在MySQL官方版5.7+下测试通过

仅支持Python3, 不兼容Python2

目录结构:

  1. py-mysql-binlogserver

  2. ├── README.doc

  3. ├── doc

  4. │   ├── T1基础篇-用Python开发MySQL增强半同步BinlogServer.md

  5. │   ├── T2通信篇-用Python开发MySQL增强半同步BinlogServer.md

  6. │   ├── T3实战篇-用Python开发MySQL增强半同步BinlogServer.md

  7. │   ├── T4架构篇-用Python开发MySQL增强半同步BinlogServer.md

  8. │   └── readme.md

  9. └── py_mysql_binlogserver

  10.     ├── __init__.py

  11.     ├── _playground                             # 练习场,随便玩

  12.     │   ├── __init__.py

  13.     │   ├── socket_client.py

  14.     │   ├── socket_client_semi-repl.py

  15.     │   └── test_slave.py

  16.     ├── _tutorial                               # 教程实例代码

  17.     │   ├── __init__.py

  18.     │   ├── learn_bin1_charset.py

  19.     │   ├── learn_bin2_binlog.py

  20.     │   ├── learn_packet1_greeting.py

  21.     │   ├── learn_packet2_auth.py

  22.     │   ├── learn_packet3_query.py

  23.     │   ├── learn_packet4_dump.py

  24.     │   ├── learn_packet4_dump2.py

  25.     │   ├── learn_packet5_dump_with_semi_ack.py

  26.     │   ├── learn_socket1_client.py

  27.     │   ├── learn_socket2_server.py

  28.     │   ├── learn_socket3_server_mulit_thread.py

  29.     │   └── learn_socket4_server_mulit_thread.py

  30.     ├── binlogs                                 # Binlog文件保存目录

  31.     │   ├── mysql-bin.000014

  32.     │   ├── mysql-bin.gtid.index

  33.     │   └── mysql-bin.index

  34.     ├── cap

  35.     ├── constants

  36.     │   ├── EVENT_TYPE.py

  37.     │   └── FIELD_TYPE.py

  38.     ├── dump

  39.     │   └── readme.md

  40.     ├── packet

  41.     │   ├── __init__.py

  42.     │   ├── binlog_event.py

  43.     │   ├── challenge.py

  44.     │   ├── dump_gtid.py

  45.     │   ├── dump_pos.py

  46.     │   ├── event_header.py

  47.     │   ├── gtid_event.py

  48.     │   ├── query.py

  49.     │   ├── response.py

  50.     │   ├── semiack.py

  51.     │   └── slave.py

  52.     ├── protocol

  53.     │   ├── Flags.py

  54.     │   ├── __init__.py

  55.     │   ├── err.py

  56.     │   ├── gtid.py

  57.     │   ├── ok.py

  58.     │   ├── packet.py

  59.     │   └── proto.py

  60.     └── tests                               # 单元测试

  61.     │   ├── __init__.py

  62.     │   └── test_packet.py

  63.     ├── proxy.py                            # 简单代理,用于观察和保存MySQL Packet

  64.     ├── server.py                           # 实现Master协议

  65.     ├── dumper.py                           # Binlog Dumper,相当于IO Thread

  66.     ├── example.conf                        # 配置文件

  67.     └─── example.py                         # 同时启动 Server&Dumper

binlogserver搭建的更多相关文章

  1. MySQL binlog-server搭建

    MySQL binlog-server搭建 binlog在备份中起着至关重要的作用,备份binlog文件时,只能先在本地备份,然后才能传送到远程服务器上.从MySQL5.6版本后,可以利用mysqlb ...

  2. 利用binlogserver恢复单表实验【转】

    使用场景 每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次 创建binlogserver [root@mysql-zst3 binlogserve ...

  3. Online Judge(OJ)搭建(第一版)

    搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...

  4. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  5. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  6. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

  7. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  8. 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

    千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...

  9. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

随机推荐

  1. grep awk 查看nginx日志中所有访问的ip并 去重

    111.225.78.157 - - [13/Aug/2019:16:03:08 +0800] "POST /api/login HTTP/1.1" 200 249 "h ...

  2. ubuntu16.04安装python3.7

    1.安装依赖包 sudo apt-get update sudo apt-get install build-essential python-dev python-setuptools python ...

  3. Spring Boot 教程系列学习

    Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTful API简单项目的快速搭建 Spring Boot基础教程3-配置文件详 ...

  4. Vuejs函数式组件,你值得拥有(1)

    函数式组件在React社区很流行使用,那么在vue里面我们要怎么用呢 下面会涉及到的知识点: 高阶函数.状态.实例.vue组件 什么是函数式组件 我们可以把函数式组件想像成组件里的一个函数,入参是渲染 ...

  5. ISO/IEC 9899:2011 条款5——5.2 环境上的考虑

    5.2 环境上的考虑 5.2.1 字符集 5.2.2 字符显示语义 5.2.3 信号与中断 5.2.4 环境限制

  6. 004-行为型-02-模板方法模式(Template Method)

    一.概述 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤 1.1.适用场景 一次性实现一个算法的不变的部分,并将可变的行 ...

  7. django中同通过getlist() 接收页面form的post数组

    前端中的一些东西: <form action="people?action=edit" method="post"> <input type= ...

  8. WINDOWS配置WSUS。

    wsus的注册表文件! Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows ...

  9. CSS控制元素背景透明度总结

    方法一:CSS3的background rgba filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColor ...

  10. app--Android 稳定性测试方案

    标准的崩溃日志:Android 应用一般使用 Java 语言开发,在不作特殊处理的情况下,遇到未处理的异常时,会弹框提示“程序遇到异常,即将退出”(有些手机框中提示语不同, 或不弹框).同时会将异常的 ...