portal简介
portal为openGauss管理工具DataKit进行MySQL到openGauss数据迁移时需要用到的插件,而关于DataKit数据迁移,请参考本人的博客DataKit数据迁移-1使用说明。
若想进一步了解portal可以前往portal开源仓库“https://gitee.com/opengauss/openGauss-migration-portal” 进行学习了解。
portal安装脚本
如下为使用portal安装包,直接在服务器上进行portal安装的脚本,使用前,请仔细阅读脚本头部的使用说明。使用时,直接复制如下命令框中的代码,粘贴到install.sh
空文件中即可。
#!/bin/bash
# ##################
# 使用说明,请耐心阅读
# ##################
# 友情提醒:进行portal安装的用户,需要具有sudo且不需要输入密码的权限,否则可能导致安装失败。安装成功后,可以将sudo权限取消。
# 脚本为portal安装脚本,可以支持在线下载并安装portal,或使用已有的安装包安装portal。
# 使用步骤如下:
# 1-进入portal的安装目录下,创建install.sh空文件,将本脚本内容粘贴进入文件中,保存退出。
# 2-调用脚本,进行portal安装,调用脚本的命令如下:
# sh install.sh <CentOS7_x86_64|openEuler2003_x86_64|openEuler2003_aarch64|openEuler2203_x86_64|openEuler2203_aarch64> [-o|--online]
# 如上调用脚本时可以传入两个参数,其中:
# 第一个参数为必选参数,从五个可选项中任选其一;参数表示当前服务器的系统及架构类型,请根据实际情况选择。
# 第二个参数为可选参数,从两个选项中任选其一;参数表示是否在线下载portal安装包,如果选择此参数,则脚本运行时会在线下载portal安装包。如果不选此参数,需要将已有安装包放到本脚本的相同目录下,脚本运行时会自动解压安装已有安装包。
# 3-脚本运行,需要输入zookeeper port,kafka port和schema registry port,根据提示分别输入三个未被占用的端口号即可。
# 4-脚本运行成功,会完成portal(包含所有迁移工具)安装,并启动kafka。
# 脚本使用示例:
# sh install.sh CentOS7_x86_64 -o ,在CentOS7 x86_64服务器上,在线下载安装包,安装portal。
# sh install.sh CentOS7_x86_64 ,在CentOS7 x86_64服务器上,使用已有的安装包,安装portal。
# sh install.sh openEuler2003_x86_64 -o ,在openEuler2003 x86_64服务器上,在线下载安装包,安装portal。
# ##################
# 下面内容为脚本的业务逻辑,使用时无需查看
# ##################
# 脚本说明
usage=""
# 安装路径
install_path="$(pwd)"
# 下载地址
download_url=""
# 安装包
package_name=""
# 是否在线下载安装包
is_download=false
# zookeeper port
zookeeper_port="2181"
# kafka port
kafka_port="9092"
# schema registry port
schema_registry_port="8081"
# 有效的系统架构
valid_system_archs=("CentOS7_x86_64" "openEuler2003_x86_64" "openEuler2003_aarch64" "openEuler2203_x86_64" "openEuler2203_aarch64")
# portal latest版本下载地址,与有效的系统架构数组元素一一对应
portal_download_urls=("https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/centos7/PortalControl-6.0.0-x86_64.tar.gz" "https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/openEuler20.03/PortalControl-6.0.0-x86_64.tar.gz" "https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/openEuler20.03/PortalControl-6.0.0-aarch64.tar.gz" "https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/openEuler22.03/PortalControl-6.0.0-x86_64.tar.gz" "https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/openEuler22.03/PortalControl-6.0.0-aarch64.tar.gz")
generate_usage() {
temp=""
for ((i=0; i<${#valid_system_archs[@]}; i++))
do
if [ $i -eq 0 ]; then
temp="${valid_system_archs[i]}"
else
temp="${temp}|${valid_system_archs[i]}"
fi
done
usage="Usage: $0 <${temp}> [-o|--online]"
}
check_path() {
# 检查是否有写权限
if [ ! -w "${install_path}" ]; then
echo "You do not have write permission on directory '${install_path}'."
exit 1
fi
}
check_parameters() {
# 检查参数数量是否小于1
if [ "$#" -lt 1 ]; then
echo "This script accepts one or two arguments."
echo "${usage}"
exit 1
fi
# 检查系统及架构是否匹配
for ((i=0; i<${#valid_system_archs[@]}; i++))
do
if [ "$1" = "${valid_system_archs[i]}" ]; then
download_url="${portal_download_urls[i]}"
package_name=$(basename ${download_url})
break
fi
if [ $i -eq $((${#valid_system_archs[@]}-1)) ]; then
echo "The first parameter is invalid."
echo "${usage}"
exit 1
fi
done
# 判断是否为在线下载
if [ "$#" -eq 2 ]; then
case $2 in
-o|--online)
is_download=true
;;
*)
echo "Unknown option $2"
echo "${usage}"
exit 1
;;
esac
fi
if [ "$#" -gt 2 ]; then
echo "This script accepts one or two arguments."
echo "${usage}"
exit 1
fi
}
download_package() {
if [ "${is_download}" = true ]; then
echo "Start downloading the installation package."
wget ${download_url}
if [ $? -eq 0 ]; then
echo "Download success."
else
echo "Download failed!"
fi
fi
}
unzip_package() {
echo "Unzip the installation package."
tar -zxf ${package_name}
# 检查解压是否成功
if [ $? -eq 0 ]; then
echo "Unzip success."
else
echo "Unzip failed!"
exit 1
fi
}
read_port() {
# 获取第三方工具端口
echo "Please enter zookeeper port:"
read zookeeper_port
echo "Please enter kafka port:"
read kafka_port
echo "Please enter schema registry port:"
read schema_registry_port
}
install_portal() {
# 获取ip
ip=$(ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | head -n 1)
# 修改配置文件
echo "Modifying the properties file."
sed -i "s#/ops/portal/#${install_path}/portal/#g" ${install_path}/portal/config/toolspath.properties
# 安装portal
echo "Start the installation."
java -Dpath=${install_path}/portal/ -DzookeeperPort=${zookeeper_port} -DkafkaPort=${kafka_port} -DschemaRegistryPort=${schema_registry_port} -DzkIp=${ip} -DkafkaIp=${ip} -DschemaRegistryIp=${ip} -DthirdPartySoftwareConfigType=2 -DinstallDir=${install_path}/portal/tools/debezium/ -Dorder=install_mysql_all_migration_tools -Dskip=true -jar ${install_path}/portal/portalControl-*-exec.jar
}
main() {
generate_usage
check_parameters $@
check_path
read_port
download_package
unzip_package
install_portal
echo "shell end"
}
main $@
历史调试脚本
如下脚本为个人调试用脚本,用户无需查看。
#!/bin/bash
# 自定义变量
ip="172.17.0.1"
version="6.0.0"
install_path="/path/portal/"
zookeeper_port="2181"
kafka_port="9092"
schema_registry_port="8081"
# 因变量
# package="PortalControl-$version-aarch64.tar.gz"
package="PortalControl-$version-x86_64.tar.gz"
# 解压压缩包
echo "解压压缩包"
tar -zxf $package
# 检查解压是否成功
if [ $? -eq 0 ]; then
echo "解压成功。"
else
echo "解压失败!"
exit 1
fi
# 修改配置文件
echo "修改配置文件"
sed -i "s#/ops/portal/#${install_path}portal/#g" ${install_path}portal/config/toolspath.properties
# 安装portal
echo "执行安装"
java -Dpath=${install_path}portal/ -DzookeeperPort=${zookeeper_port} -DkafkaPort=${kafka_port} -DschemaRegistryPort=${schema_registry_port} -DzkIp=$ip -DkafkaIp=$ip -DschemaRegistryIp=$ip -DthirdPartySoftwareConfigType=2 -DinstallDir=${install_path}portal/tools/debezium/ -Dorder=install_mysql_all_migration_tools -Dskip=true -jar ${install_path}portal/portalControl-*-exec.jar