作者:大笨猫的男人 | 来源:互联网 | 2023-10-13 12:19
这是学习笔记的第 2185 篇文章读完需要9分钟速读仅需7分钟一直以来对于中间件服务的配置管理是一个有些头疼的事情,但是头疼还不意味着解决不了,目前现状是:中间件配置的管理是手工方
这是学习笔记的第 2185 篇文章
读完需要
9
分钟
速读仅需7分钟
一直以来对于中间件服务的配置管理是一个有些头疼的事情,但是头疼还不意味着解决不了,目前现状是:中间件配置的管理是手工方式,虽然保险,但是人为操作更难免出现问题,主要有以下的一些问题:
对于这种情况的改善,也是分了几个阶段:
1)实现周期表的自治管理,实现预创建,预删除,清理自动化管理
2)实现基于分布式环境的周期表扩展管理
3)实现基于分布式环境的配置自动化管理
4)实现配置和脚本的联动管理
5)实现分布式表的自动配置管理
目前主要在完善到第3个阶段,脚本部分内容如下:
主要需要4个参数,调用形式为:
sh auto_config.sh tda_test_data 20200110 20200120 prepare
参数的含义为 tda_test_data为表名,是带有时间属性的表,实际的表为tda_test_data_20200110~tda_test_data_20200120
需要输入两个时间范围,其中20200110是基准时间,就是在配置文件中的最大时间,而20200120是截止时间,prepare是整个脚本的处理阶段,分为三个选项:prepare,dry_run,execute。
prepare阶段只是打印出相关的配置信息,做下配置的预检查,是否日期已经自包含等。
dry_run阶段是模拟整个过程,不会真正的变更文件内容,但是会模拟出变更后的配置文件内容
execute是在上两个阶段验证后进行执行阶段。
所以整个配置基于时间维度的管理可以实现方便快捷的配置管理,而且整个过程会自动备份,恢复起来也是妥妥的。
部分脚本内容如下:
schema_conf_file='/usr/local/proxy/conf/schema.xml'
table_name=$1
table_name_seprator='_'
base_date=$2
end_date_str=$3
action_option=$4
time_flag=`date +%Y_%m_%d_%H_%S`
startdate=`date -d "+1 day ${base_date}" +%Y%m%d`
enddate=`date -d "+1 day ${end_date_str}" +%Y%m%d`
touch /tmp/schema.xml.${time_flag}_tmp
table_base_name=`echo ${table_name}${table_name_seprator}${base_date}`
function backup_file(){
cp ${schema_conf_file} ${schema_conf_file}.bak.${time_flag}
}
function config_parse(){
while [[ ${startdate} <${enddate} ]]
do
echo ${startdate}
table_tmp_name=`echo ${table_name}${table_name_seprator}${startdate}`
if [ `grep -w $table_tmp_name ${schema_conf_file}|wc -l` == 1 ];then
echo '配置 '$table_tmp_name' 已存在,请检查后重试。。。'
return
fi
grep -w $table_base_name ${schema_conf_file} >> /tmp/schema.xml.${time_flag}_tmp
sed -i "s/${base_date}/${startdate}/g" /tmp/schema.xml.${time_flag}_tmp
echo
startdate=`date -d "+1 day ${startdate}" +%Y%m%d`
done
}
function dry_run(){
line_num=`grep -n $table_base_name ${schema_conf_file}|awk -F: '{print $1}' `
sed ''${line_num}' r '/tmp/schema.xml.${time_flag}_tmp'' $schema_conf_file|grep -C30 $table_base_name
}
function append_to_file(){
line_num=`grep -n $table_base_name ${schema_conf_file}|awk -F: '{print $1}' `
sed -i ''${line_num}' r '/tmp/schema.xml.${time_flag}_tmp'' $schema_conf_file
}
function grep_file(){
file_match_cnt=`grep -C20 $table_base_name $schema_conf_file|wc -l`
if [ $file_match_cnt = 0 ];then
echo '没有匹配的配置时间范围,请检查后重试。。。'
else
while [[ ${startdate} <${enddate} ]]
do
table_tmp_name=`echo ${table_name}${table_name_seprator}${startdate}`
if [ `grep -w $table_tmp_name ${schema_conf_file}|wc -l` == 1 ];then
echo '配置 '$table_tmp_name' 已存在,文件内容如下,请检查后重试。。。'
grep -A5 $table_tmp_name $schema_conf_file
return
fi
startdate=`date -d "+1 day ${startdate}" +%Y%m%d`
done
echo 'CHECK RESULT: OK '
grep -C10 $table_base_name $schema_conf_file
fi
}
#执行主函数
if [ ! $action_option ];then
action_option='prepare'
fi
#echo $action_option
if [ $action_option = 'prepare' ];then
grep_file
else
backup_file
config_parse
if [ $action_option = 'dry-run' -o $action_option = 'dry_run' ];then
dry_run
elif [ $action_option = 'execute' ];then
append_to_file
else
echo 'input parameter error...'
fi
fi
rm /tmp/schema.xml.${time_flag}_tmp
QQ群号:763628645
QQ群二维码如下, 添加请注明:姓名+地区+职位,否则不予通过
订阅我的微信公众号“杨建荣的学习笔记”,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。
1
近期热文
你可能也会对以下话题感兴趣。点击链接就可以查看。
使用Python分析北京积分落户数据,分析完我陷入了深思
MySQL的主键命名挺任性,就这么定了
华裔教授发现二次方程极简解法,我默默的做了下验算
回答:我不小心把公司的数据库给删了,该不该离职?
迁移到MySQL的业务架构演进实战
数据库修改密码风险高,如何保证业务持续,这几种密码双活方案可以参考
MySQL业务双活的初步设计方案
如何优化MySQL千万级大表,我写了6000字的解读
一道经典的MySQL面试题,答案出现三次反转
业务双活的数据切换思路设计(下)
业务双活的数据切换思路设计(一)
MySQL中的主键和rowid,看似简单,其实有一些使用陷阱需要注意
小白学MySQL要多久?我整理了10多个问题的答案
2
转载热文
你可能也会对以下话题感兴趣,文章来源于转载,点击链接就可以查看。