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

Ubuntu MariaDB如何实现自动化运维

时间2025-12-03 18:05:03发布访客分类主机资讯浏览1337
导读: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
  • 物理/热备(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或配置文件的权限控制。
  • 性能优化
    • 使用mysqltunerPercona Toolkit定期体检,结合建议调整如innodb_buffer_pool_sizemax_connections等关键参数,变更后滚动重启生效。
  • 云原生场景
    • Kubernetes 中采用MariaDB Operator(CRD 声明式管理),支持高可用(如半同步/ Galera)、定时/备份恢复(含 PITR)、用户与权限、SQL 脚本调度,并内置 Prometheus 指标,便于与现有监控体系集成。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu MariaDB如何实现自动化运维
本文地址: https://pptw.com/jishu/762579.html
k8s集群Ubuntu管理技巧 ubuntu k8s版本怎么选

游客 回复需填写必要信息