binlogserver搭建
在MySQL 5.7.x版本中,mysqlbinlog工具解析任何一个本地的binlog或relay log时,都不会在mysqlbinlog命令执行结束时追加rollback语句,
其实官方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冲突。
可通过ps查看到已经开启的备份进程。
用法示例:完整并保持原样的将远程server的binlog拉到本地,并存放在/data/backup_binlog目录中。
注意,-r指定的目录必须写完整,否则会被放在/data目录下,并以"backup_binlog"为前缀命名binlog
如:-r /data/backup_binlog 则会显示为 /data/backup_binlog/mysql-bin.000008
mysqlbinlog -h$ip -P$port -u$user -p$password -R --raw --stop-never mysql-bin.000008 -r /data/backup_binlog/ &
#!/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
用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
目录结构:
py-mysql-binlogserver├── README.doc├── doc│ ├── T1基础篇-用Python开发MySQL增强半同步BinlogServer.md│ ├── T2通信篇-用Python开发MySQL增强半同步BinlogServer.md│ ├── T3实战篇-用Python开发MySQL增强半同步BinlogServer.md│ ├── T4架构篇-用Python开发MySQL增强半同步BinlogServer.md│ └── readme.md└── py_mysql_binlogserver├── __init__.py├── _playground # 练习场,随便玩│ ├── __init__.py│ ├── socket_client.py│ ├── socket_client_semi-repl.py│ └── test_slave.py├── _tutorial # 教程实例代码│ ├── __init__.py│ ├── learn_bin1_charset.py│ ├── learn_bin2_binlog.py│ ├── learn_packet1_greeting.py│ ├── learn_packet2_auth.py│ ├── learn_packet3_query.py│ ├── learn_packet4_dump.py│ ├── learn_packet4_dump2.py│ ├── learn_packet5_dump_with_semi_ack.py│ ├── learn_socket1_client.py│ ├── learn_socket2_server.py│ ├── learn_socket3_server_mulit_thread.py│ └── learn_socket4_server_mulit_thread.py├── binlogs # Binlog文件保存目录│ ├── mysql-bin.000014│ ├── mysql-bin.gtid.index│ └── mysql-bin.index├── cap├── constants│ ├── EVENT_TYPE.py│ └── FIELD_TYPE.py├── dump│ └── readme.md├── packet│ ├── __init__.py│ ├── binlog_event.py│ ├── challenge.py│ ├── dump_gtid.py│ ├── dump_pos.py│ ├── event_header.py│ ├── gtid_event.py│ ├── query.py│ ├── response.py│ ├── semiack.py│ └── slave.py├── protocol│ ├── Flags.py│ ├── __init__.py│ ├── err.py│ ├── gtid.py│ ├── ok.py│ ├── packet.py│ └── proto.py└── tests # 单元测试│ ├── __init__.py│ └── test_packet.py├── proxy.py # 简单代理,用于观察和保存MySQL Packet├── server.py # 实现Master协议├── dumper.py # Binlog Dumper,相当于IO Thread├── example.conf # 配置文件└─── example.py # 同时启动 Server&Dumper
binlogserver搭建的更多相关文章
- MySQL binlog-server搭建
MySQL binlog-server搭建 binlog在备份中起着至关重要的作用,备份binlog文件时,只能先在本地备份,然后才能传送到远程服务器上.从MySQL5.6版本后,可以利用mysqlb ...
- 利用binlogserver恢复单表实验【转】
使用场景 每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次 创建binlogserver [root@mysql-zst3 binlogserve ...
- Online Judge(OJ)搭建(第一版)
搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题
千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
随机推荐
- 聊聊SSH框架
目录 前期准备工作 jrebel(热加载,后台会自动帮忙部署项目) lombok(根据字段,自动生成对应的set和get方法) log4j(日志打印) 所需jar包 log4j2.xml log4j. ...
- Perl关于分椰子的趣味问题
话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子! 大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先晚上 ...
- Thingsboard学习之三启动Thingsboard
关于安装Docker和Docker-Compose,参考<Thingsboard学习之二安装Docker和Docker-Compose> 首先检查一下是否有安装git yum instal ...
- sql中的表值函数与标量值函数区别与用法
通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1 ...
- JVM Java字节码方法表与属性
方法表 1.methods_count method_info,前三个字段和field_info一样 2.方法的属性结构 方法中的每个属性都是一个attribut_info结构 JVM定义了部分at ...
- AWS Fargate
AWS Lambda都是浮云,AWS Fargate才是王道——无服务器的未来,有我没你! - DockOne.iohttp://www.dockone.io/article/4656 通过 Farg ...
- WPF-支持异步操作的ObservableCollection-AsyncObservableCollection
在进行WPF开发过程中,需要从一个新的线程中操作ObservableCollection,结果程序抛出一个NotSupportedException的错误 public class AsyncObse ...
- 004-行为型-09-访问者模式(Visitor)
一.概述 它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作. 主要解决:稳定的数据结构和易变的操作耦合问题. 注意事项:访问者可以对功能进行统一,可以做报表.UI ...
- 2019年Java面试题基础系列228道(6)
51.ArrayList 与 LinkedList 的不区别? 最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而LinkedList 的底层数据结构书链表,不支持随机访问. ...
- 找出整数数组中出现次数超过数组长度一半的元素(Java)
Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...