canal消耗内存_阿里数据库增量日志解析工具canal资料整理

canal是阿里开源的基于数据库增量日志解析工具,它提供增量数据订阅和消费。目前最新稳定版本是 1.1.0

注意:1.1.1 1.1.2版本的客户端与1.1.0的稍有差别 (2019-02-11更新)

项目地址:https://github.com/alibaba/canal

服务端:https://github.com/alibaba/canal/releases/download/canal-1.1.0/canal.deployer-1.1.0.tar.gz

客户端示例:https://github.com/alibaba/canal/releases/download/canal-1.1.0/canal.example-1.1.0.tar.gz

卡夫卡:https://github.com/alibaba/canal/releases/download/canal-1.1.0/canal.kafka-1.1.0.tar.gz

源码:https://github.com/alibaba/canal/archive/canal-1.1.0.tar.gz

工作原理

canal模拟mysql slave的交互协议,伪装成一个slave,并向mysql master发送dump请求,mysql master收到dump请求后,开始推送binlog给slave(canal),canal解析binlog,并发送给客户端

canal支持statement、row、mixed格式的binlog解析,但statement的只有sql没有数据,不能获取原始变更日志,所以一般建议使用row格式

EventParser过程【解析】

EventSink过程【过滤】

数据过滤支持通配符、表名、字段内容等

EventStore过程【存储】

内存模式、本地文件模式、混合模式等

Put:数据放入位置;Get:数据获取位置;Ack:数据消费成功位置

Instance结构【管理层级】

可见,有两种管理方式,比较简单的方式是spring方式,通过配置文件控制

增量订阅/消费流程

get/ack是异步处理的,如可以连续调用get多次,再按顺序提交ack/rollback

HA机制

多个服务器上有多个instance,但同一时间只能有一个instance处于running状态;一个instance同一时间只能由一个canal client进行get/ack/rollback操作。要保证这两点,需要依赖zookeeper。

快速开始

mysql配置要点

[mysqld]

log-bin=mysql-binlog

binlog-format=ROW

server_id=1234

帐号授权

create user 'canal'@'%' identified by 'canal';

grant select,replication slave,replication client,show view on *.* to 'canal'@'%';

flush privileges;

注意:还需要 SHOW VIEW 权限(2019-02-11更新)

修改配置文件

canal.properties

Apache

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

#################################################

######### common argument#############

#################################################

canal.id=1

canal.ip=

canal.port=2222

canal.metrics.pull.port=

canal.zkServers=

# flush data to zk

canal.zookeeper.flush.period=1000

canal.withoutNetty=false

# flush meta cursor/parse position to file

canal.file.data.dir=${canal.conf.dir}

canal.file.flush.period=1000

## memory store RingBuffer size, should be Math.pow(2,n)

canal.instance.memory.buffer.size=16384

## memory store RingBuffer used memory unit size , default 1kb

canal.instance.memory.buffer.memunit=1024

## meory store gets mode used MEMSIZE or ITEMSIZE

canal.instance.memory.batch.mode=MEMSIZE

## detecing config

canal.instance.detecting.enable=false

#canal.instance.detecting.sql = insert into retl.xdual va

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值