CentOS环境下SQLAdmin自动化运维实现指南
在CentOS系统中,SQLAdmin通常关联MySQL/PostgreSQL等数据库的管理工具,其自动化运维核心围绕备份自动化、服务管理自动化、监控报警自动化展开。以下是具体实现步骤:
备份是数据库运维的基础,通过cron定时执行备份脚本可实现定期自动备份,避免人工遗漏。
编写备份脚本
创建Shell脚本(如/usr/local/bin/backup_sql.sh),包含备份逻辑与日志记录:
#!/bin/bash
# 配置参数
BACKUP_DIR="/data/db_backup" # 备份目录(需提前创建)
LOG_FILE="/var/log/db_backup.log" # 日志文件
DB_HOST="localhost" # 数据库地址
DB_USER="admin" # 数据库用户名
DB_PASS="your_password" # 数据库密码(建议用配置文件或环境变量替代)
DB_NAME="your_database" # 数据库名
DATE=$(date +"%Y%m%d_%H%M%S") # 时间戳
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.sql" # 备份文件名
# 执行备份并记录日志
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE 2>> $LOG_FILE
if [ $? -eq 0 ]; then
echo "$(date '+%Y-%m-%d %H:%M:%S') Backup succeeded: $BACKUP_FILE" >> $LOG_FILE
else
echo "$(date '+%Y-%m-%d %H:%M:%S') Backup failed!" >> $LOG_FILE
fi
# 删除7天前的旧备份(可选,节省空间)
find $BACKUP_DIR -name "${DB_NAME}_*.sql" -mtime +7 -exec rm -f {} \;
赋予脚本执行权限:chmod +x /usr/local/bin/backup_sql.sh。
设置Cron定时任务
通过crontab -e编辑当前用户的cron表,添加定时规则(如每天凌晨2点执行):
0 2 * * * /usr/local/bin/backup_sql.sh
保存后cron会自动加载配置,可通过crontab -l查看当前任务。
SQLAdmin关联的数据库服务(如MySQL)可通过systemd实现开机自启、状态监控与快速启停。
设置开机自启
对于MySQL服务,执行以下命令:
sudo systemctl enable mysqld # 开机自动启动
sudo systemctl start mysqld # 立即启动服务
对于PostgreSQL服务,替换为postgresql即可。
服务状态监控
通过以下命令查看服务状态(确保服务正常运行):
sudo systemctl status mysqld # MySQL状态
sudo systemctl status postgresql # PostgreSQL状态
若服务异常,日志文件(/var/log/mysqld.log或/var/log/postgresql/*.log)可帮助排查问题。
通过定期检查服务状态与备份结果,触发报警通知运维人员。
服务状态监控脚本
创建/usr/local/bin/check_service.sh,检查MySQL服务是否运行:
#!/bin/bash
SERVICE="mysqld"
STATUS=$(systemctl is-active $SERVICE)
if [ "$STATUS" != "active" ]; then
echo "Service $SERVICE is not running!" | mail -s "Database Service Alert" admin@example.com
# 或使用钉钉机器人(需替换为实际Webhook URL)
# curl -X POST -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": {"content": "Service $SERVICE is not running!"}}' https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN
fi
赋予执行权限:chmod +x /usr/local/bin/check_service.sh。
设置定时检查
通过cron每小时检查一次:
0 * * * * /usr/local/bin/check_service.sh
备份失败报警
在备份脚本(backup_sql.sh)中,若备份失败则触发邮件通知(已在脚本中添加日志记录,可通过监控日志文件实现报警)。
若有多台CentOS服务器,可使用Ansible自动化工具批量执行上述操作(备份、服务管理、监控)。
安装Ansible
在控制节点(管理服务器)上安装Ansible:
sudo yum install ansible -y
配置Inventory文件
编辑/etc/ansible/hosts,添加目标服务器IP:
[db_servers]
192.168.1.101
192.168.1.102
编写Playbook
创建db_automation.yml,定义备份与服务管理任务:
- hosts: db_servers
become: yes
tasks:
- name: Ensure backup directory exists
file:
path: /data/db_backup
state: directory
mode: 0755
- name: Execute backup script
command: /usr/local/bin/backup_sql.sh
args:
chdir: /usr/local/bin
- name: Enable and start MySQL service
service:
name: mysqld
enabled: yes
state: started
执行Playbook
运行以下命令批量执行任务:
ansible-playbook db_automation.yml
通过以上步骤,可实现CentOS环境下SQLAdmin的自动化备份、服务管理、监控报警,提升运维效率并降低人为失误风险。