f704a78029
blueprint database-backup-recovery Introduce a new option, mariadb_backup, which takes a backup of all databases hosted in MariaDB. Backups are performed using XtraBackup, the output of which is saved to a dedicated Docker volume on the target host (which defaults to the first node in the MariaDB cluster). It supports either full (the default) or incremental backups. Change-Id: Ied224c0d19b8734aa72092aaddd530155999dbc3
112 lines
3.2 KiB
YAML
112 lines
3.2 KiB
YAML
---
|
|
- name: Ensuring config directories exist
|
|
file:
|
|
path: "{{ node_config_directory }}/{{ item.key }}"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
become: true
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ mariadb_services }}"
|
|
|
|
- name: Ensuring database backup config directory exists
|
|
file:
|
|
path: "{{ node_config_directory }}xtrabackup"
|
|
state: "directory"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0770"
|
|
become: true
|
|
when:
|
|
- enable_xtrabackup | bool
|
|
- inventory_hostname == mariadb_backup_host
|
|
|
|
- name: Copying over my.cnf for xtrabackup
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/backup.my.cnf.j2"
|
|
- "{{ node_custom_config }}/backup.my.cnf"
|
|
- "{{ node_custom_config }}/mariadb/{{ inventory_hostname }}/backup.my.cnf"
|
|
dest: "{{ node_config_directory }}xtrabackup/my.cnf"
|
|
owner: "{{ config_owner_user }}"
|
|
group: "{{ config_owner_group }}"
|
|
mode: "0660"
|
|
become: true
|
|
when:
|
|
- enable_xtrabackup | bool
|
|
- inventory_hostname == mariadb_backup_host
|
|
|
|
- name: Copying over config.json files for services
|
|
vars:
|
|
service_name: "mariadb"
|
|
service: "{{ mariadb_services[service_name] }}"
|
|
template:
|
|
src: "{{ service_name }}.json.j2"
|
|
dest: "{{ node_config_directory }}/{{ service_name }}/config.json"
|
|
mode: "0660"
|
|
become: true
|
|
register: mariadb_config_json
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- restart slave mariadb
|
|
- restart master mariadb
|
|
|
|
- name: Copying over galera.cnf
|
|
vars:
|
|
service_name: "mariadb"
|
|
service: "{{ mariadb_services[service_name] }}"
|
|
merge_configs:
|
|
sources:
|
|
- "{{ role_path }}/templates/galera.cnf.j2"
|
|
- "{{ node_custom_config }}/galera.cnf"
|
|
- "{{ node_custom_config }}/mariadb/{{ inventory_hostname }}/galera.cnf"
|
|
dest: "{{ node_config_directory }}/{{ service_name }}/galera.cnf"
|
|
mode: "0660"
|
|
become: true
|
|
register: mariadb_galera_conf
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- restart slave mariadb
|
|
- restart master mariadb
|
|
|
|
- name: Copying over wsrep-notify.sh
|
|
template:
|
|
src: "{{ role_path }}/templates/wsrep-notify.sh.j2"
|
|
dest: "{{ node_config_directory }}/{{ item.key }}/wsrep-notify.sh"
|
|
mode: "0770"
|
|
become: true
|
|
register: mariadb_wsrep_notify
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ mariadb_services }}"
|
|
notify:
|
|
- restart slave mariadb
|
|
- restart master mariadb
|
|
|
|
- name: Check mariadb containers
|
|
become: true
|
|
kolla_docker:
|
|
action: "compare_container"
|
|
common_options: "{{ docker_common_options }}"
|
|
name: "{{ item.value.container_name }}"
|
|
image: "{{ item.value.image }}"
|
|
volumes: "{{ item.value.volumes }}"
|
|
dimensions: "{{ item.value.dimensions }}"
|
|
register: check_mariadb_containers
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ mariadb_services }}"
|
|
notify:
|
|
- restart slave mariadb
|
|
- restart master mariadb
|