记一次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