分享个修改达梦数据库AP_PORT的脚本,有些特殊情况下可以使用。脚本修改内容:
1)修改dm_ini文件的EXTERNAL_AP_PORT参数
2)创建dmap.ini文件
3)修改DmAPService文件
4)修改system系统服务名(避免开发环境多实例情况下服务名冲突覆盖)
使用root权限执行:
sh dm_change_APport.sh+安装目录+脚本名+新的AP端口+CONFIG_PATH
以修改AP端口为4239,系统服务名为DmAPServicePROD1为例:
如果数据库已经运行,执行sql:SP_SET_PARA_VALUE(1,‘EXTERNAL_AP_PORT’,新的AP端口);
可使修改生效。未运行的数据库(安装阶段),正常启动实例服务即可生效。
以下为脚本:
#!/bin/bash
#get para value
dm_install_dir=$1
service_name=$2
new_ap_port=$3
dm_data_dir=$4
#define function
function create_ap() {
sh ${dm_install_dir}/script/root/dm_service_installer.sh -t dmap
}
function change_dmini() {
dmini_file=${dm_data_dir}/dm.ini
para1=EXTERNAL_AP_PORT
value1=${new_ap_port}
sed -i "s/^\([ \t]*${para1} [ \t]*=[ \t]*\)\([^ ]*\)\( *.*\)/\1${value1}\3/" ${dmini_file}
}
function create_dmapini() {
if [ ! -f "${dm_data_dir}/dmap.ini" ]; then
touch ${dm_data_dir}/dmap.ini
fi
echo "AP_PORT=${new_ap_port}" >${dm_data_dir}/dmap.ini
}
function change_apservice_file() {
apservice_file=${dm_install_dir}/bin/DmAPService
apini_file=${dm_data_dir}/dmap.ini
ini_string="DMAP_INI_PATH=%DMAP_INI_PATH%"
ini_new_string="DMAP_INI_PATH=${apini_file}"
sed -i "s#${ini_string}#${ini_new_string}#g" "${apservice_file}"
}
function change_system_apservice {
sys_service_file=/usr/lib/systemd/system/DmAPService.service
new_service_file=/usr/lib/systemd/system/DmAPService${service_name}.service
if [ -f "${sys_service_file}" ]; then
cp /usr/lib/systemd/system/DmAPService.service /usr/lib/systemd/system/DmAPService.servicebak
mv /usr/lib/systemd/system/DmAPService.service ${new_service_file}
else
create_ap
change_apservice_file
mv /usr/lib/systemd/system/DmAPService.service ${new_service_file}
fi
systemctl daemon-reload
}
function restart_ap_service() {
systemctl restart DmAPService${service_name}.service
}
#excute
change_dmini
create_dmapini
change_apservice_file
change_system_apservice
restart_ap_service
文章
阅读量
获赞