Bump version and use mariabackup

We're currently deploying 10.2.17 which is quite old and we seem
to be having issues in the gate with some database sync's causing
MariaDB to crash, as well as personal experience with similar
crashes around Cinder database syncs

In addition, this change implements the usage of mariabackup for
SST transfers which eliminates the need for the Percona repos.

The compression is no longer recommended by upstream now, therefore,
we remove it.

Change-Id: I59a0e225205be43b5bfc76c4bc3381b6e9c54cfd
This commit is contained in:
Mohammed Naser 2019-03-17 22:23:53 -04:00
parent bd3fb46921
commit 94640cd215
15 changed files with 26 additions and 204 deletions

View File

@ -40,8 +40,8 @@ galera_debconf_items: []
galera_mariadb_server_package: "{{ _galera_mariadb_server_package }}"
# The major version used to select the repo URL path
galera_major_version: 10.2
galera_minor_version: 17
galera_major_version: 10.3
galera_minor_version: 13
# Set the URL for the MariaDB repository
galera_repo_host: "downloads.mariadb.com"
@ -61,12 +61,6 @@ galera_repo: "{{ _galera_repo }}"
# validate_certs: no
galera_gpg_keys: "{{ _galera_gpg_keys | default([]) }}"
# Set the rpo information for the Percona Xtrabackup repository
galera_percona_xtrabackup_repo: "{{ _galera_percona_xtrabackup_repo | default({}) }}"
# Enable the use of the upstream percona repo
use_percona_upstream: "{{ _use_percona_upstream }}"
galera_monitoring_user: monitoring
galera_monitoring_user_password: ""
@ -125,16 +119,14 @@ galera_wsrep_slave_threads_max: 16
galera_wsrep_slave_threads: "{{ [[ansible_processor_vcpus|default(2), 2] | max, galera_wsrep_slave_threads_max] | min }}"
galera_wsrep_retry_autocommit: 3
galera_wsrep_debug: 0
galera_wsrep_sst_method: xtrabackup-v2
galera_wsrep_sst_method: mariabackup
galera_wsrep_provider_options:
- { option: "gcache.size", value: "{{ galera_gcache_size }}" }
galera_wsrep_sst_auth_user: "root"
galera_wsrep_sst_auth_password: "{{ galera_root_password }}"
# Enable compression of backups.
galera_xtrabackup_compression: "{{ (ansible_architecture == 'x86_64') or (ansible_architecture == 'ppc64le' and ansible_distribution == 'Ubuntu') }}"
# xtrabackup parallel/compression/sync threads
galera_xtrabackup_threads: 4
# mariabackup parallel/sync threads
galera_mariabackup_threads: 4
# Galera slow/unindexed query logging
galera_slow_query_logging: 0
@ -156,16 +148,6 @@ galera_server_distro_package_pins:
- package: '*'
release: MariaDB
priority: 1001
# Blacklist 10.1.27 release due to https://jira.mariadb.org/browse/MDEV-13908
# which causes MariaDB to segfault with galera enabled.
- package: mariadb-server
version: 10.1.27+maria-1~xenial
priority: -1
# TODO(evrardjp): Remove pin when clustering issue is figured out
# Clustering issue
- package: mariadb-server
version: 10.1.31+maria-1~xenial
priority: -1
# Galera Server SSL functionality.

View File

@ -0,0 +1,5 @@
---
deprecations:
- The compression option has been removed due to the fact that it's not
recommended by MariaDB anymore. This means that all the dependencies from
Percona such as QPress are no longer necessary.

View File

@ -0,0 +1,4 @@
---
features:
- The role now uses mariabackup in order to complete SST operations due to
the fact that this is the recommended choice from MariaDB.

View File

@ -0,0 +1,3 @@
---
features:
- This role now ships with the latest MariaDB release of 10.3.13.

View File

