[community-mysql] Check upgrade script added to warn about need for mysql_upgrade
Honza Horak
hhorak at fedoraproject.org
Tue Sep 30 16:02:44 UTC 2014
commit 0d2208e0ac88b6664f5e512f2dc92dca12729ded
Author: Honza Horak <hhorak at redhat.com>
Date: Mon Sep 29 16:05:17 2014 +0200
Check upgrade script added to warn about need for mysql_upgrade
community-mysql-scripts.patch | 3 ++-
community-mysql.spec | 12 +++++++++---
mysql-check-upgrade.sh | 39 +++++++++++++++++++++++++++++++++++++++
mysql-prepare-db-dir.sh | 2 ++
mysql.service.in | 1 +
5 files changed, 53 insertions(+), 4 deletions(-)
---
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 <hhorak at redhat.com> - 5.6.21-3
+- Check upgrade script added to warn about need for mysql_upgrade
+
* Thu Sep 25 2014 Bjorn Munch <bjorn.munch at oracle.com> - 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+ at 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 <<EOF >&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 at .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
More information about the scm-commits
mailing list