一 简介:今天咱们来聊聊canal的一些东西

二 原理:

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

三 安装

1 环境安装

1 安装JDK环境

2 安装canal

1  wget https://github.com/alibaba/canal/releases/download/canal-1.0.24/canal.deployer-1.0.24.tar.gz

2 mkdir -p /usr/local/canal

3 tar xzvf canal.deployer-1.0.24.tar.gz -C /usr/local/canal/

3  在目标数据库创建canal用户

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal';

flush privileges

4 修改cannal默认端口

sed -i 's/11111/3310/g' canal.properties

5 创建 相关解析库

cd conf

mkdir db2

cd db2

cp ../example/instance.properties .

6 配置文件解读并修改

## mysql serverId
       canal.instance.mysql.slaveId = 1234//类似于mysql slave的server_id,用于模拟一台机器

# position info

canal.instance.master.address = IP:PORT//目标数据库的IP和PORT
       canal.instance.master.journal.name =
       canal.instance.master.position =
       canal.instance.master.timestamp =

# username/password
      canal.instance.dbUsername = canal //复制的账号和密码
      canal.instance.dbPassword = canal
      canal.instance.defaultDatabaseName =
      canal.instance.connectionCharset = UTF-8//连接解析的字符集

# table regex
      canal.instance.filter.regex = db2.*\\..*//perl的正则匹配,设置过滤的库和表,下面会有说明
      # table black regex
      canal.instance.filter.black.regex =

按照以上修改即可

7 启动

/bin/startup.sh 查看端口是否存在 进程是否存在

8  相关正则匹配

1. 所有表:.* or .*\\..*

2. canal schema下所有表: canal\\..*

3. canal下的以canal打头的表:canal\\.canal.*
       4. canal schema下的一张表:canal.test1
       5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)

6  匹配多个类似库: canal_.*\\..*

9 配置总结

1 spring方式:基于spring xml + properties进行定义,构建spring配置.

2 增加DB源的话,直接添加即可,无需重启服务.即时生效

四 自动重启脚本

#!/bin/sh

export JAVA_HOME=/usr/java/jdk1.7.0_45

export PATH=$PATH:$JAVA_HOME/bin:/data/canal/bin
    result2=`netstat -anlp|grep '0.0.0.0:3310'|wc -l`
    if [[ "$result2" > 0 ]];
   then
   echo "ok"
   else
   sh /usr/local/canal/bin/startup.sh
   fi

五 相关注意事项

1 选择合适版本

2 相关客户端只能被独占 这点要尤其注意

六 以后关于具体测试之类的会补充

mysql 开源~canal安装解析的更多相关文章

  1. mysql 开源 ~ canal+otter系列(1)

    一 简介: 今天咱们来聊聊 canal和otter的组合搭配吧二 概念统计   1. 基于Canal开源产品,获取数据库增量日志数据.   2. 典型管理系统架构,manager(web管理)+nod ...

  2. mysql 开源 ~ canal+otter系列(2)

    一 创建相应用户    源数据用户权限: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO `retl`@'%';    目的 ...

  3. mysql 开源~canal的深度解读1

    一 简介:经过一段时间的研究,对canal有了一些见解 二 配置文件: 1 canal.properties (系统根配置文件)     主要参数列表   canal.properties (系统根配 ...

  4. mysql 开源~canal维护相关问题

    一 简介:咱们来讨论下canal的一些技巧 二 场景 场景1 canal过滤指定库后,后端java调用读取相关数据时候出现大量的空事务,为何会出现空事务呢,空事务是由于配置了指定的过滤规则,导致了其他 ...

  5. canal 基于Mysql数据库增量日志解析

    canal 基于Mysql数据库增量日志解析  1.前言  最近太多事情 工作的事情,以及终身大事等等 耽误更新,由于最近做项目需要同步监听 未来电视 mysql的变更了解到公司会用canal做增量监 ...

  6. [腾讯云]简单在腾讯云 CenTOS7.0 安装Nginx,Mysql(MariaDB),Memcache,解析PHP!

    1.安装LNMP之前要安装EPEL,以便安装源以外的软件,如Nginx,phpMyAdmin等. yum install epel-release 2.安装Nginx a) yum install n ...

  7. 开源服务专题之--------mysql的编译安装

    为什么选择MySQL 1:mysql性能卓越,服务稳定,很少出现异常宕机 2:mysql开源免费,无版权制约,自主性及使用成本低 3:产品耦合度,mysql支持多种操作系统,支持多开发语言,特别是ph ...

  8. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  9. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

随机推荐

  1. Nginx PREACCESS阶段 如何限制每个客户端的并发连接数

    L:55 nginx.conf配置文件列子 limit_conn_zone $binary_remote_addr zone=addr:10m; #这里根据用户IP地址作为key做限制 并且名称为ad ...

  2. BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树

    题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...

  3. ef 问题汇总

    持续更新: 一  属性重命名 数据库:UserName Model: [Column("UserName")]public string UserName222 二, 某表多个外键 ...

  4. JSP 和 Servlet 的工作原理和生命周期

    JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...

  5. 因为代理原因导致的NotSerializableException

    错误信息: NotSerializableException Failed to serialize object Proxy   报这个错,一开始就往没有序列化这一块想,可是报错点是: excelT ...

  6. importlib 模块

    根据字符串的模块名实现动态导入模块的库 目录结构 ├── aaa.py ├── bbb.py └── mypackage ├── __init__.py └── xxx.py bbb.py impor ...

  7. loj #116. 有源汇有上下界最大流

    题目链接 有源汇有上下界最大流,->上下界网络流 注意细节,重置cur和dis数组时,有n+2个点 #include<cstdio> #include<algorithm> ...

  8. [SHOI2013]发牌 解题报告

    [SHOI2013]发牌 题意 对一个\(1\sim n(n\le 7\times 10^5)\)的环,指标最开始在\(1\),每次删去顺时针往后第\(d_i\)个元素,指标移到下一个位置.要求输出每 ...

  9. LOJ 2664. 「NOI2013」向量内积 解题报告

    #2664. 「NOI2013」向量内积 两个 \(d\) 维向量 \(A=[a_1, a_2 ,...,a_d]\) 与 \(B=[b_1 ,b_2 ,...,b_d]\) 的内积为其相对应维度的权 ...

  10. Selenium之WebDriver元素定位方法

    Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...