@ -15,23 +15,7 @@
- name: Prepare the package list
set_fact:
galera_packages_list: |-
{% set packages = galera_server_required_distro_packages + galera_server_mariadb_distro_packages %}
{% if ansible_architecture == 'x86_64' %}
{% set _ = packages.extend(galera_server_percona_distro_packages) %}
{% endif %}
{% if ansible_architecture == 'ppc64le' and ansible_distribution == 'Ubuntu' %}
{% for extra_package in galera_server_percona_distro_packages_alt_arch[ansible_architecture] %}
{% set _package_path = galera_server_extra_package_path ~ '/' ~ ansible_architecture %}
{% set _ = packages.append(_package_path ~ '/' ~ extra_package['url'] | basename) %}
{% endfor %}
{% endif %}
{{ packages }}
- name: Download the extra packages
include_tasks: galera_install_download_extra_packages.yml
when:
- ansible_architecture == 'ppc64le'
galera_packages_list: "{{ galera_server_required_distro_packages + galera_server_mariadb_distro_packages }}"
- include_tasks: "galera_install_{{ ansible_pkg_mgr }}.yml"

View File

@ -42,7 +42,6 @@
state: absent
with_items:
- { name: "MariaDB", repo: "{{ galera_repo.repo }}" }
- { name: "Percona", repo: "{{ galera_percona_xtrabackup_repo.repo }}" }
- name: Add galera repo
apt_repository:
@ -52,14 +51,6 @@
update_cache: "no"
register: add_galera_repo
- name: Add percona repo
apt_repository:
repo: "{{ galera_percona_xtrabackup_repo.repo }}"
filename: "{{ galera_percona_xtrabackup_repo.filename | default(omit) }}"
state: "{{ galera_percona_xtrabackup_repo.state }}"
update_cache: "no"
register: add_percona_repo
- name: Preseed galera password(s)
debconf:
name: "{{ item.name }}"
@ -81,7 +72,7 @@
apt:
update_cache: yes
when:
- add_galera_repo is changed or add_percona_repo is changed
- add_galera_repo is changed
register: update_apt_cache
until: update_apt_cache is success
retries: 5

View File

@ -1,47 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Ensure that galera_server_extra_package_paths exist
file:
path: "{{ galera_server_extra_package_path }}/{{ item.key }}"
state: directory
with_dict: "{{ galera_server_percona_distro_packages_alt_arch }}"
delegate_to: "{{ (galera_server_extra_package_downloader == 'deployment-host') | ternary('localhost', inventory_hostname) }}"
- name: Download extra packages
get_url:
url: "{{ item.url }}"
dest: "{{ galera_server_extra_package_path }}/{{ galera_server_percona_distro_packages_alt_arch.keys()[0] }}/"
checksum: "{{ item.checksum | default(omit) }}"
force: "{{ item.checksum is not defined }}"
validate_certs: "{{ galera_server_extra_package_validate_certs }}"
with_items: "{{ galera_server_percona_distro_packages_alt_arch.values() | flatten | list }}"
register: fetch_url
until: fetch_url is success
retries: 3
delay: 10
delegate_to: "{{ (galera_server_extra_package_downloader == 'deployment-host') | ternary('localhost', inventory_hostname) }}"
- name: Copy downloaded packages from deployment-host to target-host
copy:
src: "{{ galera_server_extra_package_path }}/{{ item.key }}/{{ item.value.url | basename }}"
dest: "{{ galera_server_extra_package_path }}/{{ item.key }}/"
with_dict: "{{ galera_server_percona_distro_packages_alt_arch }}"
when:
- galera_server_extra_package_downloader == "deployment-host"
register: file_copy
until: file_copy is success
retries: 5
delay: 10

View File

@ -115,20 +115,6 @@
retries: 5
delay: 2
- name: Install percona repo
yum_repository:
name: 'percona-release-$basearch'
description: 'Percona-Release YUM repository - $basearch'
baseurl: "{{ galera_percona_xtrabackup_repo.repo }}"
enabled: true
gpgcheck: true
state: "{{ galera_percona_xtrabackup_repo.state }}"
priority: 25
register: add_percona_repos
until: add_percona_repos is success
retries: 5
delay: 2
# When changing the repo URL, the metadata does
# not reliably update, resulting in the right
# URL being used, but the wrong package list.
@ -138,7 +124,7 @@
command: "{{ ansible_pkg_mgr }} clean metadata"
args:
warn: no
when: (add_galera_repos is changed) or (add_percona_repos is changed)
when: add_galera_repos is changed
tags:
- skip_ansible_lint

