一个网站的建设需要哪些流程图,大气的化妆品网站名,为代理网站做网站,wordpress 无法上传在日常的运维工作中#xff0c;常常是一个人需要管理维护数个数十个数据库实例#xff0c;如果是开源类集群如mysql#xff0c;PG等可能更多#xff1b;在没有商业的集中管理平台的情况下#xff0c;如何快速的部署监控或者运维脚本#xff0c;是一个值得探讨的问题…在日常的运维工作中常常是一个人需要管理维护数个数十个数据库实例如果是开源类集群如mysqlPG等可能更多在没有商业的集中管理平台的情况下如何快速的部署监控或者运维脚本是一个值得探讨的问题这里博主以一个简单的示例来演示如何快速一次性给20个实例部署运维脚本。
前面我发布了一个自动检查tablespace空间使用率并再超过阈值时自动添加数据文件的脚本具体参考链接如下
Oracle自动处理表空间不足脚本-CSDN博客
更多的监控脚本可以参考如下
oracle常用监控脚本纯干货没有EMCC,ZABBIX也不怕_oracle 监控及日常处理脚本-CSDN博客
我这里就来演示如何一次性将这个脚本部署到全部20个数据库实例中
1. 选择一台集中部署服务器
这台部署服务器要和所有数据库实例网络通ssh端口通我这里选择了EMCC服务器为了管理实例EMCC服务器已经和所有数据库实例打通了网络。如何部署EMCC可以参考如下文档EMCC13.5安装配置手册详细版-CSDN博客 2. 配置互联互通
配置互联互通一般有两种方式一种是类似Oracle11g RAC配置节点间免密登陆我个人认为比较麻烦一下但是配置好之后 后期会比较方便我这里选择使用sshpass
sshpass 是一个用于在命令行中非交互式提供 SSH 密码的工具特别适合自动化脚本。它允许用户在 SSH、SCP 等命令中通过参数提供密码从而省去手动输入的过程。
安装# Ubuntu/Debiansudo apt-get install sshpass# CentOS/RHELsudo yum install sshpass#ssh登陆格式sshpass -p your_password ssh userhostname#ssh传输文件格式sshpass -p your_password scp localfile.txt userhostname:/remote/path
3.配置需要部署的IP列表
#设置需要部署的ip list #格式为ip osuser password sshport10.xxx.xx.xxx oracle xxxxx 22 4.初次部署需要手动scp一下
昨天实验时sshpass一直无法正常传输数据但是sshpass没有报错后来发现要先scp 接受一下
#首次部署需要scp接受RSA key后面再次部署就可以使用sshpass了[oracleorcoem01 jobs]$ scp /home/oracle/jobs/auto_add_dbf.sh oracle10.xxx.xxx.xxx:/home/oracle/jobs/The authenticity of host 10.219.40.231 (10.219.40.231) cant be established.RSA key fingerprint is SHA256:RTS5x8jB3sOKNeKwN4jOHiISwAZfgWf4WmJTT4rXc0.RSA key fingerprint is MD5:c0:06:94:bd:35:1b:f9:4c:b7:d7:10:0a:e7:22:f5:56.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 10.xxx.xxx.xxx (RSA) to the list of known hosts.oracle10.xxx.xxx.xxxauto_add_dbf.sh 5.自动化部署脚本
这里自动化部署自动加tablespace数据库文件脚本
[oracleszsplorcoem01 jobs]$ cat deploy_auto_add_dbf.sh #!/bin/bash
# 配置文件路径CONFIG_FILElist.txt#需要部署的脚本SCRIPT_FILEauto_add_dbf.sh#设置crontab 参数CRON_SCHEDULE0 8 * * * # 每天早上8点00分执行一次
# 检查 list.txt 和 auto_add_dbf.sh 文件是否存在if [[ ! -f $CONFIG_FILE ]]; then echo 配置文件 $CONFIG_FILE 不存在 exit 1fi
if [[ ! -f $SCRIPT_FILE ]]; then echo 脚本文件 $SCRIPT_FILE 不存在 exit 1fi
# 将配置文件内容读入数组mapfile -t servers $CONFIG_FILE
# 遍历数组中的每一行 抓取ip和用户信息等for server in ${servers[]}; do # 解析 IP、用户名、密码和端口 IP$(echo $server | awk {print $1}) USERNAME$(echo $server | awk {print $2}) PASSWORD$(echo $server | awk {print $3}) PORT$(echo $server | awk {print $4}) PORT${PORT:-22} # 如果没有指定端口则默认为22# 使用 sshpass 自动登录并执行命令 echo 连接到 $IP 并部署脚本...# 复制脚本到远程主机 目标路径根据个人需要设定 sshpass -p $PASSWORD scp -P $PORT $SCRIPT_FILE $USERNAME$IP:/home/oracle/jobs# 在远程主机上设置 cron 任务 sshpass -p $PASSWORD ssh -p $PORT $USERNAME$IP (crontab -l 2/dev/null; echo \$CRON_SCHEDULE /bin/bash /home/oracle/jobs/$SCRIPT_FILE\) | crontab -echo 在 $IP 上成功部署并配置了自动任务。
done6.脚本执行结果 有部分IP 或者端口不通或者用户名密码不对 导致失败 到目标主机检查部署情况 确认脚本文件被传输到目标主机 确认crontab 已经正常添加并确认脚本可以正常执行
批量化执行的脚本需要有普适性也就是不需要修改脚本这里auto_add_dbf.sh 通过抓取/home/oracle/.bash_profile来获取sid和oracle home信息等 这里只是一个范例如果脚本需要定制化修改也可以通过抓取主机上的信息来自动修改脚本实现批量部署希望能帮助到大家。