首页主机资讯如何在Ubuntu上实现MariaDB自动化运维

如何在Ubuntu上实现MariaDB自动化运维

时间2025-10-16 22:24:04发布访客分类主机资讯浏览1286
导读:在Ubuntu上实现MariaDB自动化运维的完整方案 一、前置准备:系统与工具安装 在开始自动化运维前,需确保Ubuntu系统已完成基础配置,并安装必要的自动化工具。首先更新系统软件包列表: sudo apt update &&a...

在Ubuntu上实现MariaDB自动化运维的完整方案

一、前置准备:系统与工具安装

在开始自动化运维前,需确保Ubuntu系统已完成基础配置,并安装必要的自动化工具。首先更新系统软件包列表:

sudo apt update &
    &
     sudo apt upgrade -y

安装常用工具(如wgetcurlunzip)及数据库客户端:

sudo apt install -y wget curl unzip mysql-client

二、自动化部署:Ansible实现批量配置

使用Ansible实现MariaDB的一键部署配置标准化,避免手动操作的错误与不一致性。

  1. 安装Ansible
    sudo apt install -y ansible
    
  2. 创建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
    
  3. 运行Playbook
    通过inventory文件(如hosts.ini)指定目标服务器,执行自动化部署:
    ansible-playbook -i hosts.ini mariadb_setup.yml
    

三、自动备份:Shell脚本+Cron定时任务

定期备份是数据安全的核心,通过Shell脚本封装mysqldump命令,并用Cron调度执行。

  1. 编写备份脚本
    新建/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
    
  2. 配置Cron定时任务
    编辑当前用户的Cron表(crontab -e),添加每日凌晨2点执行的备份任务:
    0 2 * * * /usr/local/bin/mariadb_backup.sh
    

四、监控与告警:Prometheus+Grafana可视化

通过Prometheus采集MariaDB性能指标,Grafana实现可视化,并设置阈值告警(如CPU使用率> 80%、连接数超标)。

  1. 安装Prometheus
    下载并安装Prometheus(参考官方文档),配置prometheus.yml添加MariaDB exporter目标:
    scrape_configs:
      - job_name: 'mariadb'
        static_configs:
          - targets: ['localhost:9104']  # MariaDB exporter默认端口
    
  2. 安装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
  3. 安装Grafana并配置告警
    安装Grafana(sudo apt install -y grafana),导入MariaDB监控Dashboard(如ID:11074),设置告警规则(如“当mysql_global_status_threads_connected> 100时触发邮件告警”)。

五、服务状态管理:Shell脚本+Systemd

自动化监控MariaDB服务状态,异常时自动重启,确保服务高可用。

  1. 编写服务监控脚本
    新建/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
    
  2. 配置Cron定时任务
    每5分钟检查一次服务状态:
    */5 * * * * /usr/local/bin/mariadb_monitor.sh
    

六、安全与优化:自动化加固与性能调优

  1. 自动化安全加固
    使用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任务)
  2. 性能优化
    使用mysqltuner工具分析数据库性能,生成优化建议(如调整innodb_buffer_pool_sizemax_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
如何升级Ubuntu上的Kubernetes 如何通过getconf检查Debian系统配置

游客 回复需填写必要信息