Archive for category Server

MySQL: backup databases in separate files

It’s not very comfortable to restore one database, if you have just one big fat backup file, which contains all databases.

My solution is the bash script above does the following steps:

  1. It crreates one dump file for each database.
  2. It packs all dump files in one zipfile
  3. and sends it to STDOUT.

Step 3 is very helpful e.g. for using this script with backup software like rsnapshot.

## Dumps every database to a single file, all dump files will be zipped and redirected to the stdout.
## Usage: >
#! /bin/bash
set -o nounset
set -o errexit

trap 'rm -rf "$BACKUP_DIR"' EXIT
BACKUP_DIR=$(mktemp -d)

databases=`$MYSQL --defaults-extra-file=/etc/mysql/credentials.cnf --default-character-set=utf8mb4 -e "SHOW DATABASES;" \
        | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
  $MYSQLDUMP --defaults-extra-file=/etc/mysql/credentials.cnf --default-character-set=utf8mb4 --force --opt --databases $db \
        > "$BACKUP_DIR/$db.sql"
zip -rjq - "$BACKUP_DIR"
exit 0

, ,

Leave a comment

dnsmasq and logrotate on ubuntu 20.04

I had same issues with dnsmasq and logrotate on ubuntu 20.04. Here is my solution:

In /etc/dnsmasq.conf the following entry is required:


Create /etc/logrotate.d/dnsmasq with the following content:

/var/log/dnsmasq/dnsmasq.log {
   size 100M
   rotate 7
      service dnsmasq restart

The important thing was the restart of dnsmasq!

, ,

Leave a comment

How to check the expiration date of a ssl certificate?

To check a certificate of an host:

openssl s_client -servername your.domain -connect your.domain:443 2>&- | openssl x509 -enddate -noout | sed 's/^notAfter=//g'

To check a certificate file:

openssl x509 -noout -enddate -in your.crt | sed 's/^notAfter=//g'



Leave a comment

Apache failed on system boot, when binding to an additional IP

Starting point:

My system (Ubuntu 18.04.1) is a VPS running on KVM. The network with some additional IPs is configured with Netplan.



The Apache server is running on an additional IP. If the VPS reboots, the apache didn’t start because, it couldn’t be bind on an aditional IP. A log entry like the following can be found:
apachectl[631]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address [xxxxxxxx]:80

But if you restart Apache after the reboot, it runs as expected!
Strange, isn’t it?



Ok, I couldn’t find the exact reason of this reason. But I think, there is a strange timing issue on reboot. The network isn’t completely up before Apache is starting.

To solve the problem, just edited the section ‘Unit’ in the file /lib/systemd/system/apache2.service and replace


That’s it!

More information about the network-target can be found her:

, ,

Leave a comment

VPS boot overrides some configuration files

Problem: I bought a new VPS and did some configuration changes (e.g. hostname setting). I’ve installed some software and wanted to test if my settings are boot resistant. And every time the VPS was  booting the files /etc/hosts and /etc/hostname was overridden by the defaults of the provider.

Reason: Virtuozzo (the software which virtualises my VPS) overrides those files at every  time the VPS is booting.

Solution: Replacing the files /etc/hosts and /etc/hostname at boot-time.

The following description is applied for Ubuntu 14.04. Both replacements are implemented as upstart jobs.


Copy the /etc/hosts (e.g. /etc/hosts_my) and adapt it to your needs. Then create the file /etc/init/hosts.conf with the following content:

description "restore my hosts"
start on startup
exec cp /etc/hosts_my /etc/hosts


Copy the /etc/hostname (e.g. /etc/hostname_mod) and adapt it to your needs. Then edit the file /etc/init/hostname.conf and change the last exec command to:
exec hostname -b -F /etc/hostname_mod

That’s it!

, ,

Leave a comment