如何在Ubuntu上实现MariaDB自动化运维
导读:在Ubuntu上实现MariaDB自动化运维的完整方案 一、前置准备:系统与工具安装 在开始自动化运维前,需确保Ubuntu系统已完成基础配置,并安装必要的自动化工具。首先更新系统软件包列表: sudo apt update &&a...
在Ubuntu上实现MariaDB自动化运维的完整方案
一、前置准备:系统与工具安装
在开始自动化运维前,需确保Ubuntu系统已完成基础配置,并安装必要的自动化工具。首先更新系统软件包列表:
sudo apt update &
&
sudo apt upgrade -y
安装常用工具(如wget
、curl
、unzip
)及数据库客户端:
sudo apt install -y wget curl unzip mysql-client
二、自动化部署:Ansible实现批量配置
使用Ansible实现MariaDB的一键部署与配置标准化,避免手动操作的错误与不一致性。
- 安装Ansible:
sudo apt install -y ansible
- 创建MariaDB Playbook:
新建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
- 运行Playbook:
通过inventory文件(如hosts.ini
)指定目标服务器,执行自动化部署:ansible-playbook -i hosts.ini mariadb_setup.yml
三、自动备份:Shell脚本+Cron定时任务
定期备份是数据安全的核心,通过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
- 配置Cron定时任务:
编辑当前用户的Cron表(crontab -e
),添加每日凌晨2点执行的备份任务:0 2 * * * /usr/local/bin/mariadb_backup.sh
四、监控与告警:Prometheus+Grafana可视化
通过Prometheus采集MariaDB性能指标,Grafana实现可视化,并设置阈值告警(如CPU使用率> 80%、连接数超标)。
- 安装Prometheus:
下载并安装Prometheus(参考官方文档),配置prometheus.yml
添加MariaDB exporter目标:scrape_configs: - job_name: 'mariadb' static_configs: - targets: ['localhost:9104'] # MariaDB exporter默认端口
- 安装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
) - 安装Grafana并配置告警:
安装Grafana(sudo apt install -y grafana
),导入MariaDB监控Dashboard(如ID:11074),设置告警规则(如“当mysql_global_status_threads_connected
> 100时触发邮件告警”)。
五、服务状态管理:Shell脚本+Systemd
自动化监控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
- 配置Cron定时任务:
每5分钟检查一次服务状态:*/5 * * * * /usr/local/bin/mariadb_monitor.sh
六、安全与优化:自动化加固与性能调优
- 自动化安全加固:
使用Ansible Role(如geerlingguy.mysql
)自动执行安全脚本,包括:- 删除匿名用户:
DELETE FROM mysql.user WHERE User='';
- 禁止远程root登录:
REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
- 更新root密码:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
(参考Ansible Role: MySQL的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上的全生命周期自动化运维,覆盖部署、备份、监控、服务管理及安全优化等环节,显著提升运维效率与系统可靠性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上实现MariaDB自动化运维
本文地址: https://pptw.com/jishu/728481.html