Fix MariaDB 10.3 upgrade
There are a couple of issues with the mariadb image currently. 1. it doesn't include mysql_upgrade on CentOS/RHEL. It is necessary to run this after an upgrade of MariaDB. This is fixed by installing mariadb-server-utils. 2. it inherits the standard dumb-init entrypoint from the base image, which includes a --single-child argument. That causes signals to be forwarded only to the process executed by dumb-init, which in the case of kolla-ansible is mysqld_safe, however mysqld_safe ignores SIGTERM. After a timeout, Docker then forcibly kills the container. Executing dumb-init without --single-child ensures the TERM signal is sent to mysqld, allowing it to shutdown gracefully. Change-Id: I1a450736721863b91be1ea3d3c8948990de9fdeb Closes-Bug: #1820325
This commit is contained in:
parent
debe417982
commit
3075685d01
|
@ -13,8 +13,9 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
|
||||||
'galera',
|
'galera',
|
||||||
'hostname',
|
'hostname',
|
||||||
'mariadb',
|
'mariadb',
|
||||||
'mariadb-server-galera',
|
|
||||||
'mariadb-backup',
|
'mariadb-backup',
|
||||||
|
'mariadb-server-galera',
|
||||||
|
'mariadb-server-utils',
|
||||||
'pv',
|
'pv',
|
||||||
'rsync',
|
'rsync',
|
||||||
'tar'
|
'tar'
|
||||||
|
@ -50,6 +51,17 @@ RUN chmod 755 /usr/local/bin/kolla_extend_start \
|
||||||
{% if base_package_type == 'deb' %}
|
{% if base_package_type == 'deb' %}
|
||||||
RUN mkdir -p /var/run/mysqld && chown mysql /var/run/mysqld && chmod 755 /var/run/mysqld
|
RUN mkdir -p /var/run/mysqld && chown mysql /var/run/mysqld && chmod 755 /var/run/mysqld
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% block mariadb_entrypoint %}
|
||||||
|
# NOTE(mgoddard): Override the dumb-init arguments to avoid passing
|
||||||
|
# --single-child. This does not play well with mysqld_safe, which ignores
|
||||||
|
# SIGTERM, meaning Docker needs to forcibly kill the container to stop it.
|
||||||
|
# Without --single-child, the TERM signal is sent to all subprocesses,
|
||||||
|
# including mysqld.
|
||||||
|
ENTRYPOINT ["dumb-init"]
|
||||||
|
CMD ["kolla_start"]
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block mariadb_footer %}{% endblock %}
|
{% block mariadb_footer %}{% endblock %}
|
||||||
{% block footer %}{% endblock %}
|
{% block footer %}{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,19 @@ if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# This catches all cases of the KOLLA_UPGRADE variable being set, including empty
|
||||||
|
if [[ "${!KOLLA_UPGRADE[@]}" ]]; then
|
||||||
|
# The mysql_upgrade command treats any directories under /var/lib/mysql as
|
||||||
|
# databases. Somehow we can end up with a .pki directory, which causes the
|
||||||
|
# command to fail with this error:
|
||||||
|
# Incorrect database name '#mysql50#.pki' when selecting the database
|
||||||
|
# There doesn't seem to be anything in the directory, so remove it.
|
||||||
|
rm -rf /var/lib/mysql/.pki
|
||||||
|
|
||||||
|
mysql_upgrade --user=root --password="${DB_ROOT_PASSWORD}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "${!BOOTSTRAP_ARGS[@]}" ]]; then
|
if [[ "${!BOOTSTRAP_ARGS[@]}" ]]; then
|
||||||
ARGS="${BOOTSTRAP_ARGS}"
|
ARGS="${BOOTSTRAP_ARGS}"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue