在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上的全生命周期自动化运维,覆盖部署、备份、监控、服务管理及安全优化等环节,显著提升运维效率与系统可靠性。