Ubuntu MariaDB自动化运维落地方案
一 自动化部署与配置标准化
---
- hosts: all
become: yes
vars:
mysql_root_password: "YourSecureRootPassword"
tasks:
- name: Install MariaDB Server
apt:
name: mariadb-server
state: present
update_cache: yes
- name: Secure MariaDB Installation
command: >
mysql_secure_installation
--set-root-password="{{ mysql_root_password }}"
--remove-anonymous-users
--disable-remote-root
--remove-test-database
--silent
- name: Enable and start MariaDB
service:
name: mariadb
enabled: yes
state: started
ansible-playbook -i hosts.ini mariadb_setup.yml。如需扩展,可使用社区 Role(如geerlingguy.mysql)覆盖用户、权限、安全基线等。二 备份恢复与保留策略
#!/bin/bash
BACKUP_DIR="/var/backups/mariadb"
DATE=$(date +%F)
LOG_FILE="/var/log/mariadb_backup.log"
mkdir -p "$BACKUP_DIR"
mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --all-databases \
--single-transaction --quick --lock-tables=false | gzip > "$BACKUP_DIR/full_backup_$DATE.sql.gz"
find "$BACKUP_DIR" -name "full_backup_*.sql.gz" -mtime +7 -delete
echo "[$(date)] Backup completed: $BACKUP_DIR/full_backup_$DATE.sql.gz" >> "$LOG_FILE"
chmod +x /usr/local/bin/mariadb_backup.sh;Cron 示例:0 2 * * * /usr/local/bin/mariadb_backup.sh >> /var/log/mariadb_backup.log 2>&1。三 监控告警与可视化
[client]
user=prometheus
password=yourpassword
scrape_configs:
- job_name: 'mariadb'
static_configs:
- targets: ['localhost:9104']
四 服务自愈与日常巡检
#!/bin/bash
SERVICE="mariadb"
LOG_FILE="/var/log/mariadb_monitor.log"
if ! systemctl is-active --quiet "$SERVICE"; then
echo "[$(date)] $SERVICE is not running. Restarting..." >> "$LOG_FILE"
systemctl restart "$SERVICE" && \
echo "[$(date)] $SERVICE restarted." >> "$LOG_FILE" || \
echo "[$(date)] Restart failed." >> "$LOG_FILE"
fi
*/5 * * * * /usr/local/bin/mariadb_monitor.sh >> /var/log/mariadb_monitor.log 2>&1。#!/bin/bash
DB_SERVER="localhost"
DB_USER="root"
DB_PASS="your_password"
EMAIL="admin@example.com"
if ! mysqladmin -h "$DB_SERVER" -u "$DB_USER" -p"$DB_PASS" ping &>/dev/null; then
echo "MariaDB is down on $DB_SERVER!" | mail -s "DB Down Alert" "$EMAIL"
fi
五 安全加固与性能优化及云原生扩展