一 环境准备 主:192.168.132.121 从:192.168.132.122 主的数据库上面已经有数据,而且还在不断的写入 mysql> select * from darren.test; +------+ | id | +------+ | | | | | | | | | | | | +------+ mysql> grant replication slave on *.* to '; mysql> grant all on *.* to '; mysql> show…
注:文中有个易混淆的地方 sql事务,即每次数据库操作生成的事务,这个事务trx_id只在undolog里存储,同时undolog维护了此事务是否完成的状态. 日志持久化事务,为了保证redolog和binlog的一致性而用的Mysql内部独立维护的2PC提交事务.这个xid只有在redolog和binlog持久化文件中存储. 各日志的存储内容 阅读前提:需要对mysql的数据存储结构有一定了解,即数据页的持久化和内存读取逻辑. binlog日志 binlog日志存储的是对数据库实际的数据操作,…
在一些业务场景中,像在数据分析中我们有时候需要捕获数据变化(CDC):在数据审计中,我们也往往需要知道数据从这个点到另一个点的变化:同样在实时分析中,我们有时候需要看到某个值得实时变化等. 要解决以上问题,我们可以实时解析mysql binlog日志,下面两个工具可以很好的处理这个问题: 1. canal(阿里巴巴开源项目,纯java开发) 2. python-mysql-replication(python开发) 使用场景: 1. MySQL到NoSQL的数据同步 2. MySQL到搜索引擎的…
0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.sed等需要较高熟练度. [0.2]第三方的mysqlbinlog工具,比官方的工具多了一个闪回功能 -B [0.3]开源的binlog2sql:兼容性比较好,使用难度小,使用简单,前提是mysql必须开启. 最佳实践:线上使用binlog2sql,线下用mysqlbinlog以及mysqlbinlog…
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份      增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件:第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推.这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短.但增量备份的数据恢复是比较麻烦的.您必须具有上一次全备份和所有增量备…
      最近写完mysql flashback,突然发现还有有这种使用场景:有些情况下,可能会统计在某个时间段内,MySQL修改了多少数据量?发生了多少事务?主要是哪些表格发生变动?变动的数量是怎么样的? 但是却不需要行记录的修改内容,只需要了解 行数据的 变动情况.故也整理了下.     昨晚写的脚本,因为个人python能力有限,本来想这不发这文,后来想想,没准会有哪位园友给出优化建议.       如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归…
MySQL复制介绍 默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定的表 MySQL复制所带来的优势在于: 1.扩展能力: 通过复制功能可以将MySQL的性能压力分担到一个或多个slave上.这要求所有的写操作和修改操作都必须在Master上完成,而读操作可以被分配到一个或多个slave上.将读写分离到不同服务器执行之后,MySQL的读写性能得到提升 2.数据库备份…
基础环境:   主库 从库 服务器IP地址 192.168.10.11 192.168.10.12 版本 5.7.24 5.7.24 已存在的数据库 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | lijiamandb | | mysql | | performance_schema | | sys | | testdb | +--…
前言: MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点. 备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. 1. 准备实验环境 mysql> select version(); +------------+ | version() | +------------+ | -log | +------------+ row in set (0.00 sec) mysql> create database c…
[问题二] 有一个集群(MySQL5.7.23)切换后复制slave报1236,其实是不小心在slave上执行了事务导致 Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containin…
基于binlog恢复工具mysqlbinlog_flashback简介 mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具.一般用于数据恢复的目的. 所谓反向的sql语句就是如果是insert,则反向的sql为delete.如果delete,反向的sql是insert,如果是update, 反向的sql还是update,但是update的值是原来的值.这个项目需要安装 yum update nss     或者yum upda…
http://mysql.taobao.org/monthly/2016/05/01/ 在开始之前,你需要对InnoDB的事务系统有个基本的认识.如果您不了解,可以参考我之前的几篇关于InnoDB的文章,包括InnoDB的事务子系统,事务锁,redo log,undo log,以及崩溃恢复逻辑.在这里我们简单的概述一下几个基本的概念: 事务ID:一个自增的序列号,每次开启一个读写事务(或者事务从只读转换成读写模式)时分配并递增,每更新256次后持久化到Ibdata的事务系统页中.每个读写事务都必…
发现mysql库的binlog日志出来都是乱码,如下所示: BINLOG ’ IXZqVhNIAAAALQAAAGcBAAAAAHoAAAAAAAEABHRlc3QAAno0AAEDAABUOcnY IXZqVh5IAAAAKAAAAI8BAAAAAHoAAAAAAAEAAgAB//4BAAAAcu+UpA==,如果强行用-v出来也得不到具体执行的sql语句,这个问题困扰了很近,今天深入研究才发现核心问题所在. 1,binlog日志的困扰,先看下日志格式 mysql> show variable…
参考链接: http://mysql.taobao.org/monthly/2016/08/01/ https://www.kancloud.cn/thinkphp/mysql-parallel-applier/45909 5.7新版本复制方面的主要优化内容: 运维 在线启停GTID 在线配置Replication Filter,无需重启 Change Master到另外一个主库无需停止apply线程 Change Master修改一些日志apply属性(例如master_delay)无需停止I…
1.1 增量备份简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件:第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推.这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短.但增量备份的数据恢复是比较麻烦的.您必须具有上一次全备份和所有增量备份磁带(一旦丢失或损坏其中的一个增量,就会造成恢复的失败),并且它们必…
MySQL redo log 与 binlog 的区别 什么是redo log 什么是binlog redo log与binlog的区别 1. 什么是redo log? redo log又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来.在实例和介质失败(media failure)时,redo log文件就能派上用场,如数据库掉电,InnoDB存储引擎会使用redo log恢复到掉电前的时刻,以此来保证数据的完整性. 1.1 redo日志文件名 每…
日常开发,运维中,经常会出现误删数据的情况.误删数据的类型大致可分为以下几类: 使用 delete 误删行 使用 drop table 或 truncate table 误删表 使用 drop database 语句误删数据库 使用 rm 命令误删整个 MySQL 实例. 不同的情况,都会有其优先的解决方案: 针对误删行,可以通过 Flashback 工具将数据恢复 针对误删表或库,一般采用通过 BINLOG 将数据恢复. 而对于误删 MySQL 实例,则需要我们搭建 HA 的 MySQL 集群…
https://mp.weixin.qq.com/s/1h942YAcS6fhO5C43hGX-w 什么是数据异构?简单讲,就是将数据进行异地数据异构存储. 数据异构 服务市场使用 BinLake(京东 MySQL 的 Binlog 日志实时采集.统一分发.消息订阅和监控服务)进行数据异构,即通过订阅 MySQL 的 Binlog 日志,通过接收 JMQ 进行数据异地构建存储. 数据异构主要有两种方式,一种是顺序消费.另一种是并行消费.其中,在进行订单.订购的数据异构时是要求保证严格的顺序性的,…
利用XtraBackup给MYSQL热备(基于数据文件) By JRoBot on 2013 年 11 月 26 日 | Leave a response 利用XtraBackup给MYSQL热备(基于数据文件)利用 XtraBackup 快速配置主从服务器这XtraBackup 个主要包含2个命令 xtrabackup 和 innobackupex 第一个是他的主程序 另外个他自己封装的脚本一般用脚本来完成备份这是工作笔记 比较凌乱 凑合着看吧 获取XtraBackup 获取XtraBacku…
mysql打开.查看.清理binlog 1.开启日志 log_bin=/var/lib/mysql/mysql-bin mysql> show variables like '%log_bin%'; +---------------------------------+--------------------------------+ | Variable_name | Value | +---------------------------------+--------------------…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划查询(Ⅷ)>,主要介绍通过报表工具数据钻取,获取施工计划详细信息. 这篇我们看看ParamQueryGrid[行合并]与[列合并] 一.[列合并]效果 以编号配置界面为例,如下图所示. 设置表格列合并,代码如下. /**设置表格列合并 colModel:列 ,startNumber:开始列 ,numberOfColumns:从开始列开始,合并列数量 ,titleText:合并列标题 **/ function SetPq…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划安排>,主要介绍整个施工计划列表与编辑界面. 下面看看施工计划查询(ⅠⅡⅢ ⅣⅤⅥ Ⅶ Ⅷ) 一.施工计划查询 施工计划查询界面,如下图所示. 点击[查询],按年月得出该年月施工计划,具体代码如下 1 protected void lbtSearch_Click(object sender, EventArgs e) 2 { 3 if (CheckInput()) 4 { 5 string connValue = Da…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页Portal界面拖拽>,主要介绍首页随客户喜好安排区块位置,更好的实现用户体验. 这两天将项目中施工计划管理归纳总结一下(ⅠⅡⅢ ⅣⅤⅥ Ⅶ Ⅷ) 一.施工计划安排 施工计划安排界面,如下图所示. 编辑界面,如图所示 根据设定的提醒时间,通知施工人员及相关人员 有关于消息提醒的实现,在<Windows服务调用Quartz.net 实现消息调度>有详细介绍.…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 构建Web界面>,主要介绍系统界面布局.导出数据等. 本篇将介绍首页Portal界面拖拽. 一.首页Portal界面拖拽效果 效果对比,如下图所示. 具体实现代码 //在一起的用,分割,不在一起的用:分割 var local = 'p1,p4,p2:p3'; if ($.cookie("panelStates")) { local = $.cookie("panelStates"); }…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 数据统计>,主要介绍系统数据统计所采用图形.报表工具. 本篇将如何构建Web界面以及新增.编辑.导出数据等功能. 一.在Web界面使用ParamQueryGrid控件 web界面,如图所示 新增.编辑功能就不详细讲了,看一下导出功能 通过选择导出列,选择导出内容 Dictionary<string, string> dic = new Dictionary<string, string>(); ; i…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页快捷方式>,主要介绍通过添加首页快捷方式,快速进入各个应用菜单功能. 将常用的菜单功能作为快捷方式,避免由于寻找诸多的菜单树,浪费时间.在添加页面时根据人员权限不同,左侧功能菜单节点不同. 本篇将介绍系统中数据统计所采用的工具. 一.HighCharts数据统计 登录量统计,如下图所示. 通过HighCharts统计人员登录系统次数,代码如下 function HChartsResize(obj,_height,_widt…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 登录窗口>,主要是介绍系统登录界面页面设计与代码. 最近刚做完施工计划安排设计,之后将分享出来,这个系列更新不是很快,望大家多多体谅. 一.首页快捷方式 首页快捷方式,如下图所示. 点击[添加新的快捷方式],将所有页面以快捷方式呈现,如下图所示 双击添加快捷方式到首页.…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 系统设置>,主要是介绍系统浏览器在线下载安装,这些前期准备是非常重要的. 最近忙于将工程管理系统中各个模块,用业务流程方式串接起来,可能更新博客不是那么快,希望大家多多体谅. 一.登录窗口 登录界面,如下图所示. 基于浏览器Cookies,保留用户名的登录时效. <script src="/Js/jquery.cookie.js" type="text/javascript">…
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 总体介绍>,主要介绍系统总体的界面效果和用户体验UI设计. 在MVC.MVP大行其道的今天,写WebForm该系列篇章,是否是过时? 之后系统重构,将朝着vNext方向 一.系统设置 我们知道,一般客户浏览器千奇百怪,如何实现快捷下载到我们需要的浏览器?如下界面所示. <!DOCTYPE HTML> <html> <head> <title>浏览器安装</title>…
12c以前非分区表需要转换为分区, 如果不停业务的话可以使用在线重定义,只有在表进行切换的时候会有短暂的锁表. 12c 中alter table online clause 实现了表上现有的索引有效,又不停业务. 测试一:非分区表转分区表,索引转换为oracle内部规则.-- 建非分区表create table andy_clause as select  * from user_objects where  object_id is not null;--创建非分区表索引create inde…