说明:我们有一个业务需要把mysql中一些表实时同步到大数据集群hbase上面,我们先通过sqoop把表中数据全量导入到hbase中,然后再通过canal定位的某个binlog的position,来实现增量同步,canal官网提供了java/go接口,直接写入到Kafka,然后通过sparkstreaming实时写入到hbase中

一. 通过sqoop把mysql表中的数据全量导入到hbase中(需要安装sqoop)

sqoop import \
--connect jdbc:mysql://ip:port/database \
--username username \
--password password \
--table user_info \
--hbase-create-table \
--hbase-table user_info \
--hbase-row-key id \
--column-family order_info

二. 精确定位到binlog位点,进行启动

1. 查看当前数据库的binlog日志,在数据库中通过show binary logs 查看

mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.001112 |    375374 |
| mysql-bin.001113 |    366569 |
| mysql-bin.001114 |    360112 |
| mysql-bin.001115 |    101198 

2. 查看当前binlog日志的position(一般最大的binlog以及最大的position)

show binlog events in 'mysql-bin.001115';

3. 需要先重启canal服务(如果之前正运行canal)

cd /usr/local/canal/bin && ./stop.sh && ./startup.sh

4. 修改zookeeper对应destination里面的配置

说明:我这边是在配置文件里面配置了zookeeper,如果没有配置,则会在你相应的destination目录下面生成meta.dat文件,也只需修改到对应的binlog和position即可

1)连接zookeeper

./zkCli.sh -server zk-address:2181

2)查看对应destination的配置(其中test为destination的名称)

(CONNECTED) 2] get /otter/canal/destinations/test/1001/cursor
"journalName":"mysqlbin.002908"
"position":198601951

3)把上面配置中journalName和position修改为自己需要的binlog日志和偏移量

 (CONNECTED) 3]set /otter/canal/destinations/d_aura_jike/1001/cursor {xxx}

5. 修改一下对应destination的配置文件(主要是触发使其生效)

vim /usr/local/canal/conf/test/instance.properties

6. 通过canal提供的java/go接口,来测试数据的同步(官网有例子https://github.com/alibaba/canal)

转载于:https://www.cnblogs.com/654wangzai321/p/10655257.html

通过canal实现把MySQL数据实时增量到kafka相关推荐

  1. flink实时同步mysql_基于Canal与Flink实现数据实时增量同步(一)

    点击上方蓝色字体,关注我 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 准备 配置 ...

  2. 简单实现MySQL数据实时增量同步到Kafka————Maxwell

    任务需求:将MySQL里的数据实时增量同步到Kafka 1.准备工作 1.1.MySQL方面:开启BinLog 1.1.1.修改my.cnf文件 vi /etc/my.cnf [mysqld] ser ...

  3. 数据实时增量同步之CDC工具—Canal、mysql_stream、go-mysql-transfer、Maxwell

    数据实时增量同步之CDC工具-Canal.mysql_stream.go-mysql-transfer.Maxwell 什么是CDC? CDC工具对比 实现原理: Mysql binlog 讲解: m ...

  4. mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume

    写在前面的话 需求,将MySQL里的数据实时增量同步到Kafka.接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka.不过对比了一些工具,例如:Canel,Dat ...

  5. mysql同步mongodb_MySQL数据实时增量同步到MongoDB

    一.go-mysql-transfer go-mysql-transfer是使用Go语言实现的MySQL数据库实时增量同步工具.能够实时监听MySQL二进制日志(binlog)的变动,将变更内容形成指 ...

  6. binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践

    背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...

  7. elasticsearch date_MySQL数据实时增量同步到Elasticsearch

    Mysql到Elasticsearch的数据同步,一般用ETL来实现,但性能并不理想,目前大部分的ETL是定时查询Mysql数据库有没有新增数据或者修改数据,如果数据量小影响不大,但如果几百万上千万的 ...

  8. 通过Logstash实现mysql数据定时增量同步到ES

    文章目录 前言 一.系统配置 二.同步步骤整体概览 三.logstash数据同步实战 1.新建mysql表 2.ES中新建索引 3.Logstash 管道配置 4.启动Logstash 5.测试 6. ...

  9. kettle spoon判断增量更新_使用Kettle实现数据实时增量同步--时间戳增量回滚同步...

    使用Kettle实现数据实时增量同步 0. 前言 本文介绍了使用Kettle对一张业务表数据(500万条数据以上)进行实时(10秒)同步,采用了时间戳增量回滚同步的方法.关于ETL和Kettle的入门 ...

最新文章

  1. Linux vsftp配置详解
  2. sqlalchemy如何实现时间列自动更新?
  3. Java小结(二)——打印矩形和九九乘法表
  4. jboss eap 7_EAP 7 Alpha和Java EE 7入门
  5. C++ 高级数据类型(一)—— 数组
  6. [vs2010 project] CppUnit快速入门
  7. RHadoop和CDH整合实例(三)- RHive
  8. 免费送新款华为笔记本 ! !不爱可折现!
  9. JavaScript对象学习笔记
  10. 如何添加二级标题_怎样给Word文档添加目录?
  11. Java分层架构的使用规则
  12. windows程序设计之定义窗口句柄
  13. 左手云通讯,右手AI,容联为何能成为云联络中心“风向标”?
  14. yilia 的html模板,自己动手修改完善yilia主题(下)
  15. 解决vue项目在浏览器中打开后,#后面的链接被截取的问题
  16. CTF题库奇妙的音乐
  17. 如何批量在文件夹中建立php,怎样快速实现批量建立文件夹 电脑一次性快速批量新建多个文件夹的方法...
  18. 路由器密码忘记 五步暴力破解
  19. VMware镜像文件下载
  20. 香港云服务器怎么样_硅云服务器评测

热门文章

  1. 什么是Selenium?如何使用Selenium进行自动化测试
  2. java nio connect_服务器或客户端上的Java NIO套接字在什么时...
  3. pytest与unittest区别
  4. 定时器的实现原理 不消耗cpu_一直在使用JDK动态代理, 不明白原理如何实现?
  5. ftp linux 推送文件_Linux下SSH用FTP命令上传文件至另一个FTP空间
  6. php curl加密获取数据,PHP利用Curl模拟登录并获取数据例子
  7. 关于“稳定”的相爱相杀:负载测试和压力测试
  8. 小程序接入h5页面_原生小程序接入H5页面,请求后台接口,获取数据
  9. python爬取b站评论_用python 抓取B站视频评论,制作词云
  10. python怎么复数乘方开方_孩子数学不好怎么办?怎样让孩子学好数学的方法