Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
U
ubains-module-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
郑晓兵
ubains-module-test
Commits
7867a7a4
提交
7867a7a4
authored
1月 28, 2026
作者:
陈泽健
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into develop
上级
5cdbc480
bc53f2c0
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
351 行增加
和
7 行删除
+351
-7
backup_mysql_databases.sh
自动化部署脚本/x86架构/预定系统/定时脚本/backup_mysql_databases.sh
+1
-1
backup_mysql_logs.sh
自动化部署脚本/x86架构/预定系统/定时脚本/backup_mysql_logs.sh
+115
-0
backup_nginx_logs.sh
自动化部署脚本/x86架构/预定系统/定时脚本/backup_nginx_logs.sh
+136
-0
cleanup_deleted_files.sh
自动化部署脚本/x86架构/预定系统/定时脚本/cleanup_deleted_files.sh
+1
-1
monitor_emqx_service.sh
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_emqx_service.sh
+1
-1
monitor_external_api_services.sh
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_external_api_services.sh
+1
-1
monitor_inner_api_services.sh
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_inner_api_services.sh
+1
-1
monitor_mysql_service.sh
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_mysql_service.sh
+1
-1
monitor_redis_service.sh
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_redis_service.sh
+1
-1
配置说明
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
+93
-0
没有找到文件。
自动化部署脚本/x86架构/预定系统/定时脚本/backup_mysql_databases.sh
浏览文件 @
7867a7a4
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
CONTAINER_NAME
=
"umysql"
CONTAINER_NAME
=
"umysql"
DB_USER
=
"root"
DB_USER
=
"root"
HOST_BACKUP_DIR
=
"/opt/mysql"
# 宿主机备份目录
HOST_BACKUP_DIR
=
"/opt/mysql"
# 宿主机备份目录
LOG_FILE
=
"/var/log/backup_mysql_databases.log"
LOG_FILE
=
"/var/log/
scripts/
backup_mysql_databases.log"
RETENTION_DAYS
=
30
RETENTION_DAYS
=
30
TARGET_DBS
=(
"devops"
"devops_voice"
"huazhao2"
"nacos_mysql"
"offline"
"ubains"
"wifi"
"voice"
"ubains_nacos_config"
"ubains_sso"
)
TARGET_DBS
=(
"devops"
"devops_voice"
"huazhao2"
"nacos_mysql"
"offline"
"ubains"
"wifi"
"voice"
"ubains_nacos_config"
"ubains_sso"
)
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/backup_mysql_logs.sh
0 → 100644
浏览文件 @
7867a7a4
#!/bin/bash
# ==================== 配置区 ====================
MYSQL_LOG_DIR
=
"/opt/mysql/logs"
# MySQL日志目录
BACKUP_DIR
=
"/opt/mysql/logs/backup"
# 备份目录
LOG_FILE
=
"/var/log/scripts/backup_mysql_logs.log"
# 日志文件路径
RETENTION_DAYS
=
30
# 保留天数
DATE
=
$(
date
+
"%Y%m%d"
)
# 当前日期格式 YYYYMMDD
TODAY_DIR
=
"
$BACKUP_DIR
/
$DATE
"
# 今天的备份目录
# ==================== 日志函数 ====================
log
()
{
echo
"[
$(
date
'+%Y-%m-%d %H:%M:%S'
)
]
$1
"
>>
"
$LOG_FILE
"
}
# ==================== 权限保存和恢复函数 ====================
save_permissions
()
{
local
file
=
"
$1
"
# 获取文件权限和属主信息
local
perms owner group
perms
=
$(
stat
-c
%a
"
$file
"
2>/dev/null
)
owner
=
$(
stat
-c
%U
"
$file
"
2>/dev/null
)
group
=
$(
stat
-c
%G
"
$file
"
2>/dev/null
)
# 存储到临时文件
echo
"
$perms
$owner
$group
"
>
"
$file
.permissions.tmp"
}
restore_permissions
()
{
local
file
=
"
$1
"
local
perm_file
=
"
$file
.permissions.tmp"
if
[
-f
"
$perm_file
"
]
;
then
local
perms owner group
read
-r
perms owner group <
"
$perm_file
"
# 恢复权限和属主
chown
"
$owner
:
$group
"
"
$file
"
2>/dev/null
chmod
"
$perms
"
"
$file
"
2>/dev/null
# 删除临时权限文件
rm
-f
"
$perm_file
"
fi
}
# ==================== 主要功能 ====================
log
"===== 开始备份MySQL日志 (日期:
$DATE
) ====="
# 创建备份目录
mkdir
-p
"
$TODAY_DIR
"
touch
"
$LOG_FILE
"
# 检查MySQL日志目录是否存在
if
[
!
-d
"
$MYSQL_LOG_DIR
"
]
;
then
log
"❌ MySQL日志目录不存在:
$MYSQL_LOG_DIR
"
exit
1
fi
# 进入日志目录
cd
"
$MYSQL_LOG_DIR
"
||
{
log
"❌ 无法进入目录:
$MYSQL_LOG_DIR
"
exit
1
}
# 查找所有日志文件(包括 .log 和 .slow 文件)
LOG_FILES
=
$(
find
"
$MYSQL_LOG_DIR
"
-maxdepth
1
\(
-name
"*.log"
-o
-name
"*.slow"
-o
-name
"error.log"
-o
-name
"slow.log"
-o
-name
"mysqld.log"
\)
-type
f
)
if
[
-z
"
$LOG_FILES
"
]
;
then
log
"⚠️ 在
$MYSQL_LOG_DIR
中未找到日志文件"
exit
0
fi
# 备份并压缩每个日志文件
SUCCESS_COUNT
=
0
for
log_file
in
$LOG_FILES
;
do
filename
=
$(
basename
"
$log_file
"
)
source_path
=
"
$MYSQL_LOG_DIR
/
$filename
"
# 跳过已经备份过的文件(如果同名备份已存在)
if
[
-f
"
$TODAY_DIR
/
${
filename
}
.gz"
]
;
then
log
"⚠️ 备份文件已存在,跳过:
$filename
"
continue
fi
log
"开始备份日志文件:
$filename
"
# 保存原始权限信息
save_permissions
"
$source_path
"
# 复制文件到备份目录并压缩
if
gzip
-c
"
$source_path
"
>
"
$TODAY_DIR
/
${
filename
}
_
${
DATE
}
.gz"
;
then
log
"✅ 日志备份并压缩成功:
$filename
->
${
filename
}
_
${
DATE
}
.gz"
((
SUCCESS_COUNT++
))
else
log
"❌ 日志备份失败:
$filename
"
# 如果备份失败,仍需要恢复权限信息
restore_permissions
"
$source_path
"
fi
# 恢复原始文件权限
restore_permissions
"
$source_path
"
done
log
"本次共成功备份
$SUCCESS_COUNT
个日志文件"
# ==================== 清理超过30天的旧备份 ====================
log
"开始清理超过
$RETENTION_DAYS
天的旧备份..."
find
"
$BACKUP_DIR
"
-maxdepth
1
-type
d
-name
"????????"
-mtime
+
$RETENTION_DAYS
-exec
rm
-rf
{}
+ 2>/dev/null
# 清理权限临时文件(以防万一)
find
"
$MYSQL_LOG_DIR
"
-name
"*.permissions.tmp"
-type
f
-delete
2>/dev/null
log
"===== 日志备份任务结束 ====="
\ No newline at end of file
自动化部署脚本/x86架构/预定系统/定时脚本/backup_nginx_logs.sh
0 → 100644
浏览文件 @
7867a7a4
#!/bin/bash
# ==================== 配置区 ====================
NGINX_LOG_DIR
=
"/var/www/java/nginx-conf.d/nginx_log"
# Nginx日志目录
BACKUP_DIR
=
"
$NGINX_LOG_DIR
/backup"
# 备份目录
LOG_FILE
=
"/var/log/scripts/backup_nginx_logs.log"
# 日志文件路径
RETENTION_DAYS
=
30
# 保留天数
DATE
=
$(
date
+
"%Y%m%d"
)
# 当前日期格式 YYYYMMDD
TODAY_DIR
=
"
$BACKUP_DIR
/
$DATE
"
# 今天的备份目录
# ==================== 日志函数 ====================
log
()
{
echo
"[
$(
date
'+%Y-%m-%d %H:%M:%S'
)
]
$1
"
>>
"
$LOG_FILE
"
}
# ==================== 权限保存和恢复函数 ====================
save_permissions
()
{
local
file
=
"
$1
"
# 获取文件权限和属主信息
local
perms owner group
perms
=
$(
stat
-c
%a
"
$file
"
2>/dev/null
)
owner
=
$(
stat
-c
%U
"
$file
"
2>/dev/null
)
group
=
$(
stat
-c
%G
"
$file
"
2>/dev/null
)
# 存储到临时文件
echo
"
$perms
$owner
$group
"
>
"
$file
.permissions.tmp"
}
restore_permissions
()
{
local
file
=
"
$1
"
local
perm_file
=
"
$file
.permissions.tmp"
if
[
-f
"
$perm_file
"
]
;
then
local
perms owner group
read
-r
perms owner group <
"
$perm_file
"
# 恢复权限和属主
chown
"
$owner
:
$group
"
"
$file
"
2>/dev/null
chmod
"
$perms
"
"
$file
"
2>/dev/null
# 删除临时权限文件
rm
-f
"
$perm_file
"
fi
}
# ==================== 主要功能 ====================
log
"===== 开始备份Nginx日志 (日期:
$DATE
) ====="
# 创建备份目录
mkdir
-p
"
$TODAY_DIR
"
touch
"
$LOG_FILE
"
# 检查Nginx日志目录是否存在
if
[
!
-d
"
$NGINX_LOG_DIR
"
]
;
then
log
"❌ Nginx日志目录不存在:
$NGINX_LOG_DIR
"
exit
1
fi
# 进入日志目录
cd
"
$NGINX_LOG_DIR
"
||
{
log
"❌ 无法进入目录:
$NGINX_LOG_DIR
"
exit
1
}
# 查找所有日志文件(access.log 和 error.log)
LOG_FILES
=
""
if
[
-f
"access.log"
]
;
then
LOG_FILES
=
"
$LOG_FILES
access.log"
fi
if
[
-f
"error.log"
]
;
then
LOG_FILES
=
"
$LOG_FILES
error.log"
fi
if
[
-z
"
$LOG_FILES
"
]
;
then
log
"⚠️ 在
$NGINX_LOG_DIR
中未找到Nginx日志文件"
exit
0
fi
# 备份并压缩每个日志文件
SUCCESS_COUNT
=
0
for
log_file
in
$LOG_FILES
;
do
source_path
=
"
$NGINX_LOG_DIR
/
$log_file
"
# 跳过已经备份过的文件(如果同名备份已存在)
if
[
-f
"
$TODAY_DIR
/
${
log_file
}
_
${
DATE
}
.gz"
]
;
then
log
"⚠️ 备份文件已存在,跳过:
$log_file
"
continue
fi
log
"开始备份日志文件:
$log_file
"
# 保存原始权限信息
save_permissions
"
$source_path
"
# 复制文件到备份目录并压缩
if
gzip
-c
"
$source_path
"
>
"
$TODAY_DIR
/
${
log_file
}
_
${
DATE
}
.gz"
;
then
log
"✅ 日志备份并压缩成功:
$log_file
->
${
log_file
}
_
${
DATE
}
.gz"
((
SUCCESS_COUNT++
))
# 清空原始日志文件内容,但保持文件存在
>
"
$source_path
"
log
"✅ 原始日志文件已清空:
$log_file
"
else
log
"❌ 日志备份失败:
$log_file
"
# 如果备份失败,仍需要恢复权限信息
restore_permissions
"
$source_path
"
fi
# 恢复原始文件权限
restore_permissions
"
$source_path
"
done
log
"本次共成功备份
$SUCCESS_COUNT
个日志文件"
# ==================== 清理超过30天的旧备份 ====================
log
"开始清理超过
$RETENTION_DAYS
天的旧备份..."
find
"
$BACKUP_DIR
"
-maxdepth
1
-type
d
-name
"????????"
-mtime
+
$RETENTION_DAYS
-exec
rm
-rf
{}
+ 2>/dev/null
# 清理权限临时文件(以防万一)
find
"
$NGINX_LOG_DIR
"
-name
"*.permissions.tmp"
-type
f
-delete
2>/dev/null
# 发送HUP信号给nginx进程,使其重新打开日志文件
if
command
-v
nginx &> /dev/null
;
then
nginx
-s
reopen 2>/dev/null
||
{
# 如果直接执行失败,尝试通过docker向ujava2容器发送信号
docker
exec
ujava2 nginx
-s
reopen 2>/dev/null
||
log
"⚠️ 无法向Nginx发送reopen信号"
}
elif
docker ps
--format
'{{.Names}}'
|
grep
-q
"ujava2"
;
then
# 如果nginx命令不存在,但容器存在,则尝试在容器内执行
docker
exec
ujava2 nginx
-s
reopen 2>/dev/null
||
log
"⚠️ 无法向Nginx发送reopen信号"
fi
log
"===== Nginx日志备份任务结束 ====="
\ No newline at end of file
自动化部署脚本/x86架构/预定系统/定时脚本/cleanup_deleted_files.sh
浏览文件 @
7867a7a4
#!/bin/bash
#!/bin/bash
# clear_deleted_files.sh - 定时清理被进程占用的已删除文件
# clear_deleted_files.sh - 定时清理被进程占用的已删除文件
LOG_FILE
=
"/var/log/cleanup_deleted_files.log"
LOG_FILE
=
"/var/log/
scripts/
cleanup_deleted_files.log"
DATE
=
$(
date
'+%Y-%m-%d %H:%M:%S'
)
DATE
=
$(
date
'+%Y-%m-%d %H:%M:%S'
)
echo
"[
$DATE
] 开始检查被占用的已删除文件..."
>>
"
$LOG_FILE
"
echo
"[
$DATE
] 开始检查被占用的已删除文件..."
>>
"
$LOG_FILE
"
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_emqx_service.sh
浏览文件 @
7867a7a4
#!/bin/bash
#!/bin/bash
# 宿主机上的脚本:检查 EMQX,如果容器未运行则重启 uemqx 容器
# 宿主机上的脚本:检查 EMQX,如果容器未运行则重启 uemqx 容器
LOG_FILE
=
"/var/log/monitor_emqx_service.log"
LOG_FILE
=
"/var/log/
scripts/
monitor_emqx_service.log"
log
()
{
log
()
{
local
message
local
message
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_external_api_services.sh
浏览文件 @
7867a7a4
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
# --- 配置区域 ---
# --- 配置区域 ---
# 日志文件路径
# 日志文件路径
LOG_FILE
=
"/var/log/monitor_external_api_services.log"
LOG_FILE
=
"/var/log/
scripts/
monitor_external_api_services.log"
# 定义要监控的服务及其相关信息
# 定义要监控的服务及其相关信息
# 格式: "进程名:目录路径:启动脚本路径"
# 格式: "进程名:目录路径:启动脚本路径"
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_inner_api_services.sh
浏览文件 @
7867a7a4
...
@@ -38,7 +38,7 @@ MALAN_DIR="/var/www/malan"
...
@@ -38,7 +38,7 @@ MALAN_DIR="/var/www/malan"
MALAN_PORT
=
"6060"
MALAN_PORT
=
"6060"
# 日志配置
# 日志配置
LOG_FILE
=
"/var/log/monitor-inner-api-services.log"
LOG_FILE
=
"/var/log/
scripts/
monitor-inner-api-services.log"
# 超时配置
# 超时配置
START_TIMEOUT
=
30
START_TIMEOUT
=
30
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_mysql_service.sh
浏览文件 @
7867a7a4
#!/bin/bash
#!/bin/bash
# 宿主机上的脚本:检查 MySQL,如果容器未运行则重启 umysql 容器
# 宿主机上的脚本:检查 MySQL,如果容器未运行则重启 umysql 容器
LOG_FILE
=
"/var/log/monitor_mysql_service.log"
LOG_FILE
=
"/var/log/
scripts/
monitor_mysql_service.log"
log
()
{
log
()
{
local
message
local
message
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/monitor_redis_service.sh
浏览文件 @
7867a7a4
#!/bin/bash
#!/bin/bash
# 宿主机上的脚本:检查 Redis,如果容器未运行则重启 uredis 容器
# 宿主机上的脚本:检查 Redis,如果容器未运行则重启 uredis 容器
LOG_FILE
=
"/var/log/monitor_redis_service.log"
LOG_FILE
=
"/var/log/
scripts/
monitor_redis_service.log"
log
()
{
log
()
{
local
message
local
message
...
...
自动化部署脚本/x86架构/预定系统/定时脚本/配置说明
0 → 100644
浏览文件 @
7867a7a4
# 预定系统定时任务配置说明
## 一、目录结构说明
- **脚本存放目录**:`/opt/scripts/`
- **日志文件目录**:`/var/log/scripts/`
- **日志文件命名规则**:`脚本名.log`
## 二、部署步骤
1. **上传脚本文件**:将所有定时任务脚本上传至服务器的 `/opt/scripts` 目录下
2. **设置脚本权限**:
```bash
chmod +x /opt/scripts/*.sh
```
3. **创建日志目录**(如果不存在):
```bash
sudo mkdir -p /var/log/scripts/
```
## 三、定时任务配置
执行以下命令编辑 crontab:
```bash
crontab -e
```
添加以下定时任务配置:
```
# ==================== 预定系统定时任务配置 ====================
# 每日凌晨1点备份MySQL数据库
0 1 * * * /opt/scripts/backup_mysql_databases.sh
# 每日凌晨2点备份MySQL日志
0 2 * * * /opt/scripts/backup_mysql_logs.sh
# 每日凌晨3点备份Nginx日志
0 3 * * * /opt/scripts/backup_nginx_logs.sh
# 每日凌晨4点检查并清理被占用的已删除文件
0 4 * * * /opt/scripts/cleanup_deleted_files.sh
# 每5分钟监测EMQX服务状态
*/5 * * * * /opt/scripts/monitor_emqx_service.sh
# 每5分钟监测外部API服务状态
*/5 * * * * /opt/scripts/monitor_external_api_services.sh
# 每5分钟监测内部API服务状态
*/5 * * * * /opt/scripts/monitor_inner_api_services.sh
# 每5分钟监测MySQL服务状态
*/5 * * * * /opt/scripts/monitor_mysql_service.sh
# 每5分钟监测Redis服务状态
*/5 * * * * /opt/scripts/monitor_redis_service.sh
# ==================== 定时任务结束 ====================
```
## 四、注意事项
1. **日志输出**:所有脚本已在内部实现日志输出功能,无需在 crontab 中重定向输出
2. **权限要求**:某些脚本可能需要特定权限才能正常运行,确保脚本具有足够的权限访问所需资源
3. **服务依赖**:确保相关服务(如 Docker、Nginx、MySQL 等)在执行脚本前处于运行状态
4. **监控日志**:定期检查 `/var/log/scripts/` 目录下的日志文件,确认各脚本正常运行
5. **备份保留**:日志和备份文件会保留30天,如需调整保留时间请修改脚本中的 RETENTION_DAYS 参数
## 五、故障排查
1. **检查脚本权限**:
```bash
ls -la /opt/scripts/
```
2. **检查定时任务是否生效**:
```bash
crontab -l
```
3. **查看日志文件**:
```bash
tail -f /var/log/scripts/脚本名.log
```
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论