From 7cc2cc7f951d71cf9f87fdd7dc0251cce6c60c51 Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Wed, 22 Apr 2026 05:27:05 +0000 Subject: [PATCH 1/2] ci: add MySQL 5.6 to sandbox-test matrix MySQL 5.6 has been supported by dbdeployer since inception, but CI didn't exercise it. Add 5.6.51 (the last 5.6 release) to the sandbox-test job covering single + master-slave replication, and update the docs so the supported-versions matrix reflects reality. MySQL 5.6 tarballs ship as .tar.gz built against glibc2.12, unlike 5.7+ which ship .tar.xz/glibc2.17, so the download/unpack steps branch on short version. --- .github/workflows/integration_tests.yml | 16 ++++++++++++++-- README.md | 2 +- website/src/content/docs/providers/mysql.md | 7 ++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index c5b561a..313ba8e 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -18,6 +18,7 @@ jobs: fail-fast: false matrix: mysql-version: + - '5.6.51' - '8.0.42' - '8.4.4' - '9.1.0' @@ -50,7 +51,13 @@ jobs: - name: Download MySQL run: | SHORT_VER=$(echo "$MYSQL_VERSION" | grep -oP '^\d+\.\d+') - TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" + # MySQL 5.6 ships as .tar.gz built against glibc2.12; 5.7+ ships + # as .tar.xz built against glibc2.17. + if [ "$SHORT_VER" = "5.6" ]; then + TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.12-x86_64.tar.gz" + else + TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" + fi mkdir -p /tmp/mysql-tarball if [ ! -f "/tmp/mysql-tarball/$TARBALL" ]; then echo "Downloading $TARBALL..." @@ -64,7 +71,12 @@ jobs: - name: Unpack MySQL run: | mkdir -p "$SANDBOX_BINARY" - TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" + SHORT_VER=$(echo "$MYSQL_VERSION" | grep -oP '^\d+\.\d+') + if [ "$SHORT_VER" = "5.6" ]; then + TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.12-x86_64.tar.gz" + else + TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" + fi ./dbdeployer unpack "/tmp/mysql-tarball/$TARBALL" \ --sandbox-binary="$SANDBOX_BINARY" diff --git a/README.md b/README.md index 91a5b75..18e8efb 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ dbdeployer deploy single 8.0.40 | Provider | Single | Replication | Group Replication | ProxySQL Wiring | |----------|:------:|:-----------:|:-----------------:|:---------------:| -| **MySQL** (8.0, 8.4, 9.x) | ✓ | ✓ | ✓ | ✓ | +| **MySQL** (5.6, 5.7, 8.0, 8.4, 9.x) | ✓ | ✓ | ✓ (5.7.17+) | ✓ | | **PostgreSQL** (12+) | ✓ | ✓ (streaming) | — | ✓ | | **ProxySQL** | ✓ | — | — | — | | Percona Server | ✓ | ✓ | ✓ | ✓ | diff --git a/website/src/content/docs/providers/mysql.md b/website/src/content/docs/providers/mysql.md index 36d1fe7..6d4478f 100644 --- a/website/src/content/docs/providers/mysql.md +++ b/website/src/content/docs/providers/mysql.md @@ -9,7 +9,7 @@ The MySQL provider is the core of dbdeployer. It supports MySQL Community Server | Flavor | Tarball prefix | Notes | |--------|---------------|-------| -| MySQL Community Server | `mysql-` | Default; versions 5.7, 8.0, 8.4, 9.x | +| MySQL Community Server | `mysql-` | Default; versions 5.6, 5.7, 8.0, 8.4, 9.x | | Percona Server | `Percona-Server-` | Drop-in MySQL replacement with extra features | | MariaDB | `mariadb-` | Compatible with MySQL 5.7 API; some features differ | @@ -85,6 +85,7 @@ dbdeployer deploy single lab_8.0.35 | Series | Status | Topologies | |--------|--------|-----------| +| 5.6.x | Legacy | single, replication (GTID 5.6.9+), fan-in/all-masters unsupported | | 5.7.x | Legacy | single, replication, group (5.7.17+) | | 8.0.x | Stable | all topologies | | 8.4.x | LTS (recommended) | all topologies | @@ -96,8 +97,8 @@ All topologies are deployed with `dbdeployer deploy replication --topo | Topology | Flag | Min Version | |----------|------|-------------| -| Single | `deploy single` | any | -| Master-slave | `--topology=master-slave` (default) | any | +| Single | `deploy single` | 5.6 | +| Master-slave | `--topology=master-slave` (default) | 5.6 | | Group Replication | `--topology=group` | 5.7.17 | | Single-primary GR | `--topology=group --single-primary` | 5.7.17 | | InnoDB Cluster | `--topology=innodb-cluster` | 8.0 | From 8df4c643f4d45b878488a869781d64e52cd5af5a Mon Sep 17 00:00:00 2001 From: Rene Cannao Date: Wed, 22 Apr 2026 05:38:56 +0000 Subject: [PATCH 2/2] review: address PR feedback from CodeRabbit and Gemini MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revert `Single` and `Master-slave` min-version cells to `any` in the Topologies table. Adding 5.6 to CI doesn't narrow the tool's actual floor — dbdeployer still works with 5.5 and earlier (ts/setup.go default list includes 5.5, functional tests cover older versions). - Simplify the new `5.6.x` row in the Supported Versions table. The GTID and topology-exclusion notes belong in the Topologies table that follows; the 5.7.x row doesn't annotate them either. - Dedupe the tarball-selection logic in integration_tests.yml by computing it once in a "Resolve tarball name" step and exporting via $GITHUB_ENV for Download and Unpack to consume. --- .github/workflows/integration_tests.yml | 13 ++++++------- website/src/content/docs/providers/mysql.md | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 313ba8e..a53b65c 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -48,7 +48,7 @@ jobs: path: /tmp/mysql-tarball key: mysql-${{ matrix.mysql-version }}-linux-x86_64-v1 - - name: Download MySQL + - name: Resolve tarball name run: | SHORT_VER=$(echo "$MYSQL_VERSION" | grep -oP '^\d+\.\d+') # MySQL 5.6 ships as .tar.gz built against glibc2.12; 5.7+ ships @@ -58,6 +58,11 @@ jobs: else TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" fi + echo "SHORT_VER=$SHORT_VER" >> "$GITHUB_ENV" + echo "TARBALL=$TARBALL" >> "$GITHUB_ENV" + + - name: Download MySQL + run: | mkdir -p /tmp/mysql-tarball if [ ! -f "/tmp/mysql-tarball/$TARBALL" ]; then echo "Downloading $TARBALL..." @@ -71,12 +76,6 @@ jobs: - name: Unpack MySQL run: | mkdir -p "$SANDBOX_BINARY" - SHORT_VER=$(echo "$MYSQL_VERSION" | grep -oP '^\d+\.\d+') - if [ "$SHORT_VER" = "5.6" ]; then - TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.12-x86_64.tar.gz" - else - TARBALL="mysql-${MYSQL_VERSION}-linux-glibc2.17-x86_64.tar.xz" - fi ./dbdeployer unpack "/tmp/mysql-tarball/$TARBALL" \ --sandbox-binary="$SANDBOX_BINARY" diff --git a/website/src/content/docs/providers/mysql.md b/website/src/content/docs/providers/mysql.md index 6d4478f..bcfddf4 100644 --- a/website/src/content/docs/providers/mysql.md +++ b/website/src/content/docs/providers/mysql.md @@ -85,7 +85,7 @@ dbdeployer deploy single lab_8.0.35 | Series | Status | Topologies | |--------|--------|-----------| -| 5.6.x | Legacy | single, replication (GTID 5.6.9+), fan-in/all-masters unsupported | +| 5.6.x | Legacy | single, replication | | 5.7.x | Legacy | single, replication, group (5.7.17+) | | 8.0.x | Stable | all topologies | | 8.4.x | LTS (recommended) | all topologies | @@ -97,8 +97,8 @@ All topologies are deployed with `dbdeployer deploy replication --topo | Topology | Flag | Min Version | |----------|------|-------------| -| Single | `deploy single` | 5.6 | -| Master-slave | `--topology=master-slave` (default) | 5.6 | +| Single | `deploy single` | any | +| Master-slave | `--topology=master-slave` (default) | any | | Group Replication | `--topology=group` | 5.7.17 | | Single-primary GR | `--topology=group --single-primary` | 5.7.17 | | InnoDB Cluster | `--topology=innodb-cluster` | 8.0 |