前置知识点
- 主从复制
- binlog
- canal
- 正则
- docker
- java
前置工具
- docker
- otter-all
场景描述(增量同步)
目前项目中使用的是mysql5.5,计划升级为mysql8.1,版本跨度较大,市面上可靠工具选择较少。otter符合预期,使用过程中除GitHub issues中提到的问题外(上述otter-all中已经修复),未发现其他异常。目前同步一切正常。
存量同步直接mysqldump。然后记录binlog位置(canal配置中用到)
安装otter
docker pull zhangkaifunny/otter-all
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
sh run.sh
成功启动后,会出现http://xxx:8080,直接访问,然后点击退出,使用admin\admin登录。
具体操作
-
配置数据源
-
配置数据表(用到正则)
-
配置canal(用到主从复制、binlog 相关知识)
-
机器配置(略),使用默认
-
同步管理
-
channel管理
-
pipeline管理
-
映射关系管理
-