mysql: Incorrect key file for table ‚/tmp/#sql_[…]

mysql bringt im log die Meldung:

[ERROR] /usr/libexec/mysqld: Incorrect key file for table '/tmp/#sql_[...]

Diese Fehlermeldung ist etwas verwirrend, da temporäre Tabellen sicher nicht repariert werden müssen.

Stattdessen heisst diese Meldung einfach, dass das /tmp Filesystem voll ist und mysql seine temporären Tabellen nicht mehr speichern kann.

Abhilfe schafft ein mysql Restart und ggf. ein vergrössern des tmp Filesystems.

Quelle: mysqlperformancetuning.com: [http://www.mysqlperformancetuning.com/a-fix-for-incorrect-key-file-for-table-mysql|A fix for "Incorrect key file for table ‚/tmp/#sql_xxxx_x.MYI’" in MySQL]

Eigener DynamicDNS (ddns) Dienst

Kürzlich ärgerte ich mich wieder einmal über die monatliche Reaktivierung, die man bei seinem kostenlosen DyDNS-Hoster wie z.B. dyndns.com oder noip.com vornehmen muss.

Deshalb recherchierte ich ein bisschen über Lösungen und kam dann darauf, dass, wenn man bereits einen eigenen Nameserver und Webserver mit statischer IP hat, man daraus ganz einfach seinen eigenen „DynDns-Dienst“ machen kann! 😉
Hier die Beschreibung wie das geht.

Continue reading Eigener DynamicDNS (ddns) Dienst

Oracle Client installieren

Falls man von Linux aus auf Oracle-Datenbanken connecten muss (z.B. via dem nagios-plugin check_oracle_health), ist der oracleclient vonnöten, sowie entsprechend gesetzte Umgebungsvariablen.

Um dies zu erreichen ist wie folgt vorzugehen:

Diese beiden files:

  • oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
  • oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm

downloaden und auf das Zielsystem unter: /usr/local/src/ kopieren.

Dann installieren (zuvor muss noch libaio installiert werden):

yum install libaio
cd /usr/local/src/
rpm -ihv oracle-instantclient11.2-{basic,sqlplus}-*.rpm

Nun die Datei: /etc/profile.d/oracle.sh (alternativ auch .bash_profile) erstellen:

export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export TNS_ADMIN=$ORACLE_HOME
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
 
PATH=$PATH:$ORACLE_HOME/bin
export PATH

[stextbox id=“note“ caption=“Hinweis“]Will man die shell variablen von nagios/icinga nutzen, reicht es unter Umständen nicht, diese einfach ins .bash_profile des nagios/icinga users zu kopieren. Man muss sie dann im .bash_profile von root rein tun, oder alternativ in /etc/profile, bzw. /etc/profile.d/[/stextbox]

Für den Zugriff via Oracle Internet Directory (OID)

Nun die Datei /usr/lib/oracle/11.2/client64/sqlnet.ora ertsellen:

NAMES.DIRECTORY_PATH= (LDAP)
TRACE_LEVEL_CLIENT = OFF
names.default_domain = world

Und die Datei /usr/lib/oracle/11.2/client64/ldap.ora:

DIRECTORY_SERVERS= (OID:3060:3131)
DEFAULT_ADMIN_CONTEXT = ""
DIRECTORY_SERVER_TYPE = OID

Ggf., müssen diese zwei files noch World-Readable gemacht werden:

chmod -v 644 /usr/lib/oracle/11.2/client64/*.ora

Windows Firewall: Lokale subnets erlauben

Wenn man verschiedene Netzwerke (z.B. per VPN) zusammen geschlossen hat, kann es sein, dass die Windows firewall diese nicht als lokale (freundliche) Netzte sieht und alles blockt.

Möchte man mit einer simplen Regel, z.B. alles von einem anderen subnet, oder einer VPN-IP zulassen sind folgende Schritte nötig:

START -> Systemsteuerung -> Windows Firewall -> Erweiterte Einstellungen
In der linken spalte klickt man nun auf: "Eingehende Regel" und wählt in der rechten Spalte: "Neue Regel".
Dann geht man auf: Benutzerdefiniert -> WEITER (Alle Programme) -> WEITER (Protokolltyp: Alle)
Oben lässt man: "Beliebige IP-Adressen"
Unten wählt man: "Diese IP-Adressen" und klickt auf: HINZUFÜGEN und gibt die IP’s oder Netze an.
Nun auf: WEITER ("Verbindung zulassen")
Hier lässt/setzt man das Häkchen bei: "Domäne" und "Privat": bei "Öffentlich" kann es ggf. deaktiviert werden.
Nun nochmals auf: WEITER, einen Namen eingeben und: FERTIG STELLEN.

Weiterführende Ressourcen

bugzilla: Welche CentOS/RHEL Perl-Module braucht es?

Bugzilla braucht viele perl-module um zu laufen.

Wenn man diese lieber über yum anstatt über CPAN installieren möchte sind folgende nötig:

yum install --enablerepo=rpmforge-extras --disablerepo=base mod_perl mod_perl-devel perl-Apache-SizeLimit perl-Authen-SASL perl-CGI perl-Chart perl-Class-Inspector perl-Daemon-Generic perl-DateTime perl-DateTime-TimeZone perl-DBD-mysql perl-DBI perl-Digest-SHA perl-Email-MIME perl-Email-MIME-Attachment-Stripper perl-Email-Reply perl-Email-Send perl-Encode-Detect perl-File-MimeInfo perl-GD perl-GDGraph perl-GDTextUtil perl-HTML-FormatText-WithLinks perl-HTML-Parser perl-HTML-Scrubber perl-IO-stringy perl-JSON perl-JSON-RPC perl-JSON-XS perl-LDAP perl-libwww-perl perl-List-MoreUtils perl-Math-Random perl-MIME-tools perl-Net-SMTP-SSL perl-PatchReader perl-RadiusPerl perl-SOAP-Lite perl-Template-GD perl-Template-Toolkit perl-Test-Taint perl-TheSchwartz perl-TimeDate perl-URI perl-XML-Twig perl-YAML

Um alle dependencies auflösen zu können ist das rpmforge repository (und ggf. sogar das rpmforge extras repo) zu installieren/aktivieren.

Allerdings sind einige bei neueren Bugzilla-Versionen zu alt und müssen über CPAN installiert werden.

Die perl-module welche (Stand CentOS 6) unbedingt per CPAN installiert werden müssen sind:

perl-Date-Format perl-Email-MIME perl-List-MoreUtils perl-Math-Random-ISAAC

Weitere Info: [https://wiki.mozilla.org/Bugzilla:Prerequisites|Bugzilla:Prerequisites]

vSphere CLI: http_proxy not set / ftp_proxy not set

Wenn man das vSphere CLI installieren möchte, bricht die Installation mit folgender Meldung ab:

http_proxy not set. please set environment variable 'http_proxy' e.g. export
http_proxy=<a href="http://myproxy.mydomain.com:0000" target="blank">http://myproxy.mydomain.com:0000</a> .
 
ftp_proxy not set. please set environment variable 'ftp_proxy' e.g. export
ftp_proxy=<a href="http://myproxy.mydomain.com:0000" target="blank">http://myproxy.mydomain.com:0000</a> .

Um dieses Problem zu lösen, muss man das vmware-install.pl script "patchen".

Suche nach folendem Abschnitt:

if ( !( $ftpproxy && $httpproxy)) {
  uninstall_file($gInstallerMainDB);
  exit 1;
}
require CPAN;

Und kommentiere die Zeilen: "uninstall_file", so wie das "exit 1" aus:

if ( !( $ftpproxy && $httpproxy)) {
  <b>#uninstall_file($gInstallerMainDB);</b>
  <b>#exit 1;</b>
 }
require CPAN;

Nun sollte die Installation klappen.

Welcher SATA-Controller für ESX?

VMware ESX ist sehr wählerisch wenn es um die Wahl von Hardware-Komponenten geht.

Wenn man nun einen SATA-Controller für zusätzliche Festplatten-Anschlüsse braucht sind SATA-Controler welche die „berühmtenn“ LSI-1068e oder der (etwas neuere) LSI-SAS2008 Chipsatz enthalten eine sehr gute Wahl.
Diese Chipsätze wurden sehr häufig in Servern von IBM, DELL, Intel und HP verbaut und haben deshalb eine hohe Kompatibilität.

Zudem kriegt man diese Karten aus Server-Pulls für unter 100.- EUR bei ebay und sie laufen excellent in ESX-Systemen

Folgende SATA-Karten basieren auf dem LSI-1068e oder LSI-SAS2008 Chipsatz:

  • IBM BR10i (LSI-1068e)
  • IBM M1015 (LSI-SAS2008)
  • Intel SASUC8I (LSI1068e)
  • DELL PERC 5/i (LSI-1068e)
  • LSI 9211-8i (LSI-SAS2008)

[stextbox id=“alert“ caption=“Achtung 2TB Grenze“]Der Chipsatz LSI-1068e hat eine feste Grenze von 2TB, d.h. Disks die grösser als 2TB sind werden zwar erkannt, man kann bekommt im OS jedoch nur 2.2 TB angezeigt![/stextbox]

Allerdings sollte man die Karte auf die originale LSI IT Firmware flashen.

vmware-hcl-raidcontrollers
Mittels diesen Einstellungen in der vmware HCL findet man weitere Controller:

Quellen

iptables: Regeln dynamisch einfügen und löschen

iptables Regeln werden normalerweise in einem file (z.B. /etc/sysconfig/iptables-rules) konfiguriert.

Was aber, wenn man im laufenden Betrieb eine Regel temporär hinzufügen und wieder löschen möchte?

Denn mit der Standardmässigen "append-option" (iptables -A) klappt das nicht immer, da die Regeln der Reihe nach abgearbeitet werden.

Man kann jedoch mittels -I und -D die Regeln [I]nserten oder [D]eleten. Dazu kann man noch eine Zeilennummer eingeben, z.B.:

iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -j ACCEPT

Diese Regel kann man nun entweder wieder löschen indem man dieselbe wieder aufruft mit -D anstatt -I und ohne Zeilennummer:

iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

oder mittels der Zeilennummer:

iptables -D INPUT 5

Die Zeilennummern kann man sich mit dem Parameter –line-numbers anzeigen lassen:

iptables -L --line-numbers
iptables -L INPUT --line-numbers