Skip to content
/ server Public

MDEV-30953 Add mariadb server galera package#4644

Open
grooverdan wants to merge 3 commits intoMariaDB:12.3from
grooverdan:12.3-MDEV-30953-mariadb-server-galera
Open

MDEV-30953 Add mariadb server galera package#4644
grooverdan wants to merge 3 commits intoMariaDB:12.3from
grooverdan:12.3-MDEV-30953-mariadb-server-galera

Conversation

@grooverdan
Copy link
Member

MDEV-38744 remove galera dependency from server packages, broke the ability of a user to easily install a Galera system.

This broke the container builds in CI.

Rather than leaving a bunch of galera scripts in the server package (that cannot be run without dependencies), lets complete the transition and provide something useful for Galera users and the MariaDB container.

Because a MariaDB-server-galera configuration on the user side is now explicit, we enable minimum galera configuration for the Deb installation.

@grooverdan grooverdan added the MariaDB Foundation Pull requests created by MariaDB Foundation label Feb 13, 2026
@grooverdan grooverdan requested a review from ottok February 13, 2026 02:25
@ottok
Copy link
Contributor

ottok commented Feb 13, 2026

I am trying to understand the context here. Seems branch 'main' got a865a7c five days ago and it was already released with MariaDB 12.3.1. The commit only has a title ("MDEV-38744 remove galera dependency from server packages") and no body. The Jira MDEV-38744 created 10 days ago has the description "remove galera dependency from server packages. from bintars too." and nothing else.

debian/control Outdated
${misc:Depends},
${shlibs:Depends}
Conflicts: mariadb-server (<< 12.3)
Breaks: mariadb-server (<< 1:12.3)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't tested, but I suspect this also needs a Replaces: mariadb-server (<< 1:12.3.2) and that all versions should be 1:12.3.2?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't check either, but we've moved files between packages in the past, there are examples in the history of how to set this up correctly.

Also, rpm packages might need similar conflicts/replaces. Again, drawing from earlier such cases.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we do Replaces: its a better experience for those using galera already.

For those not using galera already, gaining a 60-galera.cnf with uncommented configuration would a bit of a surprise.

I liked providing an uncommented 60-galera.cnf for new installs, but that goes against the concept of it being a Replaces package.

What would you like?

@grooverdan
Copy link
Member Author

I am trying to understand the context here. Seems branch 'main' got a865a7c five days ago and it was already released with MariaDB 12.3.1. The commit only has a title ("MDEV-38744 remove galera dependency from server packages") and no body. The Jira MDEV-38744 created 10 days ago has the description "remove galera dependency from server packages. from bintars too." and nothing else.

Yep, I'm ranting a bit on this already, because the context is new to me too. Since its also excluded from the release mirrors and archives and release notes.
😡 .

Thanks for the rest of the comments.

@janlindstrom
Copy link
Contributor

I do not know is this good solution. I have advocated that galera library should be submodule or external project for server so that bind between server release and galera library would be more explicit. But, it naturally effects on packages so not sure if it doable.

@ottok
Copy link
Contributor

ottok commented Feb 13, 2026

I do not know is this good solution. I have advocated that galera library should be submodule or external project for server so that bind between server release and galera library would be more explicit. But, it naturally effects on packages so not sure if it doable.

For the purposes of packaging it does not matter if Galera is a submodule or how it is done. For example libmariadb is a submodule but built and shipped with the server.

I guess the main question here is what is the goal, and then that dictates what is the best path to it.

@vuvova vuvova self-assigned this Feb 16, 2026
@vuvova vuvova self-requested a review February 16, 2026 13:03
@janlindstrom
Copy link
Contributor

Firstly, both commit comment and description in MDEV lacks reasoning and details. Bare minimum for both is
(1) Reasoning why this change is done
(2) What files and dependencies are moved to this new package
(3) How this effects server .deb, .rpm, bintar, etc releases
(4) What this new package actually will contain, does it also contain Galera library ? If user want's to use Galera, it is not possible without library. Having one package for others and second for library does not make sense.
(5) How migration from current package contents to new package contents is handled (for both server package and this new package)

@grooverdan
Copy link
Member Author

@janlindstrom I've put a descriptive commit for now. Covering the previous questions.

I do not know is this good solution. I have advocated that galera library should be submodule or external project for server so that bind between server release and galera library would be more explicit. But, it naturally effects on packages so not sure if it doable.

On options, galera's intermediate state between a implementation with strong ties to the server implementation is there (from the previous compatibility requirements between them) and the (semi) external project appears contradictory to this. Some resolution would be nice.

This is proving an easy of install of MariaDB+galera and leaves MariaDB-server as a Deb/RPM without explicitly galera only dependencies. A migration to a fully external or even coming a server submodule could still be served by this overarching packaging.

I haven't yet incorporated Otto's review comments, but they won't be forgotten. Getting a concept approved is a good first step.

@janlindstrom
Copy link
Contributor

@grooverdan Unfortunately, new commit comment is not answering my questions.

Firstly, add description, reasoning and goal to MDEV-30953 and make sure you have answered questions raised here except the fact is galera submodule or not.

Similarly, enhance commit comment based on above description ,reasoning and goal.
e.g. "This broke the container builds in CI." , what builds, where, why ??

I can't approve something that I do not yet fully understand.

Copy link
Member

@vuvova vuvova left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing it! I personally wanted it for quite a long time, but was never sure that benefits would overweight the introduced incompatibility.

See comments inline.

SETA(CPACK_RPM_server_galera_PACKAGE_REQUIRES
"galera-4" "rsync" "lsof" "grep" "gawk" "iproute"
"coreutils" "findutils" "tar")
SETA(CPACK_RPM_server_PACKAGE_RECOMMENDS "pv")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd say that either Server_Galera should require all this unconditionally (not depending on WITH_WSREP) or Server_Galera should be added to CPACK_COMPONENTS_ALL conditionally.
That is, either MariaDB_server_galera does not depend on WITH_WSREP at all, or it's not even built without wsrep. The latter makes more sense to me.

Also, why pv is still a server dependency? you didn't do it in deb

And MariaDB_galera_server should require MariaDB_server, like you did in debs.

A question — should MariaDB-test require server or server-galera? I don't have a strong opinion on that. Or require server and recommend server-galera? Both in rpm and deb, of course

debian/control Outdated
${misc:Depends},
${shlibs:Depends}
Conflicts: mariadb-server (<< 12.3)
Breaks: mariadb-server (<< 1:12.3)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't check either, but we've moved files between packages in the past, there are examples in the history of how to set this up correctly.

Also, rpm packages might need similar conflicts/replaces. Again, drawing from earlier such cases.

illuusio and others added 2 commits March 4, 2026 18:08
MDEV-38744 removed the galera as a server dependency,
and we've decided to put it back.

While we put it back and there's a fresh release
series, lets incorporate some packaging improvements.

Historicly, since 10.1 when Galera became part
of the server the MariaDB-server package included
all the dependencies of Galera, its SST scripts,
in case the user wanted the. There where many
cases where this wasn't the case. As we
separate out to a separate mariadb-server-galera
package, we give the option if they want a
galera install and have its dependencies, or
a more minimal installation.

To facilitate this:

Add new package mariadb-server-galera to Debian to
recude mariadb-server package dependencies.
Galera cluster scripts and libraries are currently
in package mariadb-server. Move Galera cluster
scripts and libraries to new package mariadb-server-galera
as most of the people does not need them and
it allows to slim down mariadb-server package

More explictly:

As such this moves the following files that were previously
in the MariaDB-server packgage to the MariaDB-server-galera package:
* README-wsrep
* Galera SST scripts
* /etc/systemd/system/mariadb@bootstrap.service.d/use_galera_new_cluster.conf

The dependencies of the Galera SST scripts are moved to
the dependencies of the MariaDB-server-galera package.

As the installation of this package is a key indication that
galera is required 60-galera.cnf in the configuration has
explict galera required configuration items set. The
wsrep_cluster_address will however be required to be set by the
user.

The galera-4 is also a dependency of MariaDB-server-galera package
rather than the MariaDB-server package.

MariaDB users previously using galera installed instance, that are
doing a major upgrade will need to be aware that the new package
is required.

Non-galera users during a major upgrade are going to get a slightly
smaller install, and a bunch of previous installed dependencies that
are no longer required and can be removed.

The mariadb-test package change its dependency from mariadb-server
to mariadb-server-galera so all the requirement of the server
are there.

Updated/Edited by: Daniel Black <daniel@mariadb.org>
@grooverdan grooverdan force-pushed the 12.3-MDEV-30953-mariadb-server-galera branch from 6f06479 to 39b53e4 Compare March 4, 2026 07:34
Following the previous commit, we apply the same
to RPM.

Add new package Mariadb-server-galera to RPM build
recude mariadb-server package dependencies.
Galera cluster scripts and libraries are currently
in package mariadb-server. Move Galera cluster
scripts and libraries to new package mariadb-server-galera
as most of the people does not need them and
it allows to slim down mariadb-server package

The MariaDB-test package unlike its Debian
equal, didn't depend on the MariaDB-server
(and now it does), except if WITH_WSREP is
specified in which case it depends on the
MariaDB-server-galera package

Also from a865a7c
lsof, socat and pv are RECOMMENDS.
* lsof/socat - when selinux is enabled, these aren't used
* pv - the galera sst scripts will silently ignore its absence

Updated/Edited by: Daniel Black <daniel@mariadb.org>
@grooverdan grooverdan force-pushed the 12.3-MDEV-30953-mariadb-server-galera branch from 39b53e4 to ebd529f Compare March 4, 2026 08:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

MariaDB Foundation Pull requests created by MariaDB Foundation

Development

Successfully merging this pull request may close these issues.

5 participants