From 27a142792b5e02e66b8f1adf9a7b896c5722dd17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Otto=20Kek=C3=A4l=C3=A4inen?= Date: Sat, 22 May 2021 10:43:45 -0700 Subject: [PATCH] Bugfix: Don't uninstall MariaDB on Galera 3 to 4 upgrade (Closes: #988089) - Ensure 'apt dist-upgrade' from Galera 3 to 4 keeps MariaDB Server installed and upgraded. In the case of Buster to Bullseye it should uninstall MariaDB 10.3 and install MariaDB 10.5. - Extend Salsa-CI to test this to ensure it will not regress in future. Proof: ``` # Debian release: Buster # Apt: all sources disabled # Testing with manually downloaded http://ftp.debian.org/debian/dists/sid/main/binary-amd64/Packages.xz # apt-get -o Debug::pkgProblemResolver=1 --with-source ./Packages dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Starting pkgProblemResolver with broken count: 10 Starting 2 pkgProblemResolver with broken count: 10 Investigating (0) mariadb-client-core-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-client-core-10.5:amd64 Conflicts on virtual-mysql-client-core:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-client-core-8.0 but that is not InstVer, ignoring Considering mariadb-client-core-10.3:amd64 -3 as a solution to mariadb-client-core-10.5:amd64 0 Added mariadb-client-core-10.3:amd64 to the remove list Broken mariadb-client-core-10.5:amd64 Breaks on mariadb-client-core-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-client-core-10.3:amd64 -3 as a solution to mariadb-client-core-10.5:amd64 0 Added mariadb-client-core-10.3:amd64 to the remove list Fixing mariadb-client-core-10.5:amd64 via remove of mariadb-client-core-10.3:amd64 Fixing mariadb-client-core-10.5:amd64 via remove of mariadb-client-core-10.3:amd64 Investigating (0) mariadb-client-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-client-10.5:amd64 Conflicts on virtual-mysql-client:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-client-8.0 but that is not InstVer, ignoring Considering mariadb-client-10.3:amd64 -2 as a solution to mariadb-client-10.5:amd64 0 Added mariadb-client-10.3:amd64 to the remove list Broken mariadb-client-10.5:amd64 Breaks on mariadb-client-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-client-10.3:amd64 -2 as a solution to mariadb-client-10.5:amd64 0 Added mariadb-client-10.3:amd64 to the remove list Fixing mariadb-client-10.5:amd64 via remove of mariadb-client-10.3:amd64 Fixing mariadb-client-10.5:amd64 via remove of mariadb-client-10.3:amd64 Investigating (0) galera-4:amd64 < none -> 26.4.7-3 @un uN Ib > Broken galera-4:amd64 Conflicts on galera:amd64 < none @un H > Considering galera-3:amd64 0 as a solution to galera-4:amd64 0 Holding Back galera-4:amd64 rather than change galera:amd64 Investigating (0) mariadb-server-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-server-10.5:amd64 Depends on galera-4:amd64 < none | 26.4.7-3 @un uH > (>= 26.4) Considering galera-4:amd64 0 as a solution to mariadb-server-10.5:amd64 0 Holding Back mariadb-server-10.5:amd64 rather than change galera-4:amd64 Investigating (0) mariadb-server-core-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-server-core-10.5:amd64 Conflicts on virtual-mysql-server-core:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-server-core-8.0 but that is not InstVer, ignoring Considering mariadb-server-core-10.3:amd64 -2 as a solution to mariadb-server-core-10.5:amd64 0 Added mariadb-server-core-10.3:amd64 to the remove list Broken mariadb-server-core-10.5:amd64 Breaks on mariadb-server-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-server-10.3:amd64 -4 as a solution to mariadb-server-core-10.5:amd64 0 Added mariadb-server-10.3:amd64 to the remove list Broken mariadb-server-core-10.5:amd64 Breaks on mariadb-server-core-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-server-core-10.3:amd64 -2 as a solution to mariadb-server-core-10.5:amd64 0 Added mariadb-server-core-10.3:amd64 to the remove list Fixing mariadb-server-core-10.5:amd64 via remove of mariadb-server-core-10.3:amd64 Fixing mariadb-server-core-10.5:amd64 via remove of mariadb-server-10.3:amd64 Fixing mariadb-server-core-10.5:amd64 via remove of mariadb-server-core-10.3:amd64 Investigating (1) mariadb-server:amd64 < 1:10.3.27-0+deb10u1 -> 1:10.5.9-1 @ii umU Ib > Broken mariadb-server:amd64 Depends on mariadb-server-10.5:amd64 < none | 1:10.5.9-1 @un uH > (>= 1:10.5.9-1) Considering mariadb-server-10.5:amd64 0 as a solution to mariadb-server:amd64 0 Removing mariadb-server:amd64 rather than change mariadb-server-10.5:amd64 Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: galera-3 gcc-8-base libaio1 libapt-pkg5.0 libcgi-fast-perl libcgi-pm-perl libclone-perl libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libencode-locale-perl libfcgi-bin libfcgi-perl libfcgi0ldbl libffi6 libgcc1 libgdbm-compat4 libgdbm6 libhogweed4 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmariadb3 libncurses6 libnettle6 libperl5.28 libperl5.32 libpopt0 libreadline5 libreadline7 libsnappy1v5 libterm-readkey-perl libtimedate-perl liburi-perl libwrap0 lsof mariadb-common mysql-common netbase perl perl-modules-5.28 perl-modules-5.32 psmisc rsync socat Use 'apt autoremove' to remove them. The following packages will be REMOVED: mariadb-client-10.3 mariadb-client-core-10.3 mariadb-server mariadb-server-10.3 mariadb-server-core-10.3 The following NEW packages will be installed: bsdextrautils libapt-pkg6.0 libbpf0 libbsd0 libclone-perl libfcgi-bin libfcgi0ldbl libmd0 libpcre2-8-0 libperl5.32 libreadline8 libxxhash0 logsave perl-modules-5.32 The following packages will be upgraded: apt base-files base-passwd bash bsdutils coreutils dash debconf debian-archive-keyring debianutils dpkg e2fsprogs fdisk findutils galera-3 gawk gpgv grep gzip hostname init-system-helpers iproute2 iputils-ping libacl1 libaio1 libattr1 libaudit-common libaudit1 libblkid1 libbz2-1.0 libc-bin libc6 libcap-ng0 libcap2 libcap2-bin libcgi-fast-perl libcgi-pm-perl libcom-err2 libconfig-inifiles-perl libdb5.3 libdbd-mysql-perl libdbi-perl libdebconfclient0 libelf1 libencode-locale-perl libext2fs2 libfcgi-perl libfdisk1 libgcrypt20 libgdbm-compat4 libgdbm6 libgmp10 libgnutls30 libgpg-error0 libgpm2 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libidn2-0 libio-html-perl liblwp-mediatypes-perl liblz4-1 liblzma5 libmariadb3 libmnl0 libmount1 libmpfr6 libncurses6 libncursesw6 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre3 libpopt0 libseccomp2 libselinux1 libsemanage-common libsemanage1 libsepol1 libsigsegv2 libsmartcols1 libsnappy1v5 libss2 libssh2-1 libssl1.1 libstdc++6 libsystemd0 libterm-readkey-perl libtimedate-perl libtinfo6 libudev1 libunistring2 liburi-perl libuuid1 libwrap0 libxtables12 libzstd1 login lsb-base lsof mariadb-common mawk mount mysql-common ncurses-base ncurses-bin netbase passwd perl perl-base psmisc readline-common rsync socat sysvinit-utils tar tzdata util-linux zlib1g 122 upgraded, 14 newly installed, 5 to remove and 0 not upgraded. Need to get 0 B/50.2 MB of archives. After this operation, 98.6 MB disk space will be freed. Do you want to continue? [Y/n] n Abort. # nano +211847 Packages # diff -u Packages.orig Packages --- Packages.orig 2021-05-13 14:35:57.417682274 -0700 +++ Packages 2021-05-13 15:03:18.594405045 -0700 @@ -211852,8 +211852,8 @@ Replaces: galera Provides: galera, galera4, percona-xtradb-cluster-galera-26, wsrep Depends: libc6 (>= 2.17), libgcc-s1 (>= 3.0), libssl1.1 (>= 1.1.0), libstdc++6 (>= 9) -Conflicts: galera-3, garbd-2, garbd-3, garbd2, garbd3, percona-galera-3, percona-galera-4, percona-xtradb-cluster-galera, percona-xtradb-cluster-galera-2.x, percona-xtradb-cluster-galera-3.x, percona-xtradb-cluster-galera-4.x, percona-xtradb-cluster-garbd-2.x, percona-xtradb-cluster-garbd-3.x -Breaks: galera +Conflicts: galera, galera-3, garbd-2, garbd-3, garbd2, garbd3, percona-galera-3, percona-galera-4, percona-xtradb-cluster-galera, percona-xtradb-cluster-galera-2.x, percona-xtradb-cluster-galera-3.x, percona-xtradb-cluster-galera-4.x, percona-xtradb-cluster-garbd-2.x, percona-xtradb-cluster-garbd-3.x +Breaks: galera, galera-3 Description: Replication framework for transactional applications Homepage: https://www.galeracluster.com/ Description-md5: fe238c5e6ce783e128515e8bc966eacf # apt-get -o Debug::pkgProblemResolver=1 --with-source ./Packages dist-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Starting pkgProblemResolver with broken count: 10 Starting 2 pkgProblemResolver with broken count: 10 Investigating (0) mariadb-client-core-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-client-core-10.5:amd64 Conflicts on virtual-mysql-client-core:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-client-core-8.0 but that is not InstVer, ignoring Considering mariadb-client-core-10.3:amd64 -3 as a solution to mariadb-client-core-10.5:amd64 0 Added mariadb-client-core-10.3:amd64 to the remove list Broken mariadb-client-core-10.5:amd64 Breaks on mariadb-client-core-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-client-core-10.3:amd64 -3 as a solution to mariadb-client-core-10.5:amd64 0 Added mariadb-client-core-10.3:amd64 to the remove list Fixing mariadb-client-core-10.5:amd64 via remove of mariadb-client-core-10.3:amd64 Fixing mariadb-client-core-10.5:amd64 via remove of mariadb-client-core-10.3:amd64 Investigating (0) mariadb-client-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-client-10.5:amd64 Conflicts on virtual-mysql-client:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-client-8.0 but that is not InstVer, ignoring Considering mariadb-client-10.3:amd64 -2 as a solution to mariadb-client-10.5:amd64 0 Added mariadb-client-10.3:amd64 to the remove list Broken mariadb-client-10.5:amd64 Breaks on mariadb-client-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-client-10.3:amd64 -2 as a solution to mariadb-client-10.5:amd64 0 Added mariadb-client-10.3:amd64 to the remove list Fixing mariadb-client-10.5:amd64 via remove of mariadb-client-10.3:amd64 Fixing mariadb-client-10.5:amd64 via remove of mariadb-client-10.3:amd64 Investigating (0) galera-4:amd64 < none -> 26.4.7-3 @un uN Ib > Broken galera-4:amd64 Conflicts on galera:amd64 < none @un H > Considering galera-3:amd64 -1 as a solution to galera-4:amd64 0 Added galera-3:amd64 to the remove list Conflicts//Breaks against version 25.3.25-2 for galera-3 but that is not InstVer, ignoring Broken galera-4:amd64 Conflicts on galera-3:amd64 < 25.3.25-2 -> 25.3.31-2+b1 @ii umU Ib > Considering galera-3:amd64 -1 as a solution to galera-4:amd64 0 Added galera-3:amd64 to the remove list Conflicts//Breaks against version 25.3.25-2 for galera-3 but that is not InstVer, ignoring Broken galera-4:amd64 Breaks on galera:amd64 < none @un H > Considering galera-3:amd64 -1 as a solution to galera-4:amd64 0 Added galera-3:amd64 to the remove list Conflicts//Breaks against version 25.3.25-2 for galera-3 but that is not InstVer, ignoring Broken galera-4:amd64 Breaks on galera-3:amd64 < 25.3.25-2 -> 25.3.31-2+b1 @ii umU Ib > Considering galera-3:amd64 -1 as a solution to galera-4:amd64 0 Added galera-3:amd64 to the remove list Conflicts//Breaks against version 25.3.25-2 for galera-3 but that is not InstVer, ignoring Fixing galera-4:amd64 via remove of galera-3:amd64 Fixing galera-4:amd64 via remove of galera-3:amd64 Fixing galera-4:amd64 via remove of galera-3:amd64 Fixing galera-4:amd64 via remove of galera-3:amd64 Investigating (0) mariadb-server-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-server-10.5:amd64 Conflicts on virtual-mysql-server:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-server-8.0 but that is not InstVer, ignoring Considering mariadb-server-10.3:amd64 -4 as a solution to mariadb-server-10.5:amd64 0 Added mariadb-server-10.3:amd64 to the remove list Broken mariadb-server-10.5:amd64 Breaks on mariadb-server-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-server-10.3:amd64 -4 as a solution to mariadb-server-10.5:amd64 0 Added mariadb-server-10.3:amd64 to the remove list Fixing mariadb-server-10.5:amd64 via remove of mariadb-server-10.3:amd64 Fixing mariadb-server-10.5:amd64 via remove of mariadb-server-10.3:amd64 Investigating (0) mariadb-server-core-10.5:amd64 < none -> 1:10.5.9-1 @un uN Ib > Broken mariadb-server-core-10.5:amd64 Conflicts on virtual-mysql-server-core:amd64 < none @un H > Conflicts//Breaks against version 8.0.23-3+b1 for mysql-server-core-8.0 but that is not InstVer, ignoring Considering mariadb-server-core-10.3:amd64 -2 as a solution to mariadb-server-core-10.5:amd64 0 Added mariadb-server-core-10.3:amd64 to the remove list Broken mariadb-server-core-10.5:amd64 Breaks on mariadb-server-core-10.3:amd64 < 1:10.3.27-0+deb10u1 @ii mK Ib > Considering mariadb-server-core-10.3:amd64 -2 as a solution to mariadb-server-core-10.5:amd64 0 Added mariadb-server-core-10.3:amd64 to the remove list Fixing mariadb-server-core-10.5:amd64 via remove of mariadb-server-core-10.3:amd64 Fixing mariadb-server-core-10.5:amd64 via remove of mariadb-server-core-10.3:amd64 Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: libapt-pkg5.0 libffi6 libhogweed4 libnettle6 libperl5.28 libreadline5 libreadline7 perl-modules-5.28 Use 'apt autoremove' to remove them. The following packages will be REMOVED: galera-3 mariadb-client-10.3 mariadb-client-core-10.3 mariadb-server-10.3 mariadb-server-core-10.3 The following NEW packages will be installed: bsdextrautils galera-4 libapt-pkg6.0 libbpf0 libbsd0 libclone-perl libedit2 libfcgi-bin libfcgi0ldbl libmd0 libpcre2-8-0 libperl5.32 libprocps8 libreadline8 libxxhash0 logsave mariadb-client-10.5 mariadb-client-core-10.5 mariadb-server-10.5 mariadb-server-core-10.5 perl-modules-5.32 procps The following packages will be upgraded: apt base-files base-passwd bash bsdutils coreutils dash debconf debian-archive-keyring debianutils dpkg e2fsprogs fdisk findutils gawk gpgv grep gzip hostname init-system-helpers iproute2 iputils-ping libacl1 libaio1 libattr1 libaudit-common libaudit1 libblkid1 libbz2-1.0 libc-bin libc6 libcap-ng0 libcap2 libcap2-bin libcgi-fast-perl libcgi-pm-perl libcom-err2 libconfig-inifiles-perl libdb5.3 libdbd-mysql-perl libdbi-perl libdebconfclient0 libelf1 libencode-locale-perl libext2fs2 libfcgi-perl libfdisk1 libgcrypt20 libgdbm-compat4 libgdbm6 libgmp10 libgnutls30 libgpg-error0 libgpm2 libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libidn2-0 libio-html-perl liblwp-mediatypes-perl liblz4-1 liblzma5 libmariadb3 libmnl0 libmount1 libmpfr6 libncurses6 libncursesw6 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre3 libpopt0 libseccomp2 libselinux1 libsemanage-common libsemanage1 libsepol1 libsigsegv2 libsmartcols1 libsnappy1v5 libss2 libssh2-1 libssl1.1 libstdc++6 libsystemd0 libterm-readkey-perl libtimedate-perl libtinfo6 libudev1 libunistring2 liburi-perl libuuid1 libwrap0 libxtables12 libzstd1 login lsb-base lsof mariadb-common mariadb-server mawk mount mysql-common ncurses-base ncurses-bin netbase passwd perl perl-base psmisc readline-common rsync socat sysvinit-utils tar tzdata util-linux zlib1g 122 upgraded, 22 newly installed, 5 to remove and 0 not upgraded. Need to get 0 B/64.0 MB of archives. After this operation, 47.2 MB of additional disk space will be used. ``` --- debian/control | 6 ++++-- debian/salsa-ci.yml | 51 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/debian/control b/debian/control index 13343ce..832c92e 100644 --- a/debian/control +++ b/debian/control @@ -20,7 +20,8 @@ Architecture: any Section: libs Depends: ${misc:Depends}, ${shlibs:Depends} -Conflicts: galera-3, +Conflicts: galera, + galera-3, garbd-2, garbd-3, garbd2, @@ -37,7 +38,8 @@ Provides: galera, galera4, percona-xtradb-cluster-galera-26, wsrep -Breaks: galera +Breaks: galera, + galera-3 Replaces: galera Description: Replication framework for transactional applications Galera is a fast synchronous multimaster wsrep provider (replication engine) diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml index 352aee7..4ed1041 100644 --- a/debian/salsa-ci.yml +++ b/debian/salsa-ci.yml @@ -58,11 +58,11 @@ galera-4.x to galera-4.y upgrade: - *test-prepare-container # Install almost everything currently in Debian Buster - apt-get install -y galera-4 galera-arbitrator-4 - # Verify installation of MariaDB from Buster + # Verify installation of Galera from Buster - dpkg -l | grep -iE 'maria|mysql|galera' # List installed # Install MariaDB built in this commit - apt-get install -y ./*.deb - # Verify installation of MariaDB built in this commit + # Verify installation of Galera built in this commit - dpkg -l | grep -iE 'maria|mysql|galera' # List installed variables: GIT_STRATEGY: none @@ -80,16 +80,16 @@ galera-3 buster to galera-4 upgrade: - *test-prepare-container # Install almost everything currently in Debian Buster - apt-get install -y 'galera-*' - # Verify installation of MariaDB from Buster + # Verify installation of Galera from Buster - dpkg -l | grep -iE 'maria|mysql|galera' # List installed - # Install MariaDB built in this commit + # Install Galera built in this commit # Replace any old repos with just Sid - echo 'deb http://deb.debian.org/debian sid main' > /etc/apt/sources.list # Upgrade minimal stack first - apt-get update; apt-get install -y apt # Install MariaDB built in this commit - apt-get install -y ./*.deb - # Verify installation of MariaDB built in this commit + # Verify installation of Galera built in this commit - dpkg -l | grep -iE 'maria|mysql|galera' # List installed variables: GIT_STRATEGY: none @@ -107,9 +107,9 @@ galera-3 stretch to galera-4 upgrade: - *test-prepare-container # Install almost everything currently in Debian Buster - apt-get install -y 'galera-*' - # Verify installation of MariaDB from Buster + # Verify installation of Galera from Buster - dpkg -l | grep -iE 'maria|mysql|galera' # List installed - # Install MariaDB built in this commit + # Install Galera built in this commit # Replace any old repos with just Sid - echo 'deb http://deb.debian.org/debian sid main' > /etc/apt/sources.list; apt-get update # Upgrade minimal stack first @@ -118,8 +118,43 @@ galera-3 stretch to galera-4 upgrade: - apt-get install -y apt libnss-nis || true # Install MariaDB built in this commit - apt-get install -y ./*.deb - # Verify installation of MariaDB built in this commit + # Verify installation of Galera built in this commit + - dpkg -l | grep -iE 'maria|mysql|galera' # List installed + variables: + GIT_STRATEGY: none + except: + variables: + - $CI_COMMIT_TAG != null && $SALSA_CI_ENABLE_PIPELINE_ON_TAGS !~ /^(1|yes|true)$/ + +mariadb-10.3 buster dist-upgrade: + stage: upgrade from Buster/Stretch + needs: + - job: build + artifacts: true + image: debian:buster + script: + - *test-prepare-container + # Install almost everything Galera currently in Debian Buster + # and the MariaDB Server 10.3 which uses Galera + - apt-get install -y 'galera-*' mariadb-server + - dpkg -l | grep -iE 'maria|mysql|galera' # List installed + # Verify MariaDB is running and Galera plugin is visible + - mariadb -e "SHOW PLUGINS;" mysql | grep -i wsrep + # Add newly built packages as repository + - apt-get install -y apt-utils + - apt-ftparchive packages . > Packages + - echo "deb [trusted=yes] file:$(pwd) ./" > /etc/apt/sources.list.d/local.list + # Replace any old repos with just Sid + - echo 'deb http://deb.debian.org/debian sid main' > /etc/apt/sources.list; apt-get update + # Start with regular upgrade + - apt-get upgrade -y # mysql-common and mariadb-common upgrade + # Verify server still works + - /etc/init.d/mysql restart && sleep 10 && mariadb -e "SHOW PLUGINS;" mysql | grep -i wsrep + # Upgrade to Galera built in this commit via dist-upgrade + - apt-get dist-upgrade -y - dpkg -l | grep -iE 'maria|mysql|galera' # List installed + # Verify MariaDB is running and Galera plugin is visible + - mariadb -e "SHOW PLUGINS;" mysql | grep -i wsrep variables: GIT_STRATEGY: none except: -- GitLab