Alle Beiträge von Don Matteo

lebt in Zürich, ist System Engineer MCP bei A-Enterprise GmbH. Mitglied des UNBLOG Network. Author und Blogger zu den Themen, Linux und Open Source. Tutorials für Windows, VMware, Synology, Fortinet.

Server Memory cache buffers reset

Welcher Linux Admin kennt das nicht, nach einer Gewissen uptime ist fast das gesamte Memory für cache und buffers des Servers verbraucht, eigentlich ist es nicht nötig in das Memory Management des Systems einzugreifen, ist das System jedoch knapp an Arbeitsspeicher, lässt sich mit einem einfachen Script Abhilfe schaffen.

Als root wird folgendes Script editiert:

$ vi /usr/sbin/clearcache.sh

#!/bin/bash
# freeing cache buffers

echo $(date) >> /var/log/clearcache.log

freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)

cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

sync; echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM." >> /var/log/clearcache.log

Nun das Script ausführbar machen.

$ u+x /usr/sbin/clearcache.sh

und als crontask um 5, 13 und 21 Uhr ausführen lassen.

echo "0 5,13,21 * * * root /usr/sbin/clearcache.sh" >> /etc/crontab

Mit free -m lässt sich vor und nach dem reset das freie Memory beobachten, auch wird der Task unter /var/log/clearcache.log protokolliert und kann mit tail /var/log/clearcache.log auf stdout ausgegeben.

clear cache
clear cache

MySQL Server Backup auf Synology DS

MySQL Sicherung auf Synology NAS

In diesem Beitrag wird in wenigen Schritten gezeigt, wie eine MySQL Datenbank auf die Synology Diskstation gesichert wird. Das auf Linux gehostete Wordpress wird gesichert und anschliessend mit scp auf die Diskstation übertragen.

Auf der Diskstation wird der SSH und SFTP Daemon aktiviert.

SSH Aktivieren
SFTP Aktivieren
SFTP Port

Beim Linux host als root mit „su -“ oder „sudo su -“ anmelden und aus der bash shell die folgenden Dateien erzeugen.

$ echo "mysqldump --single-transaction -u\$1 -p\$2 wordpress > /tmp/wordpress.dump" > /usr/sbin/backup.sh

Die Datei backup.sh ausführbar machen.

$ chmod u+x /usr/sbin/backup.sh

Ein Cron Job erstellen für die Sicherung jeden Tag um Mitternacht.

echo "0 0 * * * root /usr/sbin/backup.sh root PASSWORD 2>&1 /var/log/mysqldump.log; scp /tmp/wordpress.dump root@10.1.1.2:/volume1/backup/wordpress/" >> /etc/crontab

Wobei PASSWORD dein MySQL Passwort ist, die Adresse 10.1.1.2 durch deine IP der Synology Diskstation ersetzen, volume1 ist in der Regel die erste Partition und backup ist unser angelegtes Backup Verzeichnis.

Nun auf dem Linux host ein RSA Schlüsselpaar erzeugen, damit wird beim kopieren mit scp auf die DS kein Passwort verlangt.

$ ssh-keygen -t rsa

Im Verzeichnis /root/.ssh/ wurde nun ein Privater und ein Öffentlicher Schlüssel erzeugt:

-rw------- 1 root root 1675 1. Sep 11:17 id_rsa
-rw-r--r-- 1 root root 408 1. Sep 11:17 id_rsa.pub

Der öffentliche Schlüsssel id_rsa.pub wird nun auf die Diskstation kopiert und im Pfad /root/.ssh/ in der Datei authorized_keys gespeichert, hierbei wird das root Passwort noch einmal benötigt.

$ scp /root/.ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys

Fertig, nun wird wenn alles klappt um 00:00 Uhr dein Datenbank Backup erstellt und automatisch (ohne Passwort Prompt) auf die Diskstation übertragen.

Dieses Howto wurde auf CentOS GNU/Linux gemacht, mit Debian sollten ebenfalls keine Anpassungen nötig sein, andernfalls wäre dein Kommentar jederzeit willkommen.

Der System crontab liegt in /etc/crontab, Du kannst auch den Befehl crontab -e verwenden oder das durch run-parts angelegte cron.daily Verzeichnis als Batch Folder verwenden.