cdelgehier.XtraDB-Cluster

构建状态

Ansible 角色 ansible-role-XtraDB-Cluster

这是一个用于设置 Percona XtraDB 集群的 Ansible 角色。该角色的主要职责包括:

  • 安装软件包
  • 确保连接安全
  • 启动集群

要求

没有特别的要求

角色变量

基本设置

变量 默认值 备注 (类型)
xtradb_bind_address - 监听 IP
xtradb_bind_interface eth0 集群使用的网络接口
xtradb_cluster_name foo 集群名称
xtradb_configured xtradb_datadir/configured 用于幂等性的标识
xtradb_datadir /var/lib/mysql 数据目录
xtradb_master_node groups[xtradb_nodes_group][0] 选择的主节点
xtradb_mysql_user mysql 运行 Galera 的用户
xtradb_nodes_group xtradb-cluster-nodes 集群将安装的节点组
xtradb_root_password root root 用户的密码
xtradb_root_user root root 用户
xtradb_secured xtradb_datadir/secured 用于幂等性的标识
xtradb_service mysql Linux 服务名称
xtradb_sst_password sstpassword xtradb_sst_user 的密码
xtradb_sst_user sstuser 用于状态快照传输的用户
xtradb_swappiness 0 “交换性” 值。系统默认值是 60。0 表示避免交换进程。
xtradb_databases [] 要添加的数据库名称列表
xtradb_users [] 要添加的用户字典列表,详见下文。
xtradb_version 57 XtraDB 的软件包版本

MySQL 部分

有关这些值的更多信息,请查看 MariaDB 服务器系统变量文档

变量 默认值 备注 (类型)
xtradb_binlog_format ROW 二进制日志格式
xtradb_character_set_server utf 字符集
xtradb_collation_server utf8_general_ci 字符排列
xtradb_default_storage_engine InnoDB 设置存储引擎
xtradb_innodb_autoinc_lock_mode 2 innodb_autoinc_lock_mode 配置参数有三个可能的设置:0、1 或 2,分别对应 “传统”、“连续” 或 “交错” 锁模式
xtradb_innodb_buffer_pool_instances 要启用多个缓冲池实例,将 innodb_buffer_pool_instances 配置选项设置为大于 1 的值(默认是 8),最高可至 64。此选项仅在您将 innodb_buffer_pool_size 设置为 1GB 或更大时生效。您指定的总大小在所有缓冲池之间平均分配
xtradb_innodb_buffer_pool_size 一个合适的值是可用内存的 70%-80%。
xtradb_innodb_file_format
xtradb_innodb_file_format_check
xtradb_innodb_file_per_table
xtradb_innodb_flush_log_at_trx_commit 当 innodb_flush_log_at_trx_commit 设置为 1 时,日志缓冲区会在每个事务提交时刷新到磁盘的日志文件,并提供最大的数据完整性,但也会有性能影响。设置为 2 意味着日志缓冲区在每个事务提交时刷新到操作系统文件缓存。
xtradb_innodb_log_buffer_size Innodb 将已更改的数据记录写入其日志缓冲区,缓冲区保存在内存中,这样可以避免在事务提交之前将变更日志写入磁盘。4 MB – 8 MB 是一个不错的起始值,除非您进行很多大块的操作
xtradb_innodb_log_file_size 默认值在 MySQL 5.6 中从 5 MB(旧默认值)更改为 50 MB,但这对于许多工作负载而言仍然太小
xtradb_innodb_file_per_table on 从 MySQL 5.6 开始,innodb_file_per_table 默认打开。这通常推荐使用,因为它避免了巨大的共享表空间,并允许在您删除或截断表时回收空间。单独的表空间也有利于 Xtrabackup 部分备份方案
xtradb_innodb_strict_mode on
xtradb_join_buffer_size
xtradb_log_warnings
xtradb_log_warnings
xtradb_long_query_time
xtradb_max_allowed_packet
xtradb_max_connections 4096
xtradb_max_heap_table_size
xtradb_max_user_connections
xtradb_pxc_strict_mode ENFORCING PXC 严格模式旨在避免在 Percona XtraDB Cluster 中使用实验性和不支持的功能
xtradb_query_cache_size
xtradb_read_buffer_size
xtradb_read_rnd_buffer_size
xtradb_skip_name_resolve 1 仅使用 IP 地址。设置为 0 以解析主机名。
xtradb_slow_query_log 0 设置为 1 启用慢查询日志。
xtradb_socket
xtradb_sort_buffer_size
xtradb_table_definition_cache
xtradb_table_open_cache
xtradb_table_open_cache_instances
xtradb_tmp_table_size

