记一次ansible中mysql_replication模块的使用问题

1.场景

使用ansible自动部署mysql主从集群,使用mysql_replication模块,需要在mysql-slave上连接mysql-master以获得master的信息(show master status)

1. 问题现象


但经过手动测试,从mysql-slave上面是可以正常连接到mysql-master上的(使用repl用户),如下图:

3.ansible play中的配置信息

4.问题排查关键点

/usr/lib/python2.7/site-packages/ansible/modules/database/mysql/mysql_replication.py这个模块文件中有如下引用:

再通过查看/usr/lib/python2.7/site-packages/ansible/module_utils/mysql.py文件,发现如下代码:

从这里获得启发,mysql_replication中的login_unix_socket和login_host有可能不能同时使用,果然在注释掉login_unix_socket后,问题得到解决,注释后的配置如下:

5.结论

mysql_replication中login_host与login_unix_socket同时存在时,login_unix_socket优先级最高,连接的host就会是localhost,而不论login_host是任何值

ps:对于这个问题,官方文档并没有特别说明,如下:
https://docs.ansible.com/ansible/latest/collections/community/mysql/mysql_replication_module.html#ansible-collections-community-mysql-mysql-replication-module

posted @ 2021-03-26 16:10  wangqingyong  阅读(758)  评论(0编辑  收藏  举报