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的自動化備份、服務管理、監控報警,提升運維效率并降低人為失誤風險。