添加数据库

数据库是通过一个包含 name:(必需)和 init_script:(可选)字段的字典来定义的。 初始化脚本是一个 SQL 文件,在创建数据库时执行,以初始化表并填充值。

xtradb_databases:
  - name: keystone
  - name: mydb
    init_script: files/init_mydb.sql

添加用户

用户通过一个包含 name:password:priv:,可选地还有 host: 的字典来定义。 密码为明文,priv: 指定了该用户的权限,如 Ansible 文档 中所描述。

示例:

xtradb_users:
  - name: keystone
    password: KEYSTONE_DBPASS
    priv: 'keystone.*:SUPER'

  - name: cdelgehier
    password: yolo
    priv: 'mydb.*:ALL'
    host: '192.168.1.%'

依赖项

没有依赖项。

示例播放剧本

- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_user: sstuser
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo

      xtradb_bind_address: "{{ ansible_default_ipv4.address }}"
      xtradb_wsrep_cluster_address: "gcomm://{{ groups['db'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | join(',') }}"
      xtradb_master_node: "{{ hostvars[ groups['db'][0] ].ansible_default_ipv4.address }}"
- hosts: db
  gather_facts: true
  become: true
  roles:
    - role: ansible-role-XtraDB-Cluster
      xtradb_cluster_name: "prod-customer"
      xtradb_sst_password: s3cr3t
      xtradb_root_password: yolo
      xtradb_nodes_group: "db"
      xtradb_bind_interface: eth0

      xtradb_databases:
        - name: keystone
      xtradb_users:
        - name: keystone
          password: PASSWD
          priv: 'keystone.*:GRANT,ALL'

      xtradb_innodb_buffer_pool_instances: 8
      xtradb_innodb_buffer_pool_size: "384M"
      xtradb_innodb_file_format: "Barracuda"
      xtradb_innodb_file_format_check: "1"
      xtradb_innodb_file_per_table: "on"
      xtradb_innodb_flush_log_at_trx_commit: "1"
      xtradb_innodb_log_buffer_size: "16M"
      xtradb_innodb_log_file_size: "50M"
      xtradb_innodb_strict_mode: "on"
      xtradb_join_buffer_size: "128K"
      xtradb_log_warnings: "1"
      xtradb_long_query_time: "10"
      xtradb_max_allowed_packet: "16M"
      xtradb_max_connections: "505"
      xtradb_max_heap_table_size: "16M"
      xtradb_max_user_connections: "500"
      xtradb_query_cache_size: "0"   # 禁用
      xtradb_read_buffer_size: "128K"
      xtradb_read_rnd_buffer_size: "256k"
      xtradb_skip_name_resolve: "1"
      xtradb_slow_query_log: "1"
      xtradb_sort_buffer_size: "2M"
      xtradb_table_definition_cache: "1400"
      xtradb_table_open_cache: "2000"
      xtradb_table_open_cache_instances: "8"
      xtradb_tmp_table_size: "16M"
[db]
node1 ansible_host=192.168.1.173
node2 ansible_host=192.168.1.156
node3 ansible_host=192.168.1.154

测试

可用两种类型的测试环境。一种由 Vagrant 提供支持,另一种则由 Docker 提供支持。后者适合在 Travis-CI 上运行自动化测试。测试代码保存在单独的孤立分支中。有关如何在您自己的计算机上设置这些测试环境的详细信息,请查看各自分支中的 README 文件:

删除

要删除所有痕迹并开始新的安装

ansible  db -m shell -a 'rm -rf /var/lib/mysql /var/log/mysqld.log /etc/percona-xtradb-cluster.conf.d ; yum remove Percona* -y'

贡献

问题、功能请求、想法都非常欢迎,可以在问题部分提交。

拉取请求也非常欢迎。提交 PR 的最佳方式是先创建此 Github 项目的分叉,然后为建议的更改创建一个主题分支并将该分支推送到您的分叉。之后,Github 可以轻松地基于该分支创建一个 PR。

许可证

2 条款 BSD 许可证,请参见 LICENSE.md

贡献者

关于项目

Install and configure a Cluster Mysql

安装
ansible-galaxy install cdelgehier.XtraDB-Cluster
许可证
other
下载
544