From afcd41481e3d87746a4dd934cbc20d152cc85300 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Pialasse Date: Fri, 7 Mar 2025 22:32:45 -0500 Subject: [PATCH] * Fri Mar 07 2025 Jean-Philippe Pialasse 11.0.0-9.sme - upgrade to support mariadb 11.4 [SME: 12930] move mariadb-upgrade to mysql.init unit, remove duplicate in 00_restore_dumped_dbs and 10mysql_upgrade add our tmp.d add post action dnf script update mariadb.service.d/ content set default to utfmb4 - TODO mysql.dump filtering [SME: 12592] - TODO feedback plugin [SME: 12897] * Sun Jan 26 2025 Jean-Philippe Pialasse 11.0.0-8.sme - prestart script requires daemontools bins [SME: 12566] --- createlinks | 2 -- .../post-transaction-actions.d/mariadb.action | 2 ++ .../e-smith/sql/init/00_restore_dumped_dbs | 1 - .../etc/e-smith/sql/init/10mysql_upgrade | 16 ---------- .../e-smith/templates/etc/my.cnf/001client | 3 ++ .../etc/e-smith/templates/etc/my.cnf/003mysql | 3 ++ .../e-smith/templates/etc/my.cnf/006charset | 11 +++++++ .../system/mariadb.service.d/50koozali.conf | 15 +++++++-- .../usr/lib/systemd/system/mysql.init.service | 2 ++ root/usr/lib/tmpfiles.d/smemariadb.conf | 1 + smeserver-mysql.spec | 32 +++++++++++++------ 11 files changed, 57 insertions(+), 31 deletions(-) create mode 100644 root/etc/dnf/plugins/post-transaction-actions.d/mariadb.action delete mode 100644 root/etc/e-smith/templates/etc/e-smith/sql/init/10mysql_upgrade create mode 100644 root/etc/e-smith/templates/etc/my.cnf/001client create mode 100644 root/etc/e-smith/templates/etc/my.cnf/003mysql create mode 100644 root/etc/e-smith/templates/etc/my.cnf/006charset create mode 100644 root/usr/lib/tmpfiles.d/smemariadb.conf diff --git a/createlinks b/createlinks index 032607d..55ee390 100755 --- a/createlinks +++ b/createlinks @@ -41,7 +41,6 @@ foreach (qw( # Move all database dumps except for mysql.dump to sql/init event_link("mysql-load-tables", $event, "40"); -templates2events("/etc/e-smith/sql/init/10mysql_upgrade", $event); #-------------------------------------------------- @@ -70,7 +69,6 @@ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.in safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyslog"); # Move all database dumps except for mysql.dump to sql/init event_link("mysql-load-tables", $event, "40"); -templates2events("/etc/e-smith/sql/init/10mysql_upgrade", $event); templates2events("/etc/rsyslog.conf", $event); # systemd-specific action mandatory for this package-update event diff --git a/root/etc/dnf/plugins/post-transaction-actions.d/mariadb.action b/root/etc/dnf/plugins/post-transaction-actions.d/mariadb.action new file mode 100644 index 0000000..a4a31dd --- /dev/null +++ b/root/etc/dnf/plugins/post-transaction-actions.d/mariadb.action @@ -0,0 +1,2 @@ +mariadb*:any:/sbin/e-smith/signal-event smeserver-mysql-update +MariaDB*:any:/sbin/e-smith/signal-event smeserver-mysql-update diff --git a/root/etc/e-smith/templates/etc/e-smith/sql/init/00_restore_dumped_dbs b/root/etc/e-smith/templates/etc/e-smith/sql/init/00_restore_dumped_dbs index c302c14..6e08a17 100644 --- a/root/etc/e-smith/templates/etc/e-smith/sql/init/00_restore_dumped_dbs +++ b/root/etc/e-smith/templates/etc/e-smith/sql/init/00_restore_dumped_dbs @@ -2,7 +2,6 @@ ( cat /home/e-smith/db/mysql/mysql.dump ; cat /var/lib/mysql.private/set.password ) | mysql || exit 1 -/usr/bin/mysql_upgrade /bin/rm /var/run/mariadb/mariadb.pid /usr/bin/systemctl restart mariadb.service for i in $(seq 1 20); diff --git a/root/etc/e-smith/templates/etc/e-smith/sql/init/10mysql_upgrade b/root/etc/e-smith/templates/etc/e-smith/sql/init/10mysql_upgrade deleted file mode 100644 index 3da5e80..0000000 --- a/root/etc/e-smith/templates/etc/e-smith/sql/init/10mysql_upgrade +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -/usr/bin/mysql_upgrade - -/bin/rm /var/run/mariadb/mariadb.pid -/usr/bin/systemctl restart mariadb.service -for i in $(seq 1 20); -do - if [ -f /var/run/mariadb/mariadb.pid ] - then - exit 0 - fi - echo waiting for mysqld to restart - sleep 1 -done -echo mysqld failed to restart -exit 1 diff --git a/root/etc/e-smith/templates/etc/my.cnf/001client b/root/etc/e-smith/templates/etc/my.cnf/001client new file mode 100644 index 0000000..e6780c7 --- /dev/null +++ b/root/etc/e-smith/templates/etc/my.cnf/001client @@ -0,0 +1,3 @@ +[client] +default-character-set = utf8mb4 + diff --git a/root/etc/e-smith/templates/etc/my.cnf/003mysql b/root/etc/e-smith/templates/etc/my.cnf/003mysql new file mode 100644 index 0000000..3afe8b3 --- /dev/null +++ b/root/etc/e-smith/templates/etc/my.cnf/003mysql @@ -0,0 +1,3 @@ +[mysql] +default-character-set = utf8mb4 + diff --git a/root/etc/e-smith/templates/etc/my.cnf/006charset b/root/etc/e-smith/templates/etc/my.cnf/006charset new file mode 100644 index 0000000..6477ad9 --- /dev/null +++ b/root/etc/e-smith/templates/etc/my.cnf/006charset @@ -0,0 +1,11 @@ +{ +# starting mariadb 10.6 , utf8 changes to utf8mb3 (as utf8 used to be an alias of utfmb3) +# utf8 will soon be an alias of utf8mb4, and more and mroe db are demanding utf8mb4 +# so we are better default to it in 2025. +# old-mode will force utf8mb3 for character-set-system +} +character-set-client-handshake = FALSE +collation-server = utf8mb4_unicode_ci +init-connect = 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci' +character-set-server = utf8mb4 +old-mode = '' diff --git a/root/usr/lib/systemd/system/mariadb.service.d/50koozali.conf b/root/usr/lib/systemd/system/mariadb.service.d/50koozali.conf index 0a41987..f8de643 100644 --- a/root/usr/lib/systemd/system/mariadb.service.d/50koozali.conf +++ b/root/usr/lib/systemd/system/mariadb.service.d/50koozali.conf @@ -4,23 +4,32 @@ After=syslog.target After=network.target [Service] -#allow our expand-templates +#allow to run as root pre and post PermissionsStartOnly=true #reset ExecStartPre= +ExecStartPre=/usr/bin/install -d /var/run/mariadb -o mysql -g mysql -m 0755 + +# add mariadb >=10.6 specifics +ExecStartPre=/bin/sh -c "systemctl unset-environment _WSREP_START_POSITION" +ExecStartPre=/bin/sh -c "[ ! -e /usr/bin/galera_recovery ] && VAR= || \ + VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] \ + && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1" + #ours : we need root user as + and ! are not yet supported -ExecStartPre=/usr/libexec/mysql-check-socket +#ExecStartPre=/usr/libexec/mysql-check-socket ExecStartPre=-/sbin/e-smith/service-status mariadb ExecStartPre=-/sbin/e-smith/expand-template /var/lib/mysql.private/set.password ExecStartPre=-/sbin/e-smith/expand-template /root/.my.cnf ExecStartPre=-/sbin/e-smith/expand-template /etc/my.cnf +# create db here if needed ExecStartPre=/sbin/e-smith/systemd/mariadb-initialize #reset ExecStart= #ours -ExecStart=/usr/libexec/mysqld \ +ExecStart=/usr/sbin/mariadbd \ --defaults-file=/etc/my.cnf \ --basedir=/usr \ --datadir=/var/lib/mysql \ diff --git a/root/usr/lib/systemd/system/mysql.init.service b/root/usr/lib/systemd/system/mysql.init.service index cb8c80d..26ff9ca 100644 --- a/root/usr/lib/systemd/system/mysql.init.service +++ b/root/usr/lib/systemd/system/mysql.init.service @@ -11,8 +11,10 @@ IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes +ExecStart=-/usr/bin/mariadb-upgrade ExecStart=/sbin/e-smith/systemd/mysql.init start ExecStop=/sbin/e-smith/systemd/mysql.init stop +SyslogIdentifier=mysql.init [Install] WantedBy=sme-server.target diff --git a/root/usr/lib/tmpfiles.d/smemariadb.conf b/root/usr/lib/tmpfiles.d/smemariadb.conf new file mode 100644 index 0000000..ba59d5b --- /dev/null +++ b/root/usr/lib/tmpfiles.d/smemariadb.conf @@ -0,0 +1 @@ +d /var/run/mariadb 0755 mysql mysql - diff --git a/smeserver-mysql.spec b/smeserver-mysql.spec index ec28ffe..b0e175c 100644 --- a/smeserver-mysql.spec +++ b/smeserver-mysql.spec @@ -2,7 +2,7 @@ Summary: Koozali SME Server specific mysql configuration and templates. %define name smeserver-mysql Name: %{name} %define version 11.0.0 -%define release 8 +%define release 9 Version: %{version} Release: %{release}%{?dist} License: GPL @@ -13,8 +13,7 @@ BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot BuildArchitectures: noarch Requires: mariadb-server # mariadb after 5.5 /in Centos 8 will package mysql_upgrade in mariadb-server-utils -Requires: /usr/bin/mysql_upgrade -Requires: mariadb > 10.5.0 +Requires: /usr/bin/mariadb-upgrade Requires: smeserver-base Requires: smeserver-lib >= 1.15.1-19 # daemontools bins in use @@ -22,6 +21,17 @@ Requires: /usr/bin/setuidgid Provides: e-smith-mysql = 2.7.0 Obsoletes: e-smith-mysql < 2.7.0 BuildRequires: smeserver-devtools >= 1.13.1-03 +# MariaDB from MariaDB repo +Requires: mariadb-server >= 10.6.0 +Requires: mariadb >= 10.6.0 +Requires: mariadb-backup +Requires: mariadb-connector-c >= 3.3.14 +Requires: mariadb-connector-c-config +Requires: MariaDB-connect-engine +Requires: MariaDB-gssapi-server +Requires: MariaDB-compat +Requires: mariadb-common ,mariadb-errmsg,mariadb-server-utils + AutoReqProv: no %description @@ -53,12 +63,6 @@ echo "%doc COPYING" >> %{name}-%{version}-filelist rm -rf $RPM_BUILD_ROOT %pre -if [ $1 -gt 1 ] ; then - if [ -e /var/service/mariadb/run ] ; then - /usr/bin/sv d mariadb - /usr/bin/sv d mariadb/log - fi -fi %post @@ -68,6 +72,16 @@ fi %defattr(-,root,root) %changelog +* Fri Mar 07 2025 Jean-Philippe Pialasse 11.0.0-9.sme +- upgrade to support mariadb 11.4 [SME: 12930] + move mariadb-upgrade to mysql.init unit, remove duplicate in 00_restore_dumped_dbs and 10mysql_upgrade + add our tmp.d + add post action dnf script + update mariadb.service.d/ content + set default to utfmb4 +- TODO mysql.dump filtering [SME: 12592] +- TODO feedback plugin [SME: 12897] + * Sun Jan 26 2025 Jean-Philippe Pialasse 11.0.0-8.sme - prestart script requires daemontools bins [SME: 12566]