需求:应用会根据日期,每日创建以日期为名称的database用于记录应用日志。完成日志保留90天的策略,每日检查,删除过期数据
#!/bin/bash
# 使用环境变量存储敏感信息
export MONGO_PASSWORD="passwd"
# 获取脚本所在目录
script_directory=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# 计算90天前的日期
target_db_prefix=$(date +%Y%m%d -d "90 day ago")
# 构建 mongosh 命令
mongosh_command="${script_directory}/bin/mongosh --host 127.0.0.1 --port 28017 \
--username admin --password \"$MONGO_PASSWORD\" --tls --tlsCAFile ca/ca.pem --tlsCertificateKeyFile ca/xxx.pem \
--quiet \
--eval \"db.getMongo().getDBNames().filter(function(dbName) { return dbName.startsWith('$target_db_prefix'); }).forEach(function(dbName) { db.getSiblingDB(dbName).dropDatabase(); });\""
# 执行 mongosh 命令并捕获返回值
if ! output=$($mongosh_command 2>&1); then
echo "$(date '+%Y-%m-%d %H:%M:%S') -- Error: $output"
exit 1
fi
# 输出日志
echo "$(date '+%Y-%m-%d %H:%M:%S') -- db<$target_db_prefix> del"