canal番外篇-otter

news/2024/7/5 2:44:03

前置知识点

  • 主从复制
  • binlog
  • canal
  • 正则
  • docker
  • java

前置工具

  • docker
  • otter-all

场景描述(增量同步)

目前项目中使用的是mysql5.5,计划升级为mysql8.1,版本跨度较大,市面上可靠工具选择较少。otter符合预期,使用过程中除GitHub issues中提到的问题外(上述otter-all中已经修复),未发现其他异常。目前同步一切正常。
存量同步直接mysqldump。然后记录binlog位置(canal配置中用到)

安装otter

  1. docker pull zhangkaifunny/otter-all
  2. mkdir otter && cd otter && touch run.sh
    输入如下信息:
#!/bin/bash

function usage() {
    echo "Usage:"
    echo "  run.sh [CONFIG]"
    echo "example:"
    echo "  run.sh NODE -e OTTER_MANAGER=127.0.0.1:8080"
    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
RUN_MODE=$1
CONFIG=${@:2}
VOLUMNS="-v $DATA/mysql:/var/lib/mysql -v $DATA/zkData:/home/admin/zkData -v $DATA/logs:/home/admin/manager/logs"
PORTLIST="8080 8081 2181 2088 2089 2090"

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 4096m"
LOCALHOST=`getMyIp`
cmd="docker run -d -it -h $LOCALHOST $CONFIG --name=otter-all $VOLUMNS $NET_MODE $PORTS $MEMORY zhangkaifunny/otter-all:v1"
echo $cmd
eval $cmd
  1. sh run.sh

成功启动后,会出现http://xxx:8080,直接访问,然后点击退出,使用admin\admin登录。

具体操作

  1. 配置数据源
    在这里插入图片描述在这里插入图片描述

  2. 配置数据表(用到正则)
    在这里插入图片描述
    在这里插入图片描述

  3. 配置canal(用到主从复制、binlog 相关知识)

  4. 机器配置(略),使用默认

  5. 同步管理

    • channel管理

    • pipeline管理

    • 映射关系管理


http://www.niftyadmin.cn/n/4423123.html

相关文章

显示表结构描述的Sql语句

select column_name,data_type,column_default,character_maximum_length from information_schema.columns where table_namet_conclusion select objname,value from ::fn_listextendedproperty(default,user,dbo,table,t_conclusion,column,default)

深度学习(一) Python基本科学计算库

一.Numpy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。其基本运算对象是一个N维数组对象 ndarray。 - 导入Numpy:import numpy as np 1.ndarray 数组初始…

hibernate中调用存储过程hibernate中调用存储过程

如果底层数据库(如Oracle)支持存储过程,也可以通过存储过程来执行批量更新。存储过程直接在数据库中运行,速度更加快。在Oracle数据库中可以定义一个名为batchUpdateStudent()的存储过程,代码如下: create…

深度学习(二) 神经网络基础算法推导与实践

深度学习的核心就是各种不同的神经网络模型(CNN、RNN、GCN、GNN等)的学习和训练过程。这些神经网络模型的共同点都是一个“黑盒子”,通过一定的学习算法将大量数据交给模型训练,不断缩小模型预测值与真实值之间的误差,…

获取居于网内的机器名

查看文章获取局域网内的机器名2006-08-29 12:15unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList,ExtCtrls, ComCtrls; type TNetResourceArray ^TnetResource; TForm1 class(TForm) TreeVie…

深度学习(三) 卷积神经网络入门与实践

一.全连接神经网络的弊端 在上章学习完神经网络基础后,几乎所有问题的输入都能够Resize处理一下后扔进全连接神经网络(FNN)中进行训练。在图像学习任务中,图像(多通道)这类(N*C*W*H)多维输入格式数据需要通…

深度学习(四) 图像语义分割问题概述与实践

一.图像语义分割问题概述 图像语义分割(Semantic Segmentation) 是图像处理和机器学习视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支。图像语义分割问题就是对图像中的不同物体打上语义标签(用不同的颜色代表不同类别的物体&#xff0…

Windows常用网络命令(五)Tracert、Route 与 NBTStat的使用技巧

1、Tracert的使用技巧如果有网络连通性问题,可以使用 tracert 命令来检查到达的目标 IP 地址的路径并记录结果。tracert 命令显示用于将数据包从计算机传递到目标位置的一组 IP 路由器,以及每个跃点所需的时间。如果数据包不能传递到目标&#xff0c…