Tag - sh脚本

mangodb 备份数据

2025-11-06 16:45:57    3    0    0
# 在文件中编写如下内容
## 指定到你安装的Mongodb bin目录下的mongodump
dump=/www/server/mongodb/bin/mongodump
## 填写你创建dump_bak文件的绝对路径
out_dir=/www/backup/mongodump/dump_bak
## 填写你创建tar_bak文件的绝对路径
tar_dir=/www/backup/mongodump/tar_bak
## 记录备份时间
sysdate=`date +%Y%m%d_%H%M%S`
## 设置删除期限,删除30天前的备份
days=30
## 设置最终压缩的文件名称,带有日期
tar_bak="mondodb_bak_$sysdate.tar.gz"
 
if [ -d $out_dir ];then
  cd $out_dir
else
  ## "文件夹不存在"
  sudo mkdir -p $out_dir
  cd $out_dir
fi
 
if [ ! -d $tar_dir ];then
  ## "文件夹不存在"
  sudo mkdir -p $tar_dir
fi

 
# 删除之前的dump文件
sudo rm -rf $out_dir/*
# 创建新的文件夹存放dump文件
sudo mkdir -p $out_dir/$sysdate
# 导出127.0.0.1机器上的leanote库的所有表到$out_dir/$sysdate文件夹
$dump -h 127.0.0.1 -d leanote -o $out_dir/$sysdate
# 压缩$out_dir/$sysdate到目标文件夹
sudo tar -zcvf $tar_dir/$tar_bak $out_dir/$sysdate
# 删除指定期限钱的备份文件
sudo find $tar_dir/ -mtime +$days -delete
 
echo "===数据库: leanote 备份完成==="
# 退出
exit


日志导致磁盘爆满引发的错误

2025-11-06 16:24:21    8    0    0
  1. 因sql日志频繁写入导致磁盘空间不足,后续资源无法写入,导致错误
  2. 线上环境要关掉debug,防止错误泄露
  3. 增加资源监控脚本
#!/bin/bash

##############################################
# 资源监控
##############################################

# 配置日志文件
LOG_FILE="/var/log/supervisory_control.log"
MAX_LOG_SIZE=10485760  # 10MB

# 安全配置:设置安全路径
export PATH="/usr/bin:/bin:/usr/sbin:/sbin"

# 日志函数
log_message() {
    local level=$1
    local message=$2
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    # 创建日志目录(如果不存在)
    local log_dir=$(dirname "$LOG_FILE")
    if [ ! -d "$log_dir" ]; then
        mkdir -p "$log_dir" 2>/dev/null || {
            echo "无法创建日志目录: $log_dir" >&2
            return 1
        }
    fi
    
    # 检查日志文件大小并轮转
    if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE" 2>/dev/null || echo 0) -gt $MAX_LOG_SIZE ]; then
        mv "$LOG_FILE" "${LOG_FILE}.old" 2>/dev/null
    fi
    
    # 写入日志
    echo "[$timestamp] [$level] $message" | tee -a "$LOG_FILE" 2>/dev/null
}

# 检查必需命令是否存在
check_commands() {
    local commands=("top" "df" "fr