nifi配置mysql_binlog读取

这个就是mysqlcdc 适合实时读取 mysql的数据然后传输导不同数据库 如es hbase kudu

准备工作

一、mysql_binlog介绍

binlog三种模式

①.statement

每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题.

其实这句话是我复制的,看了半天还不知道说啥,简单的翻译下,

一般开启binlog会进行主从复制,这个的缺陷是

主 insert into table  a values(1,rand())  插入了1,0.2

从  insert into table  a values(1,rand()) 插入了1,0.3 

因为这个只是记录了sql。

② ROW模式(RBR)

不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。

③ MIXED模式(MBR)

以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。

我们需要

show variables like '%binlog%'  --查看binlog的一些配置信息

show variables like '%log_bin%' --查看到binlog日志为状态

修改配置文件

vim /etc/cnf

[mysqld]

character-set-server=utf8
##server_id 主从不一致
server_id = 1
##上文介绍的
binlog_format=row
##只记录那个db的信息。 我是为了测试 不写默认所有
binlog_do_db=cc

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

 查看binlog

cd /var/lib/mysql

 之前这里binlog很多的 我删了一部分,因为出现了bug,后面细说

进入mysql客户端可以查看binlog的一些基本信息

show binary logs;--获取binlog文件列表

show master status;--查看当前正在写入的binlog文件

show binlog events in 'mysqlbin.000102' from 1 limit 0,10;

binlog查看

通过mysqlbinlog 工具

基础版本  /usr/bin/mysqlbinlog /var/lib/mysql/mysqlbin.102

高级版本 /usr/bin/mysqlbinlog --no-defaults --base64-output=decode-rows -v /var/lib/mysql/mysqlbin.000102  

这个也是百度的。想研究的自行探究

binlog删除

(1)手动删除 直接 rm 另外修改mysqlbin.index的内容。

(2)通过mysql提供的工具来删除

删除之前可以先看一下purge的用法:help purge;

删除举例:

RESET MASTER;//删除所有binlog日志,新日志编号从头开始

PURGE MASTER LOGS TO 'mysql-bin.010';//删除mysql-bin.010之前所有日志

PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';// 删除2003-04-02 22:46:26之前产生的所有日志。

这里为啥要删除呢?因为我之前有很多的binlog,最开始好像设置的statement 后面改为row了,在使用nifi读取的时候,发现读第一个binlog01的时候开始还能读7w条数据,然后就一直报错,没法,只能删除了前面所有的binglog,保留了最新的binlog。之前的报错日志

COMMIT event received while not processing a transaction (i.e. no corresponding BEGIN event). This could indicate that your binlog position is invalid. 

仅供参考,我是用的自己测试的mysq 所以删了无所谓,公司的mysql注意了。

下面开始nifi布置。

CaptureChangeMySQL | Apache NIFI中文文档

46.实时同步Mysql到Hive-3_哔哩哔哩_bilibili

我之前配置一直有问题。。。后面b站看了下黑马的视频。大家也可以直接去看,我这里只是自己记录。

核心CaptureChangeMySQL

 这里说几点,

scheduling 的runschedulem默认是0s 设置个几s 否则跑的特别快 cpu的飙满。

properties里有个 Distributed Map Cache Client 这个东西其实就是类似i一个缓存,注意没有配置这个数据会出错。

如何配置

注意这里是个service ,一般来说会要有个server

在项目空白处右键->configure

然后选择service-> 点击+号

搜索distributed 出现了server和service

然后先点击server. 然后采用默认的即可 

再新建service 采用默认配置 只用修改host 

 然后记住先启动server 再enable service。

其实现在cdc已经基本配置好了。

懒得写了。看视频去吧,视频比我详细多了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值