View File

@ -71,11 +71,6 @@
retries: 5
delay: 2
- name: Fail if upstream Percona is selected
fail:
msg: "Using upstream Percona packages is unsupported on SUSE"
when: use_percona_upstream
- name: Add galera repo
zypper_repository:
name: "{{ galera_repo.name }}"
@ -89,19 +84,6 @@
retries: 5
delay: 2
- name: Install percona repo
zypper_repository:
name: "{{ galera_percona_xtrabackup_repo.name }}"
description: "{{ galera_percona_xtrabackup_repo.description }}"
repo: "{{ galera_percona_xtrabackup_repo.repo }}"
autorefresh: yes
auto_import_keys: yes
state: "{{ galera_percona_xtrabackup_repo.state }}"
register: add_repos
until: add_repos is success
retries: 5
delay: 2
- name: Install galera_server role remote packages (zypper)
zypper:
name: "{{ galera_packages_list }}"

View File

@ -29,15 +29,6 @@
tags:
- always
- name: Fail if compression is enabled on unsupported architecture/distro
fail:
msg: |
qpress compression is only supported for x86_64 and for Ubuntu/ppc64le
when:
- galera_xtrabackup_compression | bool
- (ansible_architecture != 'x86_64') and
not (ansible_architecture == 'ppc64le' and ansible_distribution == 'Ubuntu')
- name: Gather variables for each operating system
include_vars: "{{ item }}"
with_first_found:

View File

@ -46,10 +46,5 @@ wsrep_cluster_name = "{{ galera_cluster_name }}"
# how many times to retry deadlocked autocommits
wsrep_retry_autocommit = {{ galera_wsrep_retry_autocommit }}
[xtrabackup]
{% if galera_xtrabackup_compression | bool %}
compress
compress-threads = {{ galera_xtrabackup_threads }}
{% endif %}
parallel = {{ galera_xtrabackup_threads }}
rebuild-threads = {{ galera_xtrabackup_threads }}
[mariabackup]
parallel = {{ galera_mariabackup_threads }}

View File

@ -47,12 +47,6 @@ galera_server_upgrade_packages_remove:
galera_mariadb_service_name: "mariadb"
galera_server_percona_distro_packages:
- dev-db/percona-toolkit
- dev-db/percona-xtrabackup-bin
- "{{ (galera_xtrabackup_compression | bool) | ternary('app-arch/qpress', '') }}"
galera_wsrep_provider: "/usr/lib64/galera/libgalera_smm.so"
_use_percona_upstream: no
mysql_service_name: mariadb

View File

@ -17,9 +17,6 @@
_galera_gpg_keys:
# MariaDB Package Signing Key <package-signing-key@mariadb.org>
- key: /etc/pki/rpm-gpg/RPM-GPG-KEY-MariaDB
# Percona MySQL Development Team <mysql-dev@percona.com>
- key: /etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
- key: /etc/pki/rpm-gpg/PERCONA-PACKAGING-KEY
# Default private device setting
# This provides some additional security, but it causes problems with creating
@ -47,6 +44,7 @@ _galera_mariadb_server_package: "MariaDB-server"
galera_server_mariadb_distro_packages:
- which
- "{{ galera_mariadb_server_package }}"
- MariaDB-backup
- MariaDB-shared
- rsync
- socat
@ -70,15 +68,4 @@ _galera_repo:
description: "MariaDB Repo"
baseurl: "{{ galera_repo_url }}"
_galera_percona_xtrabackup_repo:
repo: "http://{{ galera_percona_xtrabackup_repo_host | default('repo.percona.com') }}/release/$releasever/RPMS/$basearch"
state: "{{ (use_percona_upstream | bool) | ternary('present', 'absent') }}"
galera_server_percona_distro_packages:
- percona-toolkit
- percona-xtrabackup-24
- "{{ (galera_xtrabackup_compression | bool) | ternary('qpress', '') }}"
galera_wsrep_provider: "/usr/lib/galera/libgalera_smm.so"
_use_percona_upstream: "{{ ansible_architecture == 'x86_64' }}"

