Skip to content

Instantly share code, notes, and snippets.

@loranger
Created February 10, 2015 13:52
Show Gist options
  • Save loranger/e2ddaa31e6a6faa0b956 to your computer and use it in GitHub Desktop.
Save loranger/e2ddaa31e6a6faa0b956 to your computer and use it in GitHub Desktop.
Ansible mysql slave playbook sample
- name: generate server-id
shell: hostname -I | sed -e 's/ \+\([a-z0-9]\+\:\)\+[a-z0-9]\+//' | sed -e 's/ /\n/' | grep -v '^$' | tail -1 | awk -F. '{print $3 * 256 + $4}'
register: mysql_server_id
- name: check replication slave status
mysql_replication: mode=getslave
ignore_errors: true
register: slave
- name: get master replication status
mysql_replication: mode=getmaster login_user={{ mysql_users.phoenixcorp.user }} login_password={{ mysql_users.phoenixcorp.password }}
delegate_to: "{{ groups['mysql-master'][0] }}"
register: replication
when: slave|failed
- name: define master in slave
mysql_replication: mode=changemaster master_host={{ groups['mysql-master'][0] }} master_log_file={{ replication.File }} master_log_pos={{ replication.Position }} master_user={{ mysql_users.slave.user }} master_password={{ mysql_users.slave.password }}
when: slave|failed
- name: start slave
mysql_replication: mode=startslave
- name: mysql backup script symlink
cron: name="database backup" hour={{ item.0 }} minute={{ item.0 }} user="root" job="/home/live/scripts/cron/backup_db.sh >> /var/log/backup.log" cron_file=backup_database
when: "'{{ item.1 }}' == '{{ inventory_hostname }}'"
with_indexed_items: groups['mysql-slave']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment