ansible-collections / community.mysql

MySQL Ansible Collection
https://galaxy.ansible.com/ui/repo/published/community/mysql/
Other
99 stars 87 forks source link

mysql_replication changemaster does not support GET_SOURCE_PUBLIC_KEY #165

Open ehudkaldor opened 3 years ago

ehudkaldor commented 3 years ago

in mysql 8.0, setting replication source on the replica requires the parameter GET_SOURCE_PUBLIC_KEY=1 so the replica will grab the pub key from the source. This parameter does not exist in the collection

ISSUE TYPE
COMPONENT NAME
ANSIBLE VERSION
ansible 2.9.10
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/var/lib/awx/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
CONFIGURATION
<empty>
OS / ENVIRONMENT

Ubuntu 20.04

STEPS TO REPRODUCE

see below

- mysql_replication:
    mode: changemaster
    master_host: "{{ primary_database }}"
    master_port: "{{ mysql_port }}"
    master_user: "{{ mysql_replication_user_name }}"
    master_password: "{{ mysql_replication_user_password }}"
    master_auto_position: 1
    get_master_public_key: 1
EXPECTED RESULTS

success

ACTUAL RESULTS

see below

Unsupported parameters for (mysql_replication) module: get_master_public_key Supported parameters include: ca_cert, client_cert, client_key, config_file, connect_timeout, login_host, login_password, login_port, login_unix_socket, login_user, master_auto_position, master_connect_retry, master_host, master_log_file, master_log_pos, master_password, master_port, master_ssl, master_ssl_ca, master_ssl_capath, master_ssl_cert, master_ssl_cipher, master_ssl_key, master_user, mode, relay_log_file, relay_log_pos"
Andersson007 commented 3 years ago

@ehudkaldor hi, thanks for reporting this! Would you like to add the feature yourself?

If no and anyone else wants to do it, please let us know by putting a comment here. We have a quick start guide which should help (or I could look but am not sure when).

Thanks

meersjo commented 7 months ago

I think, three years past, that it's clear OP isn't going to :-p

I'm running into this as well; I'll have a look at the quickstart guide but I've never worked on ansible modules before, so unless it's pretty straightforward I don't think I'll have the time either.

I feel this is a pretty important bit, however, as it makes community.mysql.mysql_replication completely unusable on MySQL 8. Well, maybe not entirely, I think I'm just going to add a manual change master between the changemaster and startreplica steps, but that really shouldn't even be necessary.

Andersson007 commented 7 months ago

@meersjo thanks for the comment! I've just put a call for volunteers in our MySQL matrix channel, hope there'll be someone interesting in taking a closer look at the issue

meersjo commented 7 months ago

I can confirm in the mean time that the workaround is indeed just an ansible.builtin.command that calls mysql -e 'change replica source to get_source_public_key=1;' .

I'd share the very simple task for others running into this, but I'm running containerized with aliases into the container instead of a client package, and calling bash aliases from ansible is a whole different can of worms :smiling_face_with_tear: