diff --git a/community-mysql-scripts.patch b/community-mysql-scripts.patch index bc920a1..015e604 100644 --- a/community-mysql-scripts.patch +++ b/community-mysql-scripts.patch @@ -1,7 +1,7 @@ diff -rup mysql-5.6.19-orig/scripts/CMakeLists.txt mysql-5.6.19/scripts/CMakeLists.txt --- mysql-5.6.19-orig/scripts/CMakeLists.txt 2014-07-22 10:07:12.053410263 +0200 +++ mysql-5.6.19/scripts/CMakeLists.txt 2014-07-22 10:10:44.102502369 +0200 -@@ -381,6 +381,31 @@ ELSE() +@@ -381,6 +381,32 @@ ELSE() ENDIF() INSTALL_SCRIPT(${CMAKE_CURRENT_BINARY_DIR}/${file} COMPONENT ${${file}_COMPONENT}) ENDFOREACH() @@ -13,6 +13,7 @@ diff -rup mysql-5.6.19-orig/scripts/CMakeLists.txt mysql-5.6.19/scripts/CMakeLis + mysql-prepare-db-dir + mysql-wait-ready + mysql-check-socket ++ mysql-check-upgrade + mysql-scripts-common + mysql_config_multilib + mysql.init diff --git a/community-mysql.spec b/community-mysql.spec index 19c4019..c51a860 100644 --- a/community-mysql.spec +++ b/community-mysql.spec @@ -59,7 +59,7 @@ Name: %{pkgname} Version: 5.6.21 -Release: 2%{?dist} +Release: 3%{?dist} Summary: MySQL client programs and shared libraries Group: Applications/Databases URL: http://www.mysql.com @@ -80,7 +80,8 @@ Source12: mysql-prepare-db-dir.sh Source13: mysql-wait-ready.sh Source14: mysql-check-socket.sh Source15: mysql-scripts-common.sh -Source18: mysql.init.in +Source16: mysql-check-upgrade.sh +Source19: mysql.init.in # To track rpmlint warnings Source30: mysql-5.6.10-rpmlintrc @@ -403,7 +404,7 @@ add_test 'main.upgrade : unknown' popd cp %{SOURCE2} %{SOURCE3} %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} \ - %{SOURCE14} %{SOURCE15} %{SOURCE18} scripts + %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE19} scripts %build # fail quickly and obviously if user tries to build as root @@ -519,6 +520,7 @@ install -D -p -m 755 scripts/mysql.init %{buildroot}%{_initddir}/%{daemon_name} install -p -m 755 scripts/mysql-prepare-db-dir %{buildroot}%{_libexecdir}/mysql-prepare-db-dir install -p -m 755 scripts/mysql-wait-ready %{buildroot}%{_libexecdir}/mysql-wait-ready install -p -m 755 scripts/mysql-check-socket %{buildroot}%{_libexecdir}/mysql-check-socket +install -p -m 755 scripts/mysql-check-upgrade %{buildroot}%{_libexecdir}/mysql-check-upgrade install -p -m 644 scripts/mysql-scripts-common %{buildroot}%{_libexecdir}/mysql-scripts-common # mysql-test includes one executable that doesn't belong under /usr/share, @@ -852,6 +854,7 @@ fi %{_libexecdir}/mysql-prepare-db-dir %{_libexecdir}/mysql-wait-ready %{_libexecdir}/mysql-check-socket +%{_libexecdir}/mysql-check-upgrade %{_libexecdir}/mysql-scripts-common %{?with_init_systemd:%{_tmpfilesdir}/%{name}.conf} @@ -897,6 +900,9 @@ fi %endif %changelog +* Mon Sep 29 2014 Honza Horak - 5.6.21-3 +- Check upgrade script added to warn about need for mysql_upgrade + * Thu Sep 25 2014 Bjorn Munch - 5.6.21-2 - Using %%cmake macro break some tests, reverted - Unwanted dtrace dep fixed upstream diff --git a/mysql-check-upgrade.sh b/mysql-check-upgrade.sh new file mode 100644 index 0000000..43941b8 --- /dev/null +++ b/mysql-check-upgrade.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +source "`dirname ${BASH_SOURCE[0]}`/mysql-scripts-common" + +upgrade_info_file="$datadir/mysql_upgrade_info" +version=0 +# get version as integer from mysql_upgrade_info file +if [ -f "$upgrade_info_file" ] && [ -r "$upgrade_info_file" ] ; then + version_major=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\1/') + version_minor=$(cat "$upgrade_info_file" | head -n 1 | sed -e 's/\([0-9]*\)\.\([0-9]*\)\..*$/\2/') + if [[ $version_major =~ ^[0-9]+$ ]] && [[ $version_minor =~ ^[0-9]+$ ]] ; then + version=$((version_major*100+version_minor)) + fi +fi + +# compute current version as integer +thisversion=$((@MAJOR_VERSION@*100+@MINOR_VERSION@)) + +# provide warning in cases we should run mysql_upgrade +if [ $version -ne $thisversion ] ; then + + # give extra warning if some version seems to be skipped + if [ $version -gt 0 ] && [ $version -lt 505 ] ; then + echo "The datadir located at $datadir seems to be older than of a version 5.5. Please, mind that as a general rule, to upgrade from one release series to another, go to the next series rather than skipping a series." >&2 + fi + + cat <&2 +The datadir located at $datadir needs to be upgraded using 'mysql_upgrade' tool. This can be done using the following steps: + + 1. Back-up your data before running 'mysql_upgrade' + 2. Start the database daemon using 'systemctl start @DAEMON_NAME@.service' + 3. Run 'mysql_upgrade' with a database user that has sufficent privileges + +Read more about 'mysql_upgrade' usage at: +http://dev.mysql.com/doc/refman/5.6/en/mysql-upgrade.html +EOF +fi + +exit 0 diff --git a/mysql-prepare-db-dir.sh b/mysql-prepare-db-dir.sh index e1dad61..563f644 100644 --- a/mysql-prepare-db-dir.sh +++ b/mysql-prepare-db-dir.sh @@ -80,6 +80,8 @@ if [ ! -d "$datadir/mysql" ] ; then fi exit $ret fi + # upgrade does not need to be run on a fresh datadir + echo "@VERSION@" >"$datadir/mysql_upgrade_info" # In case we're running as root, make sure files are owned properly chown -R "$myuser:$mygroup" "$datadir" fi diff --git a/mysql.service.in b/mysql.service.in index 4c2b60a..a33df16 100644 --- a/mysql.service.in +++ b/mysql.service.in @@ -38,6 +38,7 @@ ExecStartPre=@libexecdir@/mysql-prepare-db-dir %n # per bug #547485 ExecStart=@bindir@/mysqld_safe --basedir=@prefix@ ExecStartPost=@libexecdir@/mysql-wait-ready $MAINPID +ExecStartPost=@libexecdir@/mysql-check-upgrade # Give a reasonable amount of time for the server to start up/shut down TimeoutSec=300