编写一个用于CentOS上SQLAdmin的自动化运维脚本可以帮助你简化数据库管理任务,如备份、监控和性能优化。以下是一个示例脚本,展示了如何使用Bash脚本来实现这些功能。
sqladmin_automation.sh#!/bin/bash
# 配置部分
DB_HOST="localhost"
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_NAME="your_database"
BACKUP_DIR="/path/to/backup/directory"
LOG_FILE="/var/log/sqladmin.log"
# 函数:记录日志
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a $LOG_FILE
}
# 函数:创建数据库备份
backup_database() {
log_message "Starting database backup..."
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$(date '+%Y%m%d%H%M%S').sql
if [ $? -eq 0 ]; then
log_message "Database backup completed successfully."
else
log_message "Database backup failed."
fi
}
# 函数:检查磁盘空间
check_disk_space() {
log_message "Checking disk space..."
df -h $BACKUP_DIR | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
echo $output
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge 85 ]; then
log_message "Disk space on $partition is critically high ($usep%)."
fi
done
}
# 函数:监控数据库性能
monitor_performance() {
log_message "Monitoring database performance..."
mysqladmin -h $DB_HOST -u $DB_USER -p$DB_PASSWORD status | grep -E 'Uptime|Threads'
}
# 主逻辑
log_message "Starting SQLAdmin automation script..."
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 执行备份
backup_database
# 检查磁盘空间
check_disk_space
# 监控数据库性能
monitor_performance
log_message "SQLAdmin automation script completed."
配置部分:
DB_HOST:数据库主机地址。DB_USER:数据库用户名。DB_PASSWORD:数据库密码。DB_NAME:要备份的数据库名称。BACKUP_DIR:备份文件存储目录。LOG_FILE:日志文件路径。函数定义:
log_message:记录日志信息。backup_database:创建数据库备份。check_disk_space:检查磁盘空间使用情况。monitor_performance:监控数据库性能。主逻辑:
确保脚本具有执行权限:
chmod +x sqladmin_automation.sh
然后运行脚本:
./sqladmin_automation.sh
你可以使用cron来定期运行这个脚本。例如,每天凌晨2点运行一次:
crontab -e
添加以下行:
0 2 * * * /path/to/sqladmin_automation.sh >> /var/log/sqladmin_cron.log 2>&1
保存并退出编辑器。
通过这种方式,你可以自动化地管理你的数据库,减少手动操作的工作量,并提高系统的可靠性和稳定性。