View File

@ -41,6 +41,7 @@ _galera_mariadb_server_package: "MariaDB-server"
galera_server_mariadb_distro_packages:
- which
- "{{ galera_mariadb_server_package }}"
- MariaDB-backup
- MariaDB-shared
- rsync
- socat
@ -66,24 +67,9 @@ _galera_repo:
description: "MariaDB Repo"
baseurl: "{{ galera_repo_url }}"
# NOTE(hwoarang): Extra repository is only needed for 42.3. If this starts failig due to network issues we should
# simply pin 10.1.31 to Leap 42.3
_galera_percona_xtrabackup_repo:
name: "OBS:home:markoschandras:osa"
description: "OBS OpenStack Ansible repository"
repo: "https://download.opensuse.org/repositories/home:/markoschandras:/osa/openSUSE_Leap_{{ ansible_distribution_version }}"
state: "{{ (ansible_distribution_major_version == '42') | ternary('present', 'absent') }}"
galera_server_percona_distro_packages:
- percona-toolkit
- percona-xtrabackup
- "{{ (galera_xtrabackup_compression | bool) | ternary('qpress', '') }}"
galera_wsrep_provider: "/usr/lib64/galera/libgalera_smm.so"
mariadb_delete_etc_conf_files:
- default_plugins.cnf
- galera.cnf
- error_log.cnf
_use_percona_upstream: no

View File

@ -24,9 +24,6 @@ _galera_gpg_keys:
# MariaDB Signing Key <signing-key@mariadb.org>
- id: C74CD1D8
file: /etc/ssl/mariadb-key
# Percona MySQL Development Team (Packaging key) <mysql-dev@percona.com>
- id: 8507EFA5
file: /etc/ssl/percona-pkg-key
galera_server_required_distro_packages:
- apt-transport-https
@ -56,6 +53,7 @@ _galera_mariadb_server_package: "mariadb-server-{{ galera_major_version }}"
galera_server_mariadb_distro_packages:
- libmariadb-dev
- mariadb-client
- mariadb-backup
- "{{ galera_mariadb_server_package }}"
- galera-3
- rsync
@ -78,30 +76,11 @@ galera_debconf_items:
value: "{{ galera_root_password }}"
vtype: "string"
galera_server_percona_distro_packages:
- percona-toolkit
- percona-xtrabackup-24
- "{{ (galera_xtrabackup_compression | bool) | ternary('qpress', '') }}"
# Repositories
_galera_percona_xtrabackup_repo:
repo: "deb http://{{ galera_percona_xtrabackup_repo_host | default('repo.percona.com') }}/apt {{ ansible_distribution_release }} main"
state: "{{ (use_percona_upstream | bool) | ternary('present', 'absent') }}"
filename: "Percona"
_galera_repo_url: "http://{{ galera_repo_host }}/MariaDB/mariadb-{{ galera_major_version }}.{{ galera_minor_version }}/repo/ubuntu"
_galera_repo:
repo: "deb {{ galera_repo_url }} {{ ansible_distribution_release }} main"
state: "present"
filename: "MariaDB"
galera_wsrep_provider: "/usr/lib/galera/libgalera_smm.so"
_use_percona_upstream: "{{ ansible_architecture == 'x86_64' }}"
galera_server_percona_distro_packages_alt_arch:
ppc64le:
- url: "http://public.dhe.ibm.com/systems/virtualization/Novalink/misc/percona-xtrabackup/percona-xtrabackup-24_2.4.5-1_ppc64el.deb"
checksum: "sha256:3d4e4112f4c8020c9190a91d962dabed1dfaad307160a939e121208887eaee2a"
- url: "http://public.dhe.ibm.com/systems/virtualization/Novalink/misc/qpress/qpress_11-1_ppc64el.deb"
checksum: "sha256:a31d3e00dbcec9b3f98eae82b261d054d0b80a57f4a38967d0e953811cb082f3"
galera_wsrep_provider: "/usr/lib/galera/libgalera_smm.so"