portal自动安装脚本

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值