如何使用 Ansible 安装 MySQL 插件?

如何使用 Ansible 安装 MySQL 插件?

到目前为止,我们一直在使用Geerlingguy Ansible 角色适用于我们所有的数据库部署,但现在我正在为一个新项目扩展它的使用,似乎不支持安装插件。我需要在 MySQL 中以某种方式执行的命令是

INSTALL PLUGIN group_replication SONAME 'group_replication.so';

我怀疑考虑收集事实并使用 shell 模块直接执行命令是否是个好主意,但到目前为止我还没有看到其他选择。还有什么相关的东西我还没发现吗?提前致谢。

答案1

我认为你可以用安装插件行并使用 MySQLAnsible mysql_db 模块的导入功能来运行它。

这可能比使用 shell 更好。

- name: Import sql similar to mysql -u <username> -p <password> < file.sql
  mysql_db:
    state: import
    name: DATABASE-NAME
    target: /path/to/import/file.sql

答案2

通过获取丢失的 group_replication.so 文件(我从 MySQL 社区版获得它),然后使用这两个 Ansible 任务配置和启用它来解决:

- name: Provision the MySQL group_replication plugin
  copy:
    src: group_replication.so
    dest: /usr/lib/mysql/plugin/group_replication.so
    mode: 0644

- name: Install MySQL plugin group_replication
  shell: >
         mysql -u root -e "SHOW PLUGINS\G" | grep -q group_replication
         && echo -n FOUND
         || mysql -u root -e "INSTALL PLUGIN group_replication SONAME 'group_replication.so';"
  register: plugin_state
  changed_when: plugin_state.stdout != 'FOUND'

我将插件本身放在本地文件/文件夹下,以便 Ansible 可以找到。

相关内容