01.09.2018

MySQL 8: New Features

After installing mysql 8 on my ubuntu i did a lookaround for the new features. Oracle itself stated:

 
This is really cool, but how to test this?
A first look inside the standard data directory /var/lib/mysql shows:
/var/lib/mysql# ls -l
insgesamt 168012
-rw-r----- 1 mysql mysql       56 Aug 17 20:53 auto.cnf
-rw-r----- 1 mysql mysql      498 Aug 17 20:53 binlog.000001
-rw-r----- 1 mysql mysql      554 Aug 17 21:07 binlog.000002
-rw-r----- 1 mysql mysql       32 Aug 17 20:54 binlog.index
-rw------- 1 mysql mysql     1676 Aug 17 20:53 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 Aug 17 20:53 ca.pem
-rw-r--r-- 1 mysql mysql     1112 Aug 17 20:53 client-cert.pem
-rw------- 1 mysql mysql     1680 Aug 17 20:53 client-key.pem
-rw-r----- 1 mysql mysql     4533 Aug 17 20:53 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Aug 17 21:07 ibdata1
-rw-r----- 1 mysql mysql 50331648 Aug 17 21:07 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Aug 17 20:53 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Aug 17 20:56 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Aug 17 21:07 mydatabase
drwxr-x--- 2 mysql mysql     4096 Aug 17 20:53 mysql
-rw-r----- 1 mysql mysql 25165824 Aug 17 21:07 mysql.ibd
drwxr-x--- 2 mysql mysql     4096 Aug 17 20:53 performance_schema
-rw------- 1 mysql mysql     1680 Aug 17 20:53 private_key.pem
-rw-r--r-- 1 mysql mysql      452 Aug 17 20:53 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 Aug 17 20:53 server-cert.pem
-rw------- 1 mysql mysql     1680 Aug 17 20:53 server-key.pem
drwxr-x--- 2 mysql mysql     4096 Aug 17 20:53 sys
-rw-r----- 1 mysql mysql 10485760 Aug 17 21:07 undo_001
-rw-r----- 1 mysql mysql 10485760 Aug 17 21:07 undo_002
The sys and the perfomance_schema directories does not contain any frm or ISAM-style files. 
The mysql server team shows these pictures on their site (https://mysqlserverteam.com/mysql-8-0-data-dictionary-status-in-the-8-0-0-dmr/)



And if you create your own database each table is stored in its own ibd file and not all in one tablespace file, because innodb_file_per_table is set to 1 as default. With this shrinking tables can be done without a problem...






31.08.2018

mysql 8: installation on ubuntu

Today i tried to install mysql 8 on my ubuntu:
First i visited the site https://dev.mysql.com/downloads/repo/apt/ which says:
So i downloaded this file (https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb) and here we go:

# dpkg -i mysql-apt-config_0.8.10-1_all.deb 

Vormals nicht ausgewähltes Paket mysql-apt-config wird gewählt.

(Lese Datenbank ... 414911 Dateien und Verzeichnisse sind derzeit installiert.)

Vorbereitung zum Entpacken von mysql-apt-config_0.8.10-1_all.deb ...

Entpacken von mysql-apt-config (0.8.10-1) ...

mysql-apt-config (0.8.10-1) wird eingerichtet ...

Warning: apt-key should not be used in scripts (called from postinst maintainerscript of the package mysql-apt-config)

OK
with:
root@zerberus:~/Downloads# apt-get update

OK:1 http://de.archive.ubuntu.com/ubuntu bionic InRelease

Holen:2 http://de.archive.ubuntu.com/ubuntu bionic-updates InRelease [88,7 kB]

Holen:3 http://security.ubuntu.com/ubuntu bionic-security InRelease [83,2 kB]

Holen:4 http://repo.mysql.com/apt/ubuntu bionic InRelease [16,9 kB]

Holen:5 http://de.archive.ubuntu.com/ubuntu bionic-backports InRelease [74,6 kB]                

Holen:6 http://de.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [290 kB]

Holen:7 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 Sources [898 B]

Holen:8 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [147 kB]                     

Holen:9 http://de.archive.ubuntu.com/ubuntu bionic-updates/main i386 Packages [262 kB]                                             

Holen:10 http://de.archive.ubuntu.com/ubuntu bionic-updates/main Translation-en [111 kB]                                                   

Holen:11 http://repo.mysql.com/apt/ubuntu bionic/mysql-apt-config amd64 Packages [568 B]                               

Holen:12 http://de.archive.ubuntu.com/ubuntu bionic-updates/main amd64 DEP-11 Metadata [138 kB]                                

Holen:13 http://de.archive.ubuntu.com/ubuntu bionic-updates/main DEP-11 48x48 Icons [31,4 kB]                            

Holen:14 http://de.archive.ubuntu.com/ubuntu bionic-updates/main DEP-11 64x64 Icons [53,7 kB]                         

Holen:15 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [161 kB]                          

Holen:16 http://security.ubuntu.com/ubuntu bionic-security/main i386 Packages [119 kB]                            

Holen:17 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe i386 Packages [161 kB]                       

Holen:18 http://security.ubuntu.com/ubuntu bionic-security/main Translation-en [57,4 kB]                                     

Holen:19 http://repo.mysql.com/apt/ubuntu bionic/mysql-apt-config i386 Packages [568 B]                                            

Holen:20 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [73,6 kB]                                      

Holen:21 http://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [204 B]                                             

Holen:22 http://security.ubuntu.com/ubuntu bionic-security/universe i386 Packages [50,8 kB]   

Holen:23 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 DEP-11 Metadata [152 kB]                       

Holen:24 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [50,9 kB]                                  

Holen:25 http://security.ubuntu.com/ubuntu bionic-security/universe Translation-en [29,4 kB]                                  

Holen:26 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 DEP-11 Metadata [5.792 B]                                 

Holen:27 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe DEP-11 48x48 Icons [153 kB]                                     

Holen:28 http://security.ubuntu.com/ubuntu bionic-security/universe DEP-11 48x48 Icons [6.962 B]                                 

Holen:29 http://security.ubuntu.com/ubuntu bionic-security/multiverse i386 Packages [1.608 B]                                

Holen:30 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [1.444 B]                            

Holen:31 http://de.archive.ubuntu.com/ubuntu bionic-updates/universe DEP-11 64x64 Icons [262 kB]                    

Holen:32 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 i386 Packages [7.004 B]            

Holen:33 http://de.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [3.772 B]       

Holen:34 http://de.archive.ubuntu.com/ubuntu bionic-updates/multiverse i386 Packages [3.928 B]

Holen:35 http://de.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 DEP-11 Metadata [2.468 B]

Holen:36 http://de.archive.ubuntu.com/ubuntu bionic-backports/universe amd64 DEP-11 Metadata [5.100 B]

Holen:37 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 Packages [7.002 B]           

Holen:38 http://repo.mysql.com/apt/ubuntu bionic/mysql-tools amd64 Packages [2.519 B]

Holen:39 http://repo.mysql.com/apt/ubuntu bionic/mysql-tools i386 Packages [1.882 B]

Es wurden 2.617 kB in 1 s geholt (2.002 kB/s).

Paketlisten werden gelesen... Fertig

root@zerberus:~/Downloads# apt-get install mysql-server

Paketlisten werden gelesen... Fertig

Abhängigkeitsbaum wird aufgebaut.       

Statusinformationen werden eingelesen.... Fertig

Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:

  btrfs-tools esound-common gnome-dictionary gnome-icon-theme-symbolic libarmadillo7 libaudiofile1 libboost-date-time1.62.0 libboost-filesystem1.62.0

  libboost-iostreams1.62.0 libboost-random1.62.0 libboost-regex1.62.0 libboost-serialization1.62.0 libboost-system1.62.0 libboost-thread1.62.0

  libcapnp-0.5.3 libcaribou-gtk-module libcaribou-gtk3-module libdevhelp-3-4 libesd0 libfabric1 libfolks-telepathy25 libgeos-3.5.1 libgit2-24 libgl2ps1

  libgl2ps1.4 libgnome-games-support-1-2 libhdf5-openmpi-100 libhttp-parser2.1 libhwloc-plugins libhwloc5 libical2 libiso9660-8 libjsoncpp1

  libjsonrpc-glib-1.0-0 liblept5 liblivemedia58 libllvm5.0 liblouis12 liblouisutdml7 liblttng-ust-ctl2 libmirclient-dev libmircommon-dev libmircookie-dev

  libmircookie2 libmircore-dev libnetcdf-c++4 libnetcdf11 libntfs-3g872 libopencv-core3.1 libopencv-flann3.1 libopencv-imgproc3.1 libopencv-ml3.1

  libopencv-photo3.1 libopencv-shape3.1 libopencv-video3.1 libopencv-viz3.1 libopenmpi2 liborcus-0.12-0 libpoppler68 libprocess-cpp3 libprotobuf-dev

  libpsm-infinipath1 libqpdf18 librpm3 librpmbuild3 librpmio3 librpmsign3 libruby2.3 libsodium18 libsrtp0 libsuitesparseconfig4 libtbb2 libtesseract-data

  libtesseract3 libunity-api0 libva-drm1 libva-wayland1 libva-x11-1 libva1 libvlccore8 libvpx4 libvtk6.3 libx264-148 libx265-130 libxerces-c3.1

  libxkbcommon-dev libzmqpp4 openmpi-bin openmpi-common python-gi python3-libarchive-c python3-libnacl ruby2.3 snapd-login-service

Verwenden Sie »apt autoremove«, um sie zu entfernen.

Die folgenden zusätzlichen Pakete werden installiert:

  libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client mysql-common mysql-community-client mysql-community-client-core mysql-community-server

  mysql-community-server-core

Die folgenden NEUEN Pakete werden installiert:

  libmecab2 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client mysql-community-client mysql-community-client-core mysql-community-server

  mysql-community-server-core mysql-server

Die folgenden Pakete werden aktualisiert (Upgrade):

  mysql-common

1 aktualisiert, 10 neu installiert, 0 zu entfernen und 36 nicht aktualisiert.

Es müssen 54,2 MB an Archiven heruntergeladen werden.

Nach dieser Operation werden 414 MB Plattenplatz zusätzlich benutzt.

Möchten Sie fortfahren? [J/n] 

Holen:1 http://de.archive.ubuntu.com/ubuntu bionic/universe amd64 libmecab2 amd64 0.996-5 [257 kB]

Holen:2 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-common amd64 8.0.12-1ubuntu18.04 [78,6 kB]

Holen:3 http://de.archive.ubuntu.com/ubuntu bionic/universe amd64 mecab-utils amd64 0.996-5 [4.856 B]

Holen:4 http://de.archive.ubuntu.com/ubuntu bionic/universe amd64 mecab-ipadic all 2.7.0-20070801+main-1 [12,1 MB]

Holen:5 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-community-client-core amd64 8.0.12-1ubuntu18.04 [1.435 kB]

Holen:6 http://de.archive.ubuntu.com/ubuntu bionic/universe amd64 mecab-ipadic-utf8 all 2.7.0-20070801+main-1 [3.522 B]

Holen:7 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-community-client amd64 8.0.12-1ubuntu18.04 [2.292 kB]

Holen:8 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-client amd64 8.0.12-1ubuntu18.04 [75,7 kB]

Holen:9 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-community-server-core amd64 8.0.12-1ubuntu18.04 [16,9 MB]

Holen:10 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-community-server amd64 8.0.12-1ubuntu18.04 [21,0 MB]

Holen:11 http://repo.mysql.com/apt/ubuntu bionic/mysql-8.0 amd64 mysql-server amd64 8.0.12-1ubuntu18.04 [75,7 kB]                                           

Es wurden 54,2 MB in 10 s geholt (5.396 kB/s).                                                                                                              

Vorkonfiguration der Pakete ...

(Lese Datenbank ... 414916 Dateien und Verzeichnisse sind derzeit installiert.)

Vorbereitung zum Entpacken von .../00-mysql-common_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-common (8.0.12-1ubuntu18.04) über (5.8+1.0.4) ...

Vormals nicht ausgewähltes Paket mysql-community-client-core wird gewählt.

Vorbereitung zum Entpacken von .../01-mysql-community-client-core_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-community-client-core (8.0.12-1ubuntu18.04) ...

Vormals nicht ausgewähltes Paket mysql-community-client wird gewählt.

Vorbereitung zum Entpacken von .../02-mysql-community-client_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-community-client (8.0.12-1ubuntu18.04) ...

Vormals nicht ausgewähltes Paket mysql-client wird gewählt.

Vorbereitung zum Entpacken von .../03-mysql-client_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-client (8.0.12-1ubuntu18.04) ...

Vormals nicht ausgewähltes Paket libmecab2:amd64 wird gewählt.

Vorbereitung zum Entpacken von .../04-libmecab2_0.996-5_amd64.deb ...

Entpacken von libmecab2:amd64 (0.996-5) ...

Vormals nicht ausgewähltes Paket mysql-community-server-core wird gewählt.

Vorbereitung zum Entpacken von .../05-mysql-community-server-core_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-community-server-core (8.0.12-1ubuntu18.04) ...

Vormals nicht ausgewähltes Paket mysql-community-server wird gewählt.

Vorbereitung zum Entpacken von .../06-mysql-community-server_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-community-server (8.0.12-1ubuntu18.04) ...

Vormals nicht ausgewähltes Paket mecab-utils wird gewählt.

Vorbereitung zum Entpacken von .../07-mecab-utils_0.996-5_amd64.deb ...

Entpacken von mecab-utils (0.996-5) ...

Vormals nicht ausgewähltes Paket mecab-ipadic wird gewählt.

Vorbereitung zum Entpacken von .../08-mecab-ipadic_2.7.0-20070801+main-1_all.deb ...

Entpacken von mecab-ipadic (2.7.0-20070801+main-1) ...

Vormals nicht ausgewähltes Paket mecab-ipadic-utf8 wird gewählt.

Vorbereitung zum Entpacken von .../09-mecab-ipadic-utf8_2.7.0-20070801+main-1_all.deb ...

Entpacken von mecab-ipadic-utf8 (2.7.0-20070801+main-1) ...

Vormals nicht ausgewähltes Paket mysql-server wird gewählt.

Vorbereitung zum Entpacken von .../10-mysql-server_8.0.12-1ubuntu18.04_amd64.deb ...

Entpacken von mysql-server (8.0.12-1ubuntu18.04) ...

Trigger für ureadahead (0.100.0-20) werden verarbeitet ...

mysql-common (8.0.12-1ubuntu18.04) wird eingerichtet ...

Neue Version der Konfigurationsdatei /etc/mysql/conf.d/mysql.cnf wird installiert ...

Neue Version der Konfigurationsdatei /etc/mysql/my.cnf.fallback wird installiert ...

libmecab2:amd64 (0.996-5) wird eingerichtet ...

mysql-community-client-core (8.0.12-1ubuntu18.04) wird eingerichtet ...

mysql-community-server-core (8.0.12-1ubuntu18.04) wird eingerichtet ...

Trigger für libc-bin (2.27-3ubuntu1) werden verarbeitet ...

Trigger für systemd (237-3ubuntu10.3) werden verarbeitet ...

Trigger für man-db (2.8.3-2) werden verarbeitet ...

mecab-utils (0.996-5) wird eingerichtet ...

mysql-community-client (8.0.12-1ubuntu18.04) wird eingerichtet ...

mecab-ipadic (2.7.0-20070801+main-1) wird eingerichtet ...

Compiling IPA dictionary for Mecab.  This takes long time...

reading /usr/share/mecab/dic/ipadic/unk.def ... 40

emitting double-array: 100% |###########################################| 

/usr/share/mecab/dic/ipadic/model.def is not found. skipped.

reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795

reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032

reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146

reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393

reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750

reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135

reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221

reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120

reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477

reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171

reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146

reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27327

reading /usr/share/mecab/dic/ipadic/Others.csv ... 2

reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19

reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42

reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668

reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208

reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42

reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328

reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999

reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252

reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202

reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91

reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151

reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210

reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199

emitting double-array: 100% |###########################################| 

reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316

emitting matrix      : 100% |###########################################| 



done!

update-alternatives: /var/lib/mecab/dic/ipadic wird verwendet, um /var/lib/mecab/dic/debian (mecab-dictionary) im automatischen Modus bereitzustellen

mysql-client (8.0.12-1ubuntu18.04) wird eingerichtet ...

mecab-ipadic-utf8 (2.7.0-20070801+main-1) wird eingerichtet ...

Compiling IPA dictionary for Mecab.  This takes long time...

reading /usr/share/mecab/dic/ipadic/unk.def ... 40

emitting double-array: 100% |###########################################| 

/usr/share/mecab/dic/ipadic/model.def is not found. skipped.

reading /usr/share/mecab/dic/ipadic/Noun.adverbal.csv ... 795

reading /usr/share/mecab/dic/ipadic/Adverb.csv ... 3032

reading /usr/share/mecab/dic/ipadic/Postp.csv ... 146

reading /usr/share/mecab/dic/ipadic/Suffix.csv ... 1393

reading /usr/share/mecab/dic/ipadic/Verb.csv ... 130750

reading /usr/share/mecab/dic/ipadic/Adnominal.csv ... 135

reading /usr/share/mecab/dic/ipadic/Prefix.csv ... 221

reading /usr/share/mecab/dic/ipadic/Noun.demonst.csv ... 120

reading /usr/share/mecab/dic/ipadic/Noun.csv ... 60477

reading /usr/share/mecab/dic/ipadic/Conjunction.csv ... 171

reading /usr/share/mecab/dic/ipadic/Noun.verbal.csv ... 12146

reading /usr/share/mecab/dic/ipadic/Noun.proper.csv ... 27327

reading /usr/share/mecab/dic/ipadic/Others.csv ... 2

reading /usr/share/mecab/dic/ipadic/Filler.csv ... 19

reading /usr/share/mecab/dic/ipadic/Noun.number.csv ... 42

reading /usr/share/mecab/dic/ipadic/Noun.org.csv ... 16668

reading /usr/share/mecab/dic/ipadic/Symbol.csv ... 208

reading /usr/share/mecab/dic/ipadic/Noun.nai.csv ... 42

reading /usr/share/mecab/dic/ipadic/Noun.adjv.csv ... 3328

reading /usr/share/mecab/dic/ipadic/Noun.place.csv ... 72999

reading /usr/share/mecab/dic/ipadic/Interjection.csv ... 252

reading /usr/share/mecab/dic/ipadic/Noun.name.csv ... 34202

reading /usr/share/mecab/dic/ipadic/Postp-col.csv ... 91

reading /usr/share/mecab/dic/ipadic/Noun.others.csv ... 151

reading /usr/share/mecab/dic/ipadic/Adj.csv ... 27210

reading /usr/share/mecab/dic/ipadic/Auxil.csv ... 199

emitting double-array: 100% |###########################################| 

reading /usr/share/mecab/dic/ipadic/matrix.def ... 1316x1316

emitting matrix      : 100% |###########################################| 



done!

update-alternatives: /var/lib/mecab/dic/ipadic-utf8 wird verwendet, um /var/lib/mecab/dic/debian (mecab-dictionary) im automatischen Modus bereitzustellen

mysql-community-server (8.0.12-1ubuntu18.04) wird eingerichtet ...

update-alternatives: /etc/mysql/mysql.cnf wird verwendet, um /etc/mysql/my.cnf (my.cnf) im automatischen Modus bereitzustellen

Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.

mysql-server (8.0.12-1ubuntu18.04) wird eingerichtet ...

Trigger für systemd (237-3ubuntu10.3) werden verarbeitet ...

Trigger für ureadahead (0.100.0-20) werden verarbeitet ...
And everything is ready:
mysql -u root -pmysupersecretpassword

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 8.0.12 MySQL Community Server - GPL



Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.



Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



mysql> 

25.08.2018

systemd: systemd-notify not working for non-root-users

Sometimes you have to write your own startup scripts. Recent linux distributions require systemd scripts. This is not really a problem except you have to fulfill the following requirements:
  • Run the service as a non-root-user
  • The service has a startup phase and you want to start the next startup scripts after this startup phase
So the systemd-script has to look like this:
# cat /lib/systemd/system/TEST.service
[Unit]
Description=MyTestSystemdConfiguration

[Service]
User=schroff
Type=notify
ExecStart=/home/schroff/bin/test.sh
NotifyAccess=all
The service startup scripts have to look like this:
$ cat /home/schroff/bin/test.sh
#!/bin/bash

echo Starting serivce
sleep 10
#Starting your services
echo Services started

/bin/systemd-notify --ready
echo Notify done

while test 1 do
  sleep 600
done
#keep this scripts running, as long your service runs
In the startup phase you will get the following:
schroff@zerberus:~/bin$ systemctl status TEST.service
● TEST.service - MyTestSystemdConfiguration
   Loaded: loaded (/lib/systemd/system/TEST.service; static; vendor preset: enabled)
   Active: activating (start) since 19:39:27 CET; 7s ago
 Main PID: 17390 (test.sh)
    Tasks: 2 (limit: 4915)
   Memory: 532.0K::
      CPU: 7ms
   CGroup: /system.slice/TEST.service
           ├─17390 /bin/bash /home/schroff/bin/test.sh
           └─17395 sleep 10

19:39:27 zerberus systemd[1]: Starting MyTestSystemdConfiguration...
19:39:27 zerberus test.sh[17390]: Starting serivce
And after the startup phase this is the output (if there were no errors):
schroff@zerberus:~/bin$ systemctl status TEST.service
● TEST.service - MyTestSystemdConfiguration
   Loaded: loaded (/lib/systemd/system/TEST.service; static; vendor preset: enabled)
   Active: active (running) since 19:38:38 CET; 3s ago
 Main PID: 17242 (test.sh)
    Tasks: 2 (limit: 4915)
   Memory: 932.0K
      CPU: 9ms
   CGroup: /system.slice/TEST.service
           ├─17242 /bin/bash /home/schroff/bin/test.sh
           └─17259 sleep 600

19:38:28 zerberus systemd[1]: Starting MyTestSystemdConfiguration...
19:38:28 zerberus test.sh[17242]: Starting serivce
19:38:38 zerberus test.sh[17242]: Services started
19:38:38 zerberus systemd[1]: Started MyTestSystemdConfiguration.
19:38:38 zerberus test.sh[17242]: Notify done
But sometime you will get:
# systemctl restart TEST.service
Job for TEST.service failed because a timeout was exceeded.
See "systemctl  status TEST.service" and "journalctl  -xe" for details.
19:44:46 zerberus systemd[1]: TEST.service: Start operation timed out. Terminating.
19:44:46 zerberus systemd[1]: Failed to start MyTestSystemdConfiguration.
-- Subject: Unit TEST.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit TEST.service has failed.
--
-- The result is failed.
19:44:46 zerberus systemd[1]: TEST.service: Unit entered failed state.
19:44:46 zerberus systemd[1]: TEST.service: Failed with result 'timeout'.

Note that this will happen after 600s (default). You can change this with the parameter (systemd configuration, see manpage systemd.service)
TimeoutSec
But changing this Parameter will not help, because systemd status will never enter the state "active (running)".

The problem is systemd-notify doesn't work, since it lives too short (Redhat Bugzilla).


A workaround is described in that bug entry:
Instead of
systemd-notify --ready
use
python -c "import systemd.daemon, time; systemd.daemon.notify('READY=1'); time.sleep(5)"