在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装

要在 CentOS 7 下使用 Ansible Playbook 实现 MySQL 8.0.34 的二进制安装,需要先下载 MySQL 8.0.34 的二进制包,并将其上传至目标服务器。

以下是基于二进制包安装的一个简化示例 Playbook:

yaml 复制代码
---
# mysql8_binary_install_playbook.yaml

- name: Install MySQL 8.0.34 Binary on CentOS 7
  hosts: db_servers # 更改为主机清单中对应安装MySQL的主机群组名称
  gather_facts: yes
  become: yes

  vars:
    mysql_version: 8.0.34
    mysql_archive_name: mysql-8.0.34-linux-glibc2.12-x86_64.tar.gz
    mysql_download_url: "https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-{mysql_archive_name}"
    mysql_data_dir: /var/lib/mysql
    mysql_config_file: /etc/my.cnf
    mysql_root_password: "your_strong_password"

  tasks:

  - name: Download MySQL 8.0.34 binary archive
    get_url:
      url: "{{ mysql_download_url.format(mysql_archive_name=mysql_archive_name) }}"
      dest: /usr/local/src/
      mode: 0644

  - name: Extract the MySQL binary archive
    unarchive:
      src: "/usr/local/src/{{ mysql_archive_name }}"
      dest: /usr/local/
      remote_src: yes
      creates: /usr/local/mysql/

  - name: Create MySQL data directory if it does not exist
    file:
      path: "{{ mysql_data_dir }}"
      state: directory
      owner: mysql
      group: mysql
      mode: 0750

  - name: Configure MySQL settings in my.cnf
    lineinfile:
      path: "{{ mysql_config_file }}"
      regexp: '^lower_case_table_names'
      line: 'lower_case_table_names=1'
      backup: yes

  - name: Initialize MySQL data directory
    command: >
      /usr/local/mysql/bin/mysqld --initialize-insecure
      --basedir=/usr/local/mysql
      --datadir={{ mysql_data_dir }}
    args:
      creates: "{{ mysql_data_dir }}/ibdata1"

  - name: Start MySQL service
    shell: |
      cd /usr/local/mysql
      ./bin/mysqld_safe &
    async: 30
    poll: 0

  - name: Wait for MySQL to be ready
    wait_for:
      port: 3306
      delay: 30
      timeout: 60

  - name: Set MySQL root password
    mysql_user:
      name: root
      host: localhost
      password: "{{ mysql_root_password }}"
      check_password_policy: no
      login_unix_socket: /var/run/mysqld/mysqld.sock
      update_password: always
      state: present

  # 您还可以进一步执行其他安全配置,比如删除匿名用户、禁用远程 root 登录等
  # 这些通常可以通过 mysql_secure_installation 脚本来完成,但在 Ansible 中需要转换为对应的 SQL 命令

注意:

  • 确保在实际场景中替换 mysql_download_url 为实际有效的 MySQL 8.0.34 二进制包下载链接。
  • 使用 --initialize-insecure 参数初始化数据目录时不设置初始密码,你将在后续步骤中设置 mysql_root_password
  • 启动 MySQL 服务的方式在这里采用的是后台运行,实际生产环境中建议改为使用 systemd 单元文件进行管理。
  • 需要预先确保所需的所有依赖库都已安装。

由于二进制安装相比 RPM 包安装更复杂,涉及到的数据目录初始化、系统用户创建与权限设置等都需要手动或通过脚本完成。上述 playbook 是一个基本示例,具体实施时可能需要根据实际情况调整和完善。

相关推荐
小黄人软件几秒前
20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
数据库·sql·mysql
张声录15 分钟前
【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据
数据库·chrome·etcd
无为之士11 分钟前
Linux自动备份Mysql数据库
linux·数据库·mysql
小汤猿人类24 分钟前
open Feign 连接池(性能提升)
数据库
岑梓铭28 分钟前
(CentOs系统虚拟机)Standalone模式下安装部署“基于Python编写”的Spark框架
linux·python·spark·centos
阳冬园1 小时前
mysql数据库 主从同步
数据库·主从同步
XiaoH2331 小时前
培训机构Day15
sql·mysql
ThisIsClark1 小时前
【后端面试总结】MySQL主从复制逻辑的技术介绍
mysql·面试·职场和发展
Mr.132 小时前
数据库的三范式是什么?
数据库
Cachel wood2 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架