在Ubuntu上实现MariaDB自动化运维的完整方案
在开始自动化运维前,需确保Ubuntu系统已完成基础配置,并安装必要的自动化工具。首先更新系统软件包列表:
sudo apt update && sudo apt upgrade -y
安装常用工具(如wget、curl、unzip)及数据库客户端:
sudo apt install -y wget curl unzip mysql-client
使用Ansible实现MariaDB的一键部署与配置标准化,避免手动操作的错误与不一致性。
sudo apt install -y ansible
mariadb_setup.yml文件,定义安装、配置、启动等步骤(支持变量驱动,如mysql_root_password):---
- 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 MariaDB Service on Boot
service:
name: mariadb
enabled: yes
- name: Start MariaDB Service
service:
name: mariadb
state: started
hosts.ini)指定目标服务器,执行自动化部署:ansible-playbook -i hosts.ini mariadb_setup.yml
定期备份是数据安全的核心,通过Shell脚本封装mysqldump命令,并用Cron调度执行。
/usr/local/bin/mariadb_backup.sh,实现全量备份、压缩及过期清理:#!/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"
# 删除7天前的备份(保留最近7天)
find "$BACKUP_DIR" -name "full_backup_*.sql.gz" -mtime +7 -exec rm -f {} \;
# 记录日志
echo "[$(date)] Backup completed: $BACKUP_DIR/full_backup_$DATE.sql.gz" >> "$LOG_FILE"
赋予脚本可执行权限:chmod +x /usr/local/bin/mariadb_backup.sh
crontab -e),添加每日凌晨2点执行的备份任务:0 2 * * * /usr/local/bin/mariadb_backup.sh
通过Prometheus采集MariaDB性能指标,Grafana实现可视化,并设置阈值告警(如CPU使用率>80%、连接数超标)。
prometheus.yml添加MariaDB exporter目标:scrape_configs:
- job_name: 'mariadb'
static_configs:
- targets: ['localhost:9104'] # MariaDB exporter默认端口
mysqld_exporter采集MariaDB指标(需提前配置Prometheus用户权限):wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.16.1/mysqld_exporter-0.16.1.linux-amd64.tar.gz
tar xvfz mysqld_exporter-*.tar.gz
cd mysqld_exporter-*
./mysqld_exporter --config.my-cnf=/etc/mysql/conf.d/prometheus.cnf &
(注:需创建/etc/mysql/conf.d/prometheus.cnf文件,配置Prometheus用户权限:[client] user=prometheus password=yourpassword)sudo apt install -y grafana),导入MariaDB监控Dashboard(如ID:11074),设置告警规则(如“当mysql_global_status_threads_connected>100时触发邮件告警”)。自动化监控MariaDB服务状态,异常时自动重启,确保服务高可用。
/usr/local/bin/mariadb_monitor.sh,检查服务是否运行,未运行则重启:#!/bin/bash
SERVICE="mariadb"
LOG_FILE="/var/log/mariadb_monitor.log"
# 检查服务状态
if ! systemctl is-active --quiet "$SERVICE"; then
echo "[$(date)] $SERVICE is not running. Attempting to restart..." >> "$LOG_FILE"
systemctl restart "$SERVICE"
if systemctl is-active --quiet "$SERVICE"; then
echo "[$(date)] $SERVICE restarted successfully." >> "$LOG_FILE"
else
echo "[$(date)] Failed to restart $SERVICE." >> "$LOG_FILE"
fi
else
echo "[$(date)] $SERVICE is running normally." >> "$LOG_FILE"
fi
赋予可执行权限:chmod +x /usr/local/bin/mariadb_monitor.sh
*/5 * * * * /usr/local/bin/mariadb_monitor.sh
geerlingguy.mysql)自动执行安全脚本,包括:
DELETE FROM mysql.user WHERE User='';REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');security任务)mysqltuner工具分析数据库性能,生成优化建议(如调整innodb_buffer_pool_size、max_connections):wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl --host localhost --user root --pass "{{ mysql_root_password }}"
根据建议修改/etc/mysql/mariadb.conf.d/50-server.cnf配置文件,重启服务生效:sudo systemctl restart mariadb
通过以上步骤,可实现MariaDB在Ubuntu上的全生命周期自动化运维,覆盖部署、备份、监控、服务管理及安全优化等环节,显著提升运维效率与系统可靠性。