Merge pull request #113487 from aanderse/nixos/galera

nixos/mysql: properly configure mariadb for galera recovery

Changed files
+13 -2
nixos
modules
services
databases
+13 -2
nixos/modules/services/databases/mysql.nix
···
fi
'';
+
script = ''
+
# https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/#systemd-and-galera-recovery
+
if test -n "''${_WSREP_START_POSITION}"; then
+
if test -e "${cfg.package}/bin/galera_recovery"; then
+
VAR=$(cd ${cfg.package}/bin/..; ${cfg.package}/bin/galera_recovery); [[ $? -eq 0 ]] && export _WSREP_START_POSITION=$VAR || exit 1
+
fi
+
fi
+
+
# The last two environment variables are used for starting Galera clusters
+
exec ${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
+
'';
+
postStart = let
# The super user account to use on *first* run of MySQL server
superUser = if isMariaDB then cfg.user else "root";
···
Type = if hasNotify then "notify" else "simple";
Restart = "on-abort";
RestartSec = "5s";
-
# The last two environment variables are used for starting Galera clusters
-
ExecStart = "${cfg.package}/bin/mysqld --defaults-file=/etc/my.cnf ${mysqldOptions} $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION";
+
# User and group
User = cfg.user;
Group = cfg.group;