Canal 单机测试

安装

2 run.sh 修改

#!/bin/bash

function usage() {
    echo "Usage:"
    echo "  run.sh [CONFIG]"
    echo "example 1 :"
    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=.*\\\..* "
    echo "example 2 :"
    echo "  run.sh -e canal.admin.manager=127.0.0.1:8089 \"
    echo "         -e canal.admin.port=11110 \"
    echo "         -e canal.admin.user=admin \"
    echo "         -e canal.admin.passwd=4ACFE3202A5FF5CF467898FC58AAB1D615029441"
    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
}
DATA="/usr/local/canal/data"
echo "宿主挂载目录:"$DATA
CONFIG=${@:1}
VOLUMNS="-v $DATA:/home/admin/canal-server/logs"
PORTLIST="11110 11111 11112 9100"
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

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"
        PORTS=""
        ;;
    *)
        bin_abs_path=`cd $(dirname $0); pwd`
        NET_MODE="--net=host"
        PORTS=""
        ;;
esac
BASE=${bin_abs_path}
DATA="$BASE/data"
mkdir -p $DATA

if [ $# -eq 0 ]; then
    usage
elif [ "$1" == "-h" ] ; then
    usage
elif [ "$1" == "help" ] ; then
    usage
fi



MEMORY="-m 4096m"
LOCALHOST=`getMyIp`
cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=canal-server $VOLUMNS $NET_MODE $PORTS $MEMORY canal/canal-server:v1.1.1"
echo $cmd
eval $cmd
View Code

3 start.sh 新增

#!/bin/bash
sh run.sh -e canal.auto.scan=false 
          -e canal.destinations=zomble 
          -e canal.instance.master.address=120.79.210.194:3306  
          -e canal.instance.dbUsername=canal  
          -e canal.instance.dbPassword=canal  
          -e canal.instance.connectionCharset=UTF-8 
          -e canal.instance.tsdb.enable=true 
          -e canal.instance.gtidon=false  

zomble 是目标域

4 执行./start.sh 最终的执行docker命令

host 网络模式

docker run -d -it -h 192.168.1.171 -e canal.auto.scan=false -e canal.destinations=zomble -e canal.instance.master.address=120.79.210.194:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false --name=canal-server -v /usr/local/canal/data/:/home/admin/canal-server/logs --net=host -m 4096m canal/canal-server:v1.1.1

上面的命令网络是host 方式 即容器占用的端口,宿主机也就占用了, 此时若想开多个实例可改为默认的桥接模式, 命令如下

桥接模式

docker run -d -it -h 192.168.1.171 -p 8777:11111 -e canal.auto.scan=false -e canal.destinations=zomble -e canal.instance.master.address=120.79.210.194:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e canal.instance.connectionCharset=UTF-8 -e canal.instance.tsdb.enable=true -e canal.instance.gtidon=false --name=canal-server-8777 -v /usr/local/canal/data/:/home/admin/canal-server/logs --net=bridge -m 4096m canal/canal-server:v1.1.1

 同时改个名称

 同时映射端口-p 8777:11111, 推荐的映射端口还有2222, 8000, 11112

 

DEMO 官网找

  

原文地址:https://www.cnblogs.com/eason-d/p/11843583.html