
If the container image used by Mariabackup is different than the one used by MariaDB server, it's possible that mariabackup and mariadb are incompatible. This may cause backup operations to fail. This change queries the running MariaDB server container's image and uses it when taking a backup. If MariaDB server isn't running on the host it falls back to the image defined in configuration. The separate mariabackup_image, mariabackup_tag and mariabackup_image_full variables are no longer required and have been removed. Closes-Bug: #2058644 Change-Id: I45f3f90ec1973dae92131ea16a7b248ab7a8ae69
139 lines
6.3 KiB
YAML
139 lines
6.3 KiB
YAML
---
|
|
mariadb_services:
|
|
mariadb:
|
|
container_name: mariadb
|
|
group: "{{ mariadb_shard_group }}"
|
|
enabled: true
|
|
image: "{{ mariadb_image_full }}"
|
|
volumes: "{{ mariadb_default_volumes + mariadb_extra_volumes }}"
|
|
dimensions: "{{ mariadb_dimensions }}"
|
|
healthcheck: "{{ mariadb_healthcheck }}"
|
|
environment:
|
|
MYSQL_USERNAME: "{{ mariadb_monitor_user }}"
|
|
MYSQL_PASSWORD: "{% if enable_proxysql | bool %}{{ mariadb_monitor_password }}{% endif %}"
|
|
MYSQL_HOST: "{{ api_interface_address }}"
|
|
AVAILABLE_WHEN_DONOR: "1"
|
|
haproxy:
|
|
mariadb:
|
|
enabled: "{{ enable_mariadb | bool and not enable_external_mariadb_load_balancer | bool }}"
|
|
mode: "tcp"
|
|
port: "{{ database_port }}"
|
|
listen_port: "{{ mariadb_port }}"
|
|
frontend_tcp_extra:
|
|
- "option clitcpka"
|
|
- "timeout client 3600s"
|
|
backend_tcp_extra:
|
|
- "option srvtcpka"
|
|
- "timeout server 3600s"
|
|
- "{% if enable_mariadb_clustercheck | bool %}option httpchk{% endif %}"
|
|
custom_member_list: "{{ internal_haproxy_members.split(';') }}"
|
|
mariadb_external_lb:
|
|
enabled: "{{ enable_external_mariadb_load_balancer | bool }}"
|
|
mode: "tcp"
|
|
port: "{{ database_port }}"
|
|
listen_port: "{{ mariadb_port }}"
|
|
frontend_tcp_extra:
|
|
- "option clitcpka"
|
|
- "timeout client 3600s"
|
|
backend_tcp_extra:
|
|
- "option srvtcpka"
|
|
- "timeout server 3600s"
|
|
custom_member_list: "{{ external_haproxy_members.split(';') }}"
|
|
mariadb-clustercheck:
|
|
container_name: mariadb_clustercheck
|
|
group: "{{ mariadb_shard_group }}"
|
|
enabled: "{{ enable_mariadb_clustercheck | bool }}"
|
|
image: "{{ mariadb_clustercheck_image_full }}"
|
|
volumes: "{{ mariadb_clustercheck_default_volumes + mariadb_clustercheck_extra_volumes }}"
|
|
dimensions: "{{ mariadb_clustercheck_dimensions }}"
|
|
environment:
|
|
MYSQL_USERNAME: "{{ mariadb_monitor_user }}"
|
|
MYSQL_PASSWORD: "{% if enable_proxysql | bool %}{{ mariadb_monitor_password }}{% endif %}"
|
|
MYSQL_HOST: "{{ api_interface_address }}"
|
|
AVAILABLE_WHEN_DONOR: "1"
|
|
|
|
####################
|
|
# Database
|
|
####################
|
|
database_cluster_name: "openstack"
|
|
database_max_timeout: 120
|
|
|
|
####################
|
|
# HAProxy
|
|
####################
|
|
internal_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %} server {{ hostvars[host].ansible_facts.hostname }} {{ 'api' | kolla_address(host) }}:{{ mariadb_port }} check port {% if enable_mariadb_clustercheck | bool %}{{ mariadb_clustercheck_port }}{% else %}{{ mariadb_port }}{% endif %} inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
external_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %} server {{ host }} {{ host }}:{{ mariadb_port }} check port {% if enable_mariadb_clustercheck | bool %}{{ mariadb_clustercheck_port }}{% else %}{{ mariadb_port }}{% endif %} inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
|
|
|
|
####################
|
|
# Docker
|
|
####################
|
|
mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-server"
|
|
mariadb_tag: "{{ openstack_tag }}"
|
|
mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
|
|
|
|
mariadb_clustercheck_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/mariadb-clustercheck"
|
|
mariadb_clustercheck_tag: "{{ mariadb_tag }}"
|
|
mariadb_clustercheck_image_full: "{{ mariadb_clustercheck_image }}:{{ mariadb_clustercheck_tag }}"
|
|
|
|
mariadb_dimensions: "{{ default_container_dimensions }}"
|
|
mariadb_clustercheck_dimensions: "{{ default_container_dimensions }}"
|
|
|
|
mariadb_default_volumes:
|
|
- "{{ node_config_directory }}/mariadb/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "{{ mariadb_datadir_volume }}:/var/lib/mysql"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
mariadb_clustercheck_default_volumes:
|
|
- "{{ node_config_directory }}/mariadb-clustercheck/:{{ container_config_directory }}/:ro"
|
|
- "/etc/localtime:/etc/localtime:ro"
|
|
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}"
|
|
- "kolla_logs:/var/log/kolla/"
|
|
|
|
mariadb_extra_volumes: "{{ default_extra_volumes }}"
|
|
mariadb_clustercheck_extra_volumes: "{{ default_extra_volumes }}"
|
|
|
|
mariadb_enable_healthchecks: "{{ enable_container_healthchecks }}"
|
|
mariadb_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
|
|
mariadb_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
|
|
mariadb_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
|
|
mariadb_healthcheck_test: ["CMD-SHELL", "/usr/bin/clustercheck"]
|
|
mariadb_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
|
|
mariadb_healthcheck:
|
|
interval: "{{ mariadb_healthcheck_interval }}"
|
|
retries: "{{ mariadb_healthcheck_retries }}"
|
|
start_period: "{{ mariadb_healthcheck_start_period }}"
|
|
test: "{% if mariadb_enable_healthchecks | bool %}{{ mariadb_healthcheck_test }}{% else %}NONE{% endif %}"
|
|
timeout: "{{ mariadb_healthcheck_timeout }}"
|
|
|
|
########################################
|
|
# Vars used within recover_cluster.yml
|
|
########################################
|
|
mariadb_service: "{{ mariadb_services['mariadb'] }}"
|
|
mariadb_recover_tmp_file_path: "/tmp/kolla_mariadb_recover_inventory_name_{{ mariadb_shard_name }}"
|
|
|
|
###############
|
|
# WSREP options
|
|
###############
|
|
mariadb_wsrep_extra_provider_options: []
|
|
|
|
####################
|
|
# Backups
|
|
####################
|
|
mariadb_backup_host: "{{ groups[mariadb_shard_group][0] }}"
|
|
mariadb_backup_database_schema: "PERCONA_SCHEMA"
|
|
mariadb_backup_database_user: "{% if mariadb_loadbalancer == 'haproxy' %}backup{% else %}{{ mariadb_shard_backup_user_prefix }}{{ mariadb_shard_id | string }}{% endif %}"
|
|
mariadb_backup_type: "full"
|
|
mariadb_backup_possible: "{{ mariadb_loadbalancer != 'haproxy' or inventory_hostname in mariadb_default_database_shard_hosts }}"
|
|
|
|
####################
|
|
# Clustercheck
|
|
####################
|
|
enable_mariadb_clustercheck: "{{ enable_haproxy }}"
|
|
|
|
####################
|
|
# Sharding
|
|
####################
|
|
mariadb_shard_database_user: "{% if mariadb_loadbalancer == 'haproxy' %}{{ database_user }}{% else %}{{ mariadb_shard_root_user_prefix }}{{ mariadb_shard_id | string }}{% endif %}"
|
|
mariadb_database_shard: "{{ mariadb_shards_info }}"
|