一般的网站应用中,总会有部分二次数据(处理过的原始数据)展现给前台,比如,拿购物网站来说,购买进口奶粉最多的用户群体;哪类产品消费增长趋势最旺盛;用户的消费历史归类等都是二次数据。由于这部分数据通常是分析后的数据,而且实时性不强,因此这个过程通常是通过离线计算得到。为了展现给前台,需要将这部分数据回流到关系型数据库【离线计算集群一般都是KV存储,不支持SQL】,供前端用户查询。
      对于MYSQL而言,数据回流实质就是通过mysqlimport或load data infile语句将离线计算的结果导入到数据库中。mysqlimport实质是对load data infile的封装,所以搞清楚load data infile的原理,和使用过程中需要注意的事项,就搞清楚了mysql数据回流。
      load data infile语法,大家可以通过mysql官方手册查看,这里就不copy-paste了,这里主要介绍下原理和流程,下面所描述的都是针对innodb存储引擎,复制采用行级复制的情况。流程如下:
(1)主数据库进行 ‘Load’ 操作
(2)主数据库操作完成后,才开始向slave传输 load.txt文件,
(3)slave接受文件,并在 slave_load_tmpdir 目录下生成 load.txt 文件,接受并生成完整的load.txt 后,才开始读取该文件,并将数据插入到本地表中。
备注:由于innodb是事务型的,所以会把load文件的整个操作当作一个事务来处理,中途中断load操作,会导致回滚。 
   
                                            
                                                                      load data infile 结构图【来自网络】
 
 
    在执行load data infile前,一定要根据实际情况设置好以下几个参数,否则很有可能因为参数设置不对,导致load失败。 
slave_load_tmpdir
含义:load data infile 存放临时文件的目录
建议:这个目录所在磁盘空间应该足够大,防止因为目录空间不足,导致失败的情况。
 
max_allowed_packet
含义:客户端/服务器之间通信的缓存区的最大大小。
最大值:1G
建议:因此对于含有大字段(BLOB,TEXT)的表操作,或主备之间含有大事务传递时,需要调大该值,否则会出现max_allowed_packet不够大的错误。
 
max_binlog_cache_size
含义:用来限制用来缓存多语句事务的缓冲区总大小。如果某个事务大于该值,将会失败并回滚。
最大值:4G(32位),16PB(64位)
建议:对于load data infile,或mysqlimport导入大文件时,由于是作为一个事务,很可能导致max_binlog_cache_size不够,而出现错误导致回滚的情况。
 
max_binlog_size
含义:事务以一个块写入二进制日志,当超过max_binlog_size时,文件进行切换。
于max_binlog_size。
最大值:1G
建议:这个值设置不会导致执行报错的情况。但是,有一点要注意,单个事务的binlog不会跨binlog文件,因此大事务可能导致binlog文件超出max_binlog_size值。
 
     本人在使用mysql进行load时,遇到过好几个问题,都是与以上几个参数有关。
1.max_binlog_cache_size不够大,主库导入出错,或从库复制出错;
解决方法:调大该值
 
2.max_allowed_packet不够大,导致从库io_thread拉binlog失败,主备复制中断。
解决方法:
1.调大该值
2.重新建立复制关系
(1).记录目前复制的位置(Relay_Master_Log_File, Exec_Master_Log_Pos);
(2).reset slave [清理掉无效的relay-log,和master-info信息]
(3).执行change master to 命令
(4).start slave
                                  
大部分情况下,执行第一步后,start slave应该就可以了;但我碰到过,重启复制后依然报错的情况,主要原因是max_allowed_packet不够大,relay-log只记录了事务的一部分,复制报错。那么,通过重建复制关系,则会重新开始拉事务的binlog,relay-log完整后,就不存在问题了。
 

MYSQL数据回流的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)

    概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868 ...

  3. 两种适用于中小量数据的mysql数据备份

    近来项目的业务量开始大了,感觉如果数据不周期性地备份一下,很可能会出现问题,虽然我每天都有阿里云的自动快照,上网找了一下方法,找到两种相对简单而又适合中小项目或者中小公司的数据备份策略,以下都是数据库 ...

  4. 使用Solr索引MySQL数据

    环境搭建 1.到apache下载solr,地址:http://mirrors.hust.edu.cn/apache/lucene/solr/ 2.解压到某个目录 3.cd into D:\Solr\s ...

  5. MySQL数据的主从复制、半同步复制和主主复制详解

    一.MySQL复制概述 ⑴.MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费 ...

  6. ElasticSearch5+logstash的logstash-input-jdbc实现mysql数据同步

    在实现的路上遇到了各种坑,再次验证官方文档只能产考不能全信! ElasticSearch安装就不说了上一篇有说! 安装logstash 官方:https://www.elastic.co/guide/ ...

  7. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  8. 用Myisamchk让MySQL数据表更健康

    用Myisamchk让MySQL数据表更健康 2011-03-15 09:15 水太深 ITPUB 字号:T | T 为了让MySQL数据库中的数据表“更健康”,就需要对其进行定期体检.在这里笔者推荐 ...

  9. 浅析MySQL数据碎片的产生(data free)

    浅析MySQL数据碎片的产生 2011-03-30 09:28 核子可乐译 51CTO 字号:T | T MySQL列表,包括MyISAM和InnoDB这两种最常见的类型,而根据经验来说,其碎片的产生 ...

随机推荐

  1. iOS阶段学习第14天笔记(NSString与NSMutableString)

    iOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableStr ...

  2. MVC部分视图的巧用

    View视图界面 @{ Html.RenderAction("demo", "", new { id = ViewBag.id });} 请求的控制器方法 pu ...

  3. js实现移动端手指左右上下滑动翻页效果

    var ele = document.getElementsByClassName("img-box")[0]; var beginX, beginY, endX, endY, s ...

  4. MurmurHash算法:高运算性能,低碰撞率的hash算法

    MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop.libstdc++.nginx.libmemcached等开源系统.2011年A ...

  5. Java基础复习笔记系列 三

    前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿.  Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...

  6. 【LoadRunner】OSGI性能测试实例

    其实我们就两点 Ø  确定测试登录最大并发用户数:Ø  事务平均响应时间 (两个查询) 得到这个任务 如何展开测试工作呢? 一.WindowsResources 设置(其实不监控 设不设都行 我感觉) ...

  7. Hibernate关联映射(单项多对一和一对多、双向一对多)

    最近总是接触着新的知识点来扩展自己的知识面:不停的让自己在原地接触天空的感觉真的很美好!!!革命没有成功,程序员的我们怎么能不努力呢...... 一.用员工和部门来剖析关联映射的原理. 1)从这张截图 ...

  8. jstl标签2

    我们前面讲的是ArrayList集合迭代,Hashmap/Hashset的情况下 举例: <h3>对map和set的迭代</h3> 放入字符串 <% //模拟 Map m ...

  9. 用div和css样式控制页面布局

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. 20个最新的照片 PS 技巧,提升摄影水平

    相信很多人都知道 Photoshop 在照片编辑方面的强大,所以几乎每张照片经过 PS 处理后都可以变成一个真正的杰作.这里分享的这组 Photoshop 教程可以帮助你学习到新的照片处理技术.你会发 ...