6 Commits

Author SHA1 Message Date
trevorb
c310fbff74 update check if mariadb running and exit 2025-07-21 14:28:17 +10:00
trevorb
17c47013a1 fix to allow upgrade of innodb to new pagesize as required by 12982 on install [SME: 13083] 2025-07-21 10:08:31 +10:00
cd59e93ccb * Thu Jun 05 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-17.sme
- fix conflict with MariaDB-server-compat [SME: 13024]
2025-06-05 16:23:33 -04:00
87537e32b8 * Wed May 14 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-16.sme
- fix conflict with MariaDB-client-compat [SME: 13005]
2025-05-14 23:27:01 -04:00
037347ecaa * Sun Apr 20 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-15.sme
- set innodb_page_size=64k [SME: 12982]
  breaking change, needs backup and restore of mariadb databases
- convert mysql* bins call to mariadb-* [SME: 12983]
- revert [SME: 12591]
2025-04-21 22:15:41 -04:00
7d26d7368d * Sun Apr 20 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-14.sme
- set innodb_page_size=64k [SME: 12982]
  breaking change, needs backup and restore of mariadb databases
- convert mysql* bins call to mariadb-* [SME: 12983]
- revert [SME: 12591]
2025-04-20 00:53:33 -04:00
9 changed files with 87 additions and 36 deletions

View File

@@ -3,20 +3,21 @@
use esmith::Build::CreateLinks qw(:all); use esmith::Build::CreateLinks qw(:all);
# we add few link fromn old mysql things to mariadb things # we add few link fromn old mysql things to mariadb things
safe_symlink("/usr/bin/mariadb-dump","root/usr/bin/mysqldump"); # some are provided by MariaDB-client-compat
safe_symlink("/usr/bin/mariadb-dumpslow","root/usr/bin/mysqldumpslow"); #safe_symlink("/usr/bin/mariadb-dump","root/usr/bin/mysqldump");
safe_symlink("/usr/bin/mariadb-check","root/usr/bin/mysqlcheck"); #safe_symlink("/usr/bin/mariadb-dumpslow","root/usr/bin/mysqldumpslow");
safe_symlink("/usr/bin/mariadb-admin","root/usr/bin/mysqladmin"); #safe_symlink("/usr/bin/mariadb-check","root/usr/bin/mysqlcheck");
safe_symlink("/usr/bin/mariadb-show","root/usr/bin/mysqlshow"); #safe_symlink("/usr/bin/mariadb-admin","root/usr/bin/mysqladmin");
safe_symlink("/usr/bin/mariadb-upgrade","root/usr/bin/mysql_upgrade"); #safe_symlink("/usr/bin/mariadb-show","root/usr/bin/mysqlshow");
safe_symlink("/usr/bin/mariadb","root/usr/bin/mysql"); #safe_symlink("/usr/bin/mariadb-upgrade","root/usr/bin/mysql_upgrade");
safe_symlink("/usr/bin/mariadb-access","root/usr/bin/mysqlaccess"); #safe_symlink("/usr/bin/mariadb","root/usr/bin/mysql");
safe_symlink("/usr/bin/mariadb-binlog","root/usr/bin/mysqlbinlog"); #safe_symlink("/usr/bin/mariadb-access","root/usr/bin/mysqlaccess");
safe_symlink("/usr/bin/mariadb-convert-table-format","root/usr/bin/mysql_convert_table_format"); #safe_symlink("/usr/bin/mariadb-binlog","root/usr/bin/mysqlbinlog");
safe_symlink("/usr/bin/mariadb-find-rows","root/usr/bin/mysql_find_rows"); #safe_symlink("/usr/bin/mariadb-convert-table-format","root/usr/bin/mysql_convert_table_format");
safe_symlink("/usr/bin/mariadb-fix-extensions","root/usr/bin/mysql_fix_extensions"); #safe_symlink("/usr/bin/mariadb-find-rows","root/usr/bin/mysql_find_rows");
safe_symlink("/usr/bin/mariadb-install-db","root/usr/bin/mysql_install_db"); #safe_symlink("/usr/bin/mariadb-fix-extensions","root/usr/bin/mysql_fix_extensions");
safe_symlink("/usr/bin/mariadb-embedded","root/usr/bin/mysql_embedded"); #safe_symlink("/usr/bin/mariadb-install-db","root/usr/bin/mysql_install_db");
#safe_symlink("/usr/bin/mariadb-embedded","root/usr/bin/mysql_embedded");
#-------------------------------------------------- #--------------------------------------------------
# pre-backup actions # pre-backup actions
@@ -80,6 +81,13 @@ foreach (qw(
templates2events("$_", $event); templates2events("$_", $event);
} }
#--------------------------------------------------
# actions for post-install event
#--------------------------------------------------
$event = "post-install";
event_link("mysql-update-innodb-page-size", $event, "03");
safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mariadb"); safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mariadb");
safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init"); safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");
safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyslog"); safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/rsyslog");

View File

@@ -18,12 +18,12 @@ onfailure () {
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin
fi fi
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB."
mysqldump --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 mariadb-dump --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2
if [ "$fixtables" = "enabled" ]; then if [ "$fixtables" = "enabled" ]; then
repair="failure" repair="failure"
message="$message \nTrying to auto-repair the db and do a backup after..." message="$message \nTrying to auto-repair the db and do a backup after..."
mysqlcheck -s --auto-repair -c "$db" && \ mariadb-check -s --auto-repair -c "$db" && \
mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" mariadb-dump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success"
message="$message \n => $repair" message="$message \n => $repair"
fi fi
echo $message echo $message
@@ -37,17 +37,18 @@ then
fi fi
for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$")
do do
mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db mariadb-dump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db
done done
# double usage as already in mysql.dump
# dump user privileges # dump user privileges
mysqldump --system=users --insert-ignore > /home/e-smith/db/mysql/mysql.privileges.dump #mariadb-dump --system=users --insert-ignore > /home/e-smith/db/mysql/mysql.privileges.dump
# dump plugins # dump plugins
mysqldump --system=plugins --insert-ignore > /home/e-smith/db/mysql/mysql.plugins.dump #mariadb-dump --system=plugins --insert-ignore > /home/e-smith/db/mysql/mysql.plugins.dump
# dump udfs # dump udfs
mysqldump --system=udfs --insert-ignore > /home/e-smith/db/mysql/mysql.udfs.dump #mariadb-dump --system=udfs --insert-ignore > /home/e-smith/db/mysql/mysql.udfs.dump
# dump servers # dump servers
mysqldump --system=servers --insert-ignore > /home/e-smith/db/mysql/mysql.servers.dump #mariadb-dump --system=servers --insert-ignore > /home/e-smith/db/mysql/mysql.servers.dump
# dump stats # dump stats
mysqldump --system=stats --insert-ignore > /home/e-smith/db/mysql/mysql.stats.dump #mariadb-dump --system=stats --insert-ignore > /home/e-smith/db/mysql/mysql.stats.dump
# dump timezones # dump timezones
mysqldump --system=timezones --insert-ignore > /home/e-smith/db/mysql/mysql.timezones.dump #mariadb-dump --system=timezones --insert-ignore > /home/e-smith/db/mysql/mysql.timezones.dump

View File

@@ -0,0 +1,21 @@
#!/bin/sh
event=$1
# check event is defined or return
[[ -z "$event" ]] && exit 0
# check we run as post-install event or return
[[ "$event" == "post-install" ]] || exit 0
# check mariadb is not running or return
/usr/bin/pgrep mariadbd && exit 0
# ONLY delete the mysql data dirictory if it is initial state
# we assume if only mysql, test, sys and performance_schema this is the case
validdirs="/var/lib/mysql/mysql/ /var/lib/mysql/performance_schema/ /var/lib/mysql/sys/ /var/lib/mysql/test/"
for dir in $(ls -d /var/lib/mysql/*/) ; do
[[ $(echo ${validdirs} | grep ${dir}) ]] || exit 0
done
# we should be safe to reset dir content
# we use find as glob will ignore dot starting filename
# rm -rf /var/lib/mysql/*
find /var/lib/mysql -mindepth 1 -maxdepth 1 -print0 | xargs -0 rm -rf
exit 0

View File

@@ -5,8 +5,8 @@
# non RH ocmpiled version of mariadb limits MyISAM index to 1000 bytes, newer mysql db use Aria as engine for those tables # non RH ocmpiled version of mariadb limits MyISAM index to 1000 bytes, newer mysql db use Aria as engine for those tables
( /usr/bin/mysql_filter_user_table /home/e-smith/db/mysql/mysql.dump |sed -e 's/ENGINE=MyISAM/ENGINE=Aria/'; ( /usr/bin/mysql_filter_user_table /home/e-smith/db/mysql/mysql.dump |sed -e 's/ENGINE=MyISAM/ENGINE=Aria/';
[ -f /home/e-smith/db/mysql/mysql.privileges.dump ] && cat /home/e-smith/db/mysql/mysql.privileges.dump; [ -f /home/e-smith/db/mysql/mysql.privileges.dump ] && cat /home/e-smith/db/mysql/mysql.privileges.dump;
cat /var/lib/mysql.private/set.password ) | mysql || exit 1 cat /var/lib/mysql.private/set.password ) | mariadb || exit 1
/usr/bin/mysql_upgrade /usr/bin/mariadb-upgrade
/bin/rm /run/mariadb/mariadb.pid /bin/rm /run/mariadb/mariadb.pid
/usr/bin/systemctl restart mariadb.service /usr/bin/systemctl restart mariadb.service
for i in $(seq 1 20); for i in $(seq 1 20);
@@ -14,11 +14,11 @@ do
if [ -f /run/mariadb/mariadb.pid ] if [ -f /run/mariadb/mariadb.pid ]
then then
/bin/rm /home/e-smith/db/mysql/mysql.dump /bin/rm /home/e-smith/db/mysql/mysql.dump
[ -f /home/e-smith/db/mysql/mysql.privileges.dump ] /bin/rm /home/e-smith/db/mysql/mysql.privileges.dump [ -f /home/e-smith/db/mysql/mysql.privileges.dump ] && /bin/rm /home/e-smith/db/mysql/mysql.privileges.dump
exit 0 exit 0
fi fi
echo waiting for mysqld to restart echo waiting for mariadb to restart
sleep 1 sleep 1
done done
echo mysqld failed to restart echo mariadb failed to restart
exit 1 exit 1

View File

@@ -2,4 +2,9 @@
#innodb #innodb
{# enabled is already the default {# enabled is already the default
}innodb_file_per_table={ $mariadb{'innodb_file_per_table'}||'1' } }innodb_file_per_table={ $mariadb{'innodb_file_per_table'}||'1' }
# innodb_strict_mode = 0
# higher size see SME 12982
innodb_page_size=64k
innodb_log_buffer_size={ $mariadb{'innodb_log_buffer_size='}||'32M' }
innodb_buffer_pool_size={ $mariadb{'innodb_buffer_pool_size'}||'512M' }

View File

@@ -41,8 +41,8 @@ if ( ($runlevel ne 'multi-user.target' && $runlevel ne "sme-server.target") ||
{ {
# Find our mysqld binary # Find our mysqld binary
my $mysqld = "/usr/libexec/mysqld"; my $mysqld = "/usr/libexec/mysqld";
if (-f "/usr/sbin/mysqld") { if (-f "/usr/sbin/mariadbd") {
$mysqld = "/usr/sbin/mysqld"; $mysqld = "/usr/sbin/mariadbd";
} }
# Hard-code user, since it is set in mysqld_safe currently. # Hard-code user, since it is set in mysqld_safe currently.
# See http://bugs.mysql.com/2163 # See http://bugs.mysql.com/2163

View File

@@ -46,13 +46,13 @@ do
F=$(basename $link | sed 's/S\?[0-9][0-9]_\?//') F=$(basename $link | sed 's/S\?[0-9][0-9]_\?//')
case $F in case $F in
*.sql) *.sql)
action "Loading $F into mysql" perl -e ' action "Loading $F into mariadb" perl -e '
open (STDERR, "|/usr/bin/logger -p local1.info -t mysql.init"); open (STDERR, "|/usr/bin/logger -p local1.info -t mysql.init");
open (STDOUT, ">&STDERR"); open (STDOUT, ">&STDERR");
exec "/usr/bin/mysql";' < $link && /bin/rm $link exec "/usr/bin/mariadb";' < $link && /bin/rm $link
;; ;;
*) *)
action "Loading $F into mysql" perl -e ' action "Loading $F into mariadb" perl -e '
open (STDERR, "|/usr/bin/logger -p local1.info -t mysql.init"); open (STDERR, "|/usr/bin/logger -p local1.info -t mysql.init");
open (STDOUT, ">&STDERR"); open (STDOUT, ">&STDERR");
exec shift; ' $link && /bin/rm $link exec shift; ' $link && /bin/rm $link

View File

@@ -18,7 +18,6 @@ ExecStartPre=/bin/sh -c "[ ! -e /usr/bin/galera_recovery ] && VAR= || \
&& systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1" && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1"
#ours : we need root user as + and ! are not yet supported #ours : we need root user as + and ! are not yet supported
#ExecStartPre=/usr/libexec/mysql-check-socket
ExecStartPre=-/sbin/e-smith/service-status mariadb 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 /var/lib/mysql.private/set.password
ExecStartPre=-/sbin/e-smith/expand-template /root/.my.cnf ExecStartPre=-/sbin/e-smith/expand-template /root/.my.cnf

View File

@@ -2,7 +2,7 @@ Summary: Koozali SME Server specific mysql configuration and templates.
%define name smeserver-mysql %define name smeserver-mysql
Name: %{name} Name: %{name}
%define version 11.0.0 %define version 11.0.0
%define release 13 %define release 18
Version: %{version} Version: %{version}
Release: %{release}%{?dist} Release: %{release}%{?dist}
License: GPL License: GPL
@@ -36,6 +36,8 @@ Requires: MariaDB-gssapi-server
# not available after 10.x # not available after 10.x
#Requires: MariaDB-compat #Requires: MariaDB-compat
Requires: mariadb-common ,mariadb-errmsg,mariadb-server-utils Requires: mariadb-common ,mariadb-errmsg,mariadb-server-utils
Requires: MariaDB-client-compat
Requires: MariaDB-server-compat
AutoReqProv: no AutoReqProv: no
@@ -79,6 +81,21 @@ rm -rf $RPM_BUILD_ROOT
%defattr(-,root,root) %defattr(-,root,root)
%changelog %changelog
* Mon Jul 21 2025 Trevor Batley <trevor@batley.id.au> 11.0.0-18.sme
- add fix to allow upgrade of innodb to new pagesize as required by 12982 on install [SME: 13083]
* Thu Jun 05 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-17.sme
- fix conflict with MariaDB-server-compat [SME: 13024]
* Wed May 14 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-16.sme
- fix conflict with MariaDB-client-compat [SME: 13005]
* Sun Apr 20 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-15.sme
- set innodb_page_size=64k [SME: 12982]
breaking change, needs backup and restore of mariadb databases
- convert mysql* bins call to mariadb-* [SME: 12983]
- revert [SME: 12591]
* Sun Apr 06 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-13.sme * Sun Apr 06 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-13.sme
- fix Specified key was too long with older mysql db tables [SME: 12980] - fix Specified key was too long with older mysql db tables [SME: 12980]
added back mysql_upgrade in 00_restore_dumped_dbs added back mysql_upgrade in 00_restore_dumped_dbs