一、首先需要安装canal-server, 这里使用docker来运行canal-server

下载最近的release版本 https://github.com/alibaba/canal/releases,解压后拷贝 conf 目录到新的目录 /Users/huaan9527/Documents/docker/canal-server/conf

根据canal-server的文档

修改 canal.properties :

canal.serverMode = kafka # tcp, kafka, RocketMQ

canal.destinations = highso # instance的名字 多个使用逗号分隔

canal.mq.servers = 192.168.16.xxx:9092 #kafka集群的地址

修改instance.properties

canal.instance.master.address=192.168.16.xxx:3306 #需要监控的mysql数据库地址

canal.instance.dbUsername=xxx

canal.instance.dbPassword=xxx

canal.instance.connectionCharset = UTF-8

canal.instance.defaultDatabaseName =highso

canal.instance.filter.regex=highso\\.crmtest,highso\\.test #监控的数据库表

canal.mq.topic=common_mq_highso #kafka 中topic的名字

启动canal-server容器的脚本

#!/bin/bash

function usage() {

echo "Usage:"

echo " run.sh [CONFIG]"

echo "example:"

echo " run.sh -e canal.instance.master.address=127.0.0.1:3306 \\"

echo " -e canal.instance.dbUsername=canal \\"

echo " -e canal.instance.dbPassword=canal \\"

echo " -e canal.instance.connectionCharset=UTF-8 \\"

echo " -e canal.instance.tsdb.enable=true \\"

echo " -e canal.instance.gtidon=false \\"

echo " -e canal.instance.filter.regex=.*\\\\\\..* "

exit

}

function check_port() {

local port=$1

local TL=$(which telnet)

if [ -f $TL ]; then

data=`echo quit | telnet 127.0.0.1 $port| grep -ic connected`

echo $data

return

fi

local NC=$(which nc)

if [ -f $NC ]; then

data=`nc -z -w 1 127.0.0.1 $port | grep -ic succeeded`

echo $data

return

fi

echo "0"

return

}

function getMyIp() {

case "`uname`" in

Darwin)

myip=`echo "show State:/Network/Global/IPv4" | scutil | grep PrimaryInterface | awk '{print $3}' | xargs ifconfig | grep inet | grep -v inet6 | awk '{print $2}'`

;;

*)

myip=`ip route get 1 | awk '{print $NF;exit}'`

;;

esac

echo $myip

}

NET_MODE=""

case "`uname`" in

Darwin)

bin_abs_path=`cd $(dirname $0); pwd`

;;

Linux)

bin_abs_path=$(readlink -f $(dirname $0))

NET_MODE="--net=host"

;;

*)

NET_MODE="--net=host"

bin_abs_path=`cd $(dirname $0); pwd`

;;

esac

BASE=${bin_abs_path}

if [ "$1" == "-h" ] ; then

usage

elif [ "$1" == "help" ] ; then

usage

fi

# DATA="$BASE/data"

# mkdir -p $DATA

VOLUMNS="-v $BASE/conf:/home/admin/canal-server/conf -v $BASE/logs:/home/admin/canal-server/logs"

PORTLIST="8000 2222 11111 11112"

PORTS=""

for PORT in $PORTLIST ; do

#exist=`check_port $PORT`

exist="0"

if [ "$exist" == "0" ]; then

PORTS="$PORTS -p $PORT:$PORT"

else

echo "port $PORT is used , pls check"

exit 1

fi

done

MEMORY="-m 2048m"

LOCALHOST=`getMyIp`

cmd="docker run -d -it -h $LOCALHOST --name=canal-server $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-server:v1.1.2"

echo $cmd

eval $cmd

二、配置canal.adapter 实现 mysql数据库3306 同步 到 mysql数据库3308

server:

port: 8081

logging:

level:

org.springframework: INFO

com.alibaba.otter.canal.client.adapter.hbase: DEBUG

com.alibaba.otter.canal.client.adapter.es: DEBUG

com.alibaba.otter.canal.client.adapter.rdb: DEBUG

spring:

jackson:

date-format: yyyy-MM-dd HH:mm:ss

time-zone: GMT+8

default-property-inclusion: non_null

canal.conf:

mqServers: 192.168.16.xxx:9092 #or rocketmq

flatMessage: true

batchSize: 500

syncBatchSize: 1000

retries: 0

timeout:

accessKey:

secretKey:

mode: kafka # tcp kafka rocketMQ

srcDataSources:

demoSrc:

url: jdbc:mysql://192.168.16.xxx:3306/demo?useUnicode=true

username: xxx

password: xxx

canalAdapters:

- instance: common_mq_highso # canal instance Name or mq topic name

groups:

- groupId: g1

outerAdapters:

- name: logger

- name: rdb

key: demoDes

properties:

jdbc.driverClassName: com.mysql.jdbc.Driver

jdbc.url: jdbc:mysql://192.168.16.xxx:3308/demo?useUnicode=true

jdbc.username: xxx

jdbc.password: xxx

编辑rdb目录下面表的映射文件,数据库demo, 表 test

dataSourceKey: demoSrc

destination: common_mq_highso

outerAdapterKey: demoDes

concurrent: true

dbMapping:

database: demo

table: test

targetTable: demo.test

targetPk:

id: id

mapAll: true

启动canal.adapter : ./startup.sh

三、测试

在3306数据库中插入一条数据库,检查是否在3308中同步

更新

删除

批量插入

批量更新

批量删除

canal同步mysql从库_canal.adapter 实现mysql数据库同步相关推荐

  1. canal mysql从库_canal中间件|数据增量同步解决方案

    上一文中提到延时双删等策略实现数据一致性的时候,可能存在删除缓存失败的情况,就会出现缓存和数据库不一致的问题.为了应对删除缓存失败而导致数据不一致的问题,可以通过回溯数据库日志文件,提供一个保障的重试 ...

  2. php mysql主从延迟_如何解决主从数据库同步延迟问题?php连接 mysql 数据库如何添加一个公共的配置文件50...

    在上一篇文章中,小编为您详细介绍了关于<图上属标注的什么样元器件?火车购票明明显示无座为什么样乘车后却发现有很多空座>相关知识.本篇中小编将再为您讲解标题如何解决主从数据库同步延迟问题?p ...

  3. 阿里云mysql主从有延迟怎么办_MySQL主从数据库同步延迟问题解决

    MySQL主从数据库同步延迟问题 摘要:MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主 ...

  4. mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)

    MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...

  5. mysql c库 示例_选择MySQL数据库进行连接的简单示例

    一旦获得MySQL服务器的连接,需要选择一个特定的数据库工作.这是因为MySQL服务器可能有一个以上的数据库. 从命令提示符,选择MySQL数据库: 这是很简单的选择一个特定的数据库mysql> ...

  6. oracle数据库同步工具Dell,|SQL Maestro Oracle Data Sync(数据库同步工具)下载v16.4.0.6免费版 - 欧普软件下载...

    Oracle Data Sync是一款好用的Oracle数据库同步软件,软件可以自动创建无错误的同步脚本,可实现数据库中各项数据的快速同步,还有自定义比较键和自动映射工具,提高同步数据的准确性.支持命 ...

  7. 阿里云mysql主从有延迟怎么办_MySQL主从数据库同步延迟问题解决-阿里云开发者社区...

    MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以 ...

  8. win执行mysql建库脚本_linux执行mysql脚本文件连接本地windows数据库

    又开始玩linux了,小白一个,连ls命令都是这两天新学的,今天又学了点东西,贴上来备忘: 需求:我是想要在linux执行一个.py文件,这个文件执行后可以远程连接我的本地windows的mysql数 ...

  9. mysql单库tps_简单计算mysql 的QPS,TPS

    QPS Queries Per Second:每秒查询数,一台数据库每秒能够处理的查询次数 TPS Transactions Per Second:每秒处理事务数 Uptime:服务器已经运行的实际, ...

  10. mysql 备份库的shell_linux备份Mysql数据库shell_MySQL

    linux备份Mysql数据库shell_MySQL bitsCN.com 欢迎拍砖,详细内容如下: # MYSQL 数据文件路径 MYSQL_DATA_PATH="/usr/local/m ...

最新文章

  1. Linux性能研究(总)
  2. Extjs 格式化---Ext.util.Format类
  3. 4月27日云栖精选夜读丨阿里CMO董本洪:你要运营流量,更要运营超级用户
  4. 洛谷 1351 联合权值——树形dp
  5. 对一个简单汇编程序分析
  6. mac 没有所有开发者_为什么开发人员应该像产品所有者那样思考
  7. Oracle中通过Job实现定时同步两个数据表之间的数据
  8. order by + 数字的用意
  9. 学习 | MongoDB 索引和排序
  10. java hex to ascii_使用java实现hex和ascii码的转换
  11. 【优化预测】基于matlab粒子群算法优化SVM预测【含Matlab源码 1424期】
  12. 【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库(二)
  13. 数学建模评价类模型——模糊综合评价
  14. 自己动手破解斯凯Mrp游戏
  15. 阿里矢量图库使用方法
  16. 晶体管电路设计 上 铃木雅臣 学习体会
  17. 计算机工业机器人编程,15个你不知道的工业机器人编程冷知识
  18. 电源过冲怎么测试软件,【经验】以DL3000电子负载为例,3分钟学会一个电源动态响应测试技巧...
  19. 2016年腾讯实习生校园招聘-电面2
  20. 基于java的条形码生成、读取和打印

热门文章

  1. Lebesgue可测但非Borel可测的函数
  2. 量化回测系统 股票回测系统 极简回测 策略开发
  3. ThingJS图表整合
  4. 苹果将30天无条件退还iPhone改为14天
  5. 线性代数笔记4.3 齐次线性方程组
  6. Spark的下一代引擎-Project Tungsten启示录
  7. JAVA-微信网页授权
  8. 计算机网络常见简答题
  9. Angular +Ionic修改日期组件英文按钮
  10. 怎么查询域名mx记录是否生效