lechuckroh.mariadb

Ansible 角色 mariadb

一个用于管理 MariaDB 的 Ansible 角色。

  • 从官方 MariaDB 仓库安装 MariaDB 软件包。
  • 设置/重置 root 密码。
  • 删除 test 数据库。
  • 删除匿名用户。
  • 创建用户和数据库。
  • 管理配置文件 my.cnf
  • 复制功能

固定设置:

  • 存储引擎:InnoDB

测试过的系统:

  • CentOS 7.4
  • Ubuntu 16.04 (Xenial)
  • Ubuntu 18.04 (Bionic)
  • MariaDB 10.3

需求

没有特别要求

角色变量

变量 默认 说明
mariadb_bind_address '127.0.0.1' 监听的网络接口 IP 地址。 '0.0.0.0' 表示所有接口。
mariadb_binlog_format 'ROW' 二进制日志格式(STATEMENTROWMIXED
mariadb_charset 'utf8'
mariadb_collation 'utf8_general_ci'
mariadb_databases [] 要添加的数据库。参见 mysql_db
mariadb_enabled_on_startup true 'true':在启动时启用 MariaDB。
mariadb_expire_logs_days 10 自动删除二进制日志文件前的天数。
mariadb_group_concat_max_len 1024
mariadb_innodb_buffer_pool_size 256M
mariadb_innodb_file_per_table ON
mariadb_innodb_flush_log_at_trx_commit 1
mariadb_innodb_log_buffer_size 8M
mariadb_innodb_log_file_size 64M
mariadb_innodb_lock_wait_timeout 50
mariadb_join_buffer_size 256K
mariadb_key_buffer_size 256M
mariadb_lower_case_table_names 1 0: 区分大小写(Linux),1: 存为小写,不区分大小写(Windows),2: 按声明存储,比较时小写(OSX)
mariadb_max_allowed_packet 64M
mariadb_max_binlog_size 100M 最大二进制日志大小(4096 字节 ~ 1GB)
mariadb_max_connections 151
mariadb_max_heap_table_size 16M
mariadb_myisam_sort_buffer_size 64M
mariadb_mysqldump_max_allowed_packet 64M
mariadb_overwrite_global_mycnf true true:每次运行该角色时应覆盖全局 my.cnf
mariadb_port 3306 端口号
mariadb_read_buffer_size 1M
mariadb_read_rnd_buffer_size 4M
mariadb_replication_master '' 复制主服务器
mariadb_replication_master_host '' 复制主服务器主机(默认:hostvars[mariadb_replication_master]['ansible_host']
mariadb_replication_role '' 复制角色(masterslave
mariadb_replication_user [] 复制用户(需提供 namepassword
mariadb_root_password 'root' root 密码
mariadb_root_remote no yes:启用远程 root 登录
mariadb_root_remote_host '%' 启用远程 root 登录的主机
mariadb_server_id '' 服务器 ID(用于复制)
mariadb_skip_name_resolve 1
mariadb_sort_buffer_size 1M
mariadb_sql_mode NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO
mariadb_table_open_cache 256
mariadb_thread_cache_size 8
mariadb_tmp_table_size 16M
mariadb_users [] 要添加的用户
mariadb_version '10.3' 要安装的 MariaDB 版本
mariadb_wait_timeout 28800

依赖

没有依赖项

示例剧本

创建数据库和用户

---
- name: example
  hosts: all
  become: true
  vars:
    mariadb_bind_address: '0.0.0.0'
    mariadb_root_password: 'root'
    mariadb_root_remote: yes
    mariadb_databases:
    - name: dev
    mariadb_users:
    - name: dev
      password: 'devdev'
      priv: "dev.*:ALL"
      host: "%"
  roles:
  - lechuckroh.mariadb     

复制

主机清单

mariadb-master ansible_host=192.168.50.11 ansible_user=vagrant
mariadb-slave ansible_host=192.168.50.12 ansible_user=vagrant

主服务器剧本

---
- name: 在主服务器上安装 mysql
  hosts: mariadb-master
  become: true
  vars:
    mariadb_bind_address: '0.0.0.0'
    mariadb_root_password: 'root'
    mariadb_databases:
    - name: dev1
    - name: dev2
      replicate: yes
    - name: dev3
      replicate: no
    mariadb_users:
    - name: dev
      password: 'devdev'
      priv: "dev*.*:ALL"
      host: "%"

    mariadb_server_id: 1
    mariadb_max_binlog_size: 100M
    mariadb_binlog_format: ROW
    mariadb_expire_logs_days: 10
    mariadb_replication_role: master
    mariadb_replication_master: mariadb-master
    mariadb_replication_user:
      name: repl
      password: repl

  tasks:
  - include_role:
      name: lechuckroh.mariadb

从服务器剧本

---
- name: 在从服务器上安装 mysql
  hosts: mariadb-slave
  become: true
  vars:
    mariadb_bind_address: '0.0.0.0'
    mariadb_root_password: 'root'
    mariadb_databases:
    - name: dev1
    - name: dev2

    mariadb_server_id: 2
    mariadb_replication_role: master
    mariadb_replication_master: mariadb-master
    mariadb_replication_user:
      name: repl
      password: repl

  tasks:
  - include_role:
      name: lechuckroh.mariadb

许可

MIT

关于项目

Manage MariaDB

安装
ansible-galaxy install lechuckroh.mariadb
许可证
mit
下载
80
拥有者