b25c0ee477
Upgrading MariaDB from Rocky to Stein currently fails, with the new container left continually restarting. The problem is that the Rocky container does not shutdown cleanly, leaving behind state that the new container cannot recover. The container does not shutdown cleanly because we run dumb-init with a --single-child argument, causing it to forward signals to only the process executed by dumb-init. In our case this is mysqld_safe, which ignores various signals, including SIGTERM. After a (default 10 second) timeout, Docker then kills the container. A Kolla change [1] removes the --single-child argument from dumb-init for the MariaDB container, however we still need to support upgrading from Rocky images that don't have this change. To do that, we add new handlers to execute 'mysqladmin shutdown' to cleanly shutdown the service. A second issue with the current upgrade approach is that we don't execute mysql_upgrade after starting the new service. This can leave the database state using the format of the previous release. This patch also adds handlers to execute mysql_upgrade. [1] https://review.openstack.org/644244 Depends-On: https://review.openstack.org/644244 Depends-On: https://review.openstack.org/645990 Change-Id: I08a655a359ff9cfa79043f2166dca59199c7d67f Closes-Bug: #1820325
104 lines
3.0 KiB
YAML
104 lines
3.0 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
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- restart 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
|
|
when:
|
|
- inventory_hostname in groups[service.group]
|
|
- service.enabled | bool
|
|
notify:
|
|
- restart 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
|
|
when:
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ mariadb_services }}"
|
|
notify:
|
|
- restart 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 }}"
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname in groups[item.value.group]
|
|
- item.value.enabled | bool
|
|
with_dict: "{{ mariadb_services }}"
|
|
notify:
|
|
- restart mariadb
|