Ubuntu MariaDB如何实现自动化运维
导读:Ubuntu MariaDB自动化运维落地方案 一 自动化部署与配置标准化 使用Ansible批量安装与初始化,保证环境一致性与幂等性。 示例 Playbook(mariadb_setup.yml):--- - hosts: all...
Ubuntu MariaDB自动化运维落地方案
一 自动化部署与配置标准化
- 使用Ansible批量安装与初始化,保证环境一致性与幂等性。
- 示例 Playbook(mariadb_setup.yml):
--- - 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 - 执行方式:准备 inventory(如hosts.ini),运行:
ansible-playbook -i hosts.ini mariadb_setup.yml。如需扩展,可使用社区 Role(如geerlingguy.mysql)覆盖用户、权限、安全基线等。
二 备份恢复与保留策略
- 逻辑备份(轻量、跨平台):
- 备份脚本(/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" 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。
- 备份脚本(/usr/local/bin/mariadb_backup.sh):
- 物理/热备(InnoDB 一致性更好):
- 使用mariabackup执行全量/增量备份与准备(prepare),脚本化调度与保留策略管理;适合大数据量或要求快速恢复的场景。
三 监控告警与可视化
- 指标采集:部署mysqld_exporter(默认端口9104),创建 MariaDB 只读监控账号并配置连接文件(/etc/mysql/conf.d/prometheus.cnf):
[client] user=prometheus password=yourpassword - 配置 Prometheus(prometheus.yml):
scrape_configs: - job_name: 'mariadb' static_configs: - targets: ['localhost:9104'] - 可视化与告警:安装Grafana,导入 MariaDB 仪表盘(如 ID:11074),设置阈值告警(如连接数、慢查询、复制延迟等)。
四 服务自愈与日常巡检
- 自愈监控脚本(/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. 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。
- 定时检查:
- 可用性与进程巡检(Shell + 邮件):
#!/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 - 日志集中:将错误日志、慢查询日志接入ELK(Filebeat/Logstash/Elasticsearch/Kibana)便于审计与问题定位。
五 安全加固与性能优化及云原生扩展
- 安全与合规
- 自动化加固:删除匿名用户、限制远程 root、设置强口令策略、最小权限授权;可用 Ansible Role 标准化执行。
- 凭据管理:避免在脚本/Cron 中明文存放密码,优先使用环境变量、Ansible Vault或配置文件的权限控制。
- 性能优化
- 使用mysqltuner或Percona Toolkit定期体检,结合建议调整如innodb_buffer_pool_size、max_connections等关键参数,变更后滚动重启生效。
- 云原生场景
- 在 Kubernetes 中采用MariaDB Operator(CRD 声明式管理),支持高可用(如半同步/ Galera)、定时/备份恢复(含 PITR)、用户与权限、SQL 脚本调度,并内置 Prometheus 指标,便于与现有监控体系集成。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB如何实现自动化运维
本文地址: https://pptw.com/jishu/762579.html
