Archiv der Kategorie: Howto

iWatch Dateisystemüberwachung in Echtzeit

iWatch ist ein Programm zur Dateisystemüberwachung in Echtzeit. Es ist ein einfaches Perl-Skript, das Veränderungen in bestimmten Verzeichnissen/Dateien überwacht und Benachrichtigungen unverzüglich per E-Mail verschickt. Die Liste der überwachten Objekte wird aus einer xml-Konfigurationsdatei gelesen.
http://iwatch.sourceforge.net/documentation.html

Downloads
http://sourceforge.net/project/showfiles.php?group_id=174218

OpenSUSE 10.3:
http://software.opensuse.org/search

Mysql root Passwort vergessen?

Ein Reset des Mysql ROOT-Passwort ist recht einfach, solange man einen SSH Zugang zum Server hat. (Beispiel: SuSE)

  • Stop mysql service
    rcmysql stop
    
  • Start to MySQL server w/o password:
    mysqld_safe --skip-grant-tables &
    
  • Connect to mysql server using mysql client:
    mysql -u root
    
  • Setup new MySQL root user password
    mysql> use mysql;
    mysql> update user set password=PASSWORD("neues-passwort") where User='root';
    mysql> flush privileges;
    mysql> quit
    
  • 5: Stop MySQL Server:
    rcmysql stop
    
  • Start MySQL Server
     
    rcmysql start
    
  • Login Test
    mysql -u root -p
    

Wie man eine MySQL Replikation repariert

Bei einer MySQL Replikation (Master-> Slave) kann es Manchmal ungültigen MySQL Abfragen geben, die dafür sorgen, dass die Replikation nicht mehr funktioniert.

Wie dieser Fehler behoben werden kann möchte ich nun zeigen:

Ausgangssituation:

OS: OpenSuSE
Mysql: Version 5.0.26
Cluster:
MysqlDB Master -> Slave oder auch Master1 -> Slave2 -> Master2 -> Slave1

Fehler:

Der Fehler kann in der Logdatei gefunden werden,

/var/lib/mysql/mysqld.log

oder über dir mysql konsole:

Anmeldung an der MySQLDB mit globalen Rechten:

mysql -uroot -p********

Führe dieses Kommando in der MySQL Kommandozeile aus:

mysql> show slave status\G;

Ausgabe:

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.20
Master_User: rep-slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 49829205
Relay_Log_File: mysqlcluster2-relay-bin.000016
Relay_Log_Pos: 3680509
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '9959-0-_transient_timeout_rss_5d9ad1c55ec39
ea3dba324257d3a091f' for key 1' on query. Default database: 'dbsms29200024'. Query: 'INSERT INTO
`wp_options` (`option_name`,`option_value`,`autoload`) VALUES ('_transient_timeout_rss_5d9ad1c5
5ec39ea3dba324257d3a091f','1257232955','no')'
Skip_Counter: 0
Exec_Master_Log_Pos: 48652901
Relay_Log_Space: 4856813
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.00 sec)
ERROR:
No query specified
Achtung: Wenn Slave_IO_Running oder Slave_SQL_Running auf No gesetzt ist, dann ist die Replikation kaput. In aller Regel steht aber nur Slave_SQL_Running auf NO. Die Replikation reparieren Wir halten den Slave (192.168.0.20) mit dem Kommando stop slave an!
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

Jetzt beheben wir das Problembehebung, in dem wir MYSQL (Slave) den Befehl zum überspringen der ungültige SQL Abfrage geben.

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
Query OK, 0 rows affected (0.00 sec)

Jetzt wird der Slave wieder gestartet.

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

Nun den Status prüfen mit dem Befehl show slave status\G,  das  "\G"  steht nur für die Formatierung.

mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.20
Master_User: rep-slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 49930095
Relay_Log_File: mysqlcluster2-relay-bin.000017
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 49930095
Relay_Log_Space: 235
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
ERROR:
No query specified

Der Fehler ist behoben, wenn Slave_SQL_Running auf Yes steht. Bei einem Cluster der Form Master1 -> Slave2 -> Master2 -> Slave1
ist es nicht ungewöhnlich dass der zweite Slave sich auch noch mal meldet.

Ich möcht nicht vergessen darauf hinzuweisen, dass ich keine Garantie für die Richtigkeit übernehmen kann.

VIM oder Wer suchet, der findet

Vorwärts suchen
Um in einem geöffneten Text zu suchen, gibt man im Standardmodus ein / ein, d. h. man drückt „Shift“ + „7“. Anschließend fügt man den Suchbegriff ein: Also z. B. „Wort“. Abschließend bestätigt man den Suchauftrag über die Eingabetaste „Enter“.
Der Cursor bewegt sich nun an die erste Stelle im Text, an der der Begriff „Wort“ gefunden wird. Die Taste „N“ wiederholt die Suche, der Cursor springt zur nächsten Fundstelle.
Rückwärts suchen
Mit „Shift“ + „N“ wird rückwärts im Text gesucht, also ab der aktuellen Cursorposition in Richtung Textanfang.
Man kann mit der Eingabe von ?, also „Shift“ + „ß“, und einem nachfolgenden „Wort“ dem Editor auch mitteilen, dass er von vornherein rückwärts suchen soll.
Suchmuster
In den Suchbegriff eingebettet kann man nach verschiedenen Kriterien suchen und zwar (nach Betreten des Suchmodus mit „Shift“ + „7“):
W.
sucht nach W und einem beliebigen Zeichen
^W
sucht nach W am Zeilenanfang
W$
sucht nach W am Zeilenende
W[a-e]
sucht W und einem Zeichen von a bis e
Groß- und Kleinschreibung umgehen
Vim unterscheidet bei der Suche immer zwischen Groß- und Kleinschreibung. Wenn man dies nicht möchte, kann man das mit einem angehängten \c umgehen. Das gilt anschließend nur für diese eine Suche. Damit es für alle weiteren Suchen gilt, führt man das Kommando :set ignorecase aus. Die Eingabe screen \c sucht also nach „screen“ und nach „Screen“.
Inkrementelle Suche
Das Kommando :set incsearch aktiviert die inkrementelle Suche. Dies ist sinnvoll, wenn man nach dem Beginn eines Wortes sucht. Hier wird der Cursor schon während der Eingabe des Suchbegriffes an den ersten Ãœbereinstimmungsort bewegt. Die „Enter“-Taste beendet diesen Spuk, mit der „Escape“-Taste wird die Suche abgebrochen. Nach der Suche bleiben die Ãœbereinstimmungen im Text markiert, bis man entweder eine neue Suche beginnt oder das Kommando :nohlsearch eingibt.
Anmerkungen zum :set-Kommando
Die Optionen, die mit :set gesetzt werden, gelten nur für die aktuelle Vim-Sitzung. Sollen hingegen die Einstellungen permanent gesetzt bzw. nicht gesetzt sein, so muss dies in /etc/vimrc (gültig für das ganze System) oder ~/.vimrc (gültig nur für den aktuellen Benutzer) erfolgen.
Suchen und Ersetzen
Hier nun einige Funktionen, wie man Text suchen und ersetzen kann. Das Kommando, um zum Beispiel „abc“ durch „efg“ zu ersetzen, lautet :%s/abc/efg.
Um das Suchen und Ersetzen noch besser zu kontrollieren, bestehen darüber hinaus folgende Möglichkeiten, die durch das Anfügen an das obige Kommando erreicht werden:
/g
ohne Rückfrage werden alle Vorkommen von „abc“ durch „efg“ ersetzt
/gc
mit Rückfrage werden alle Vorkommen von „abc“ durch „efg“ ersetzt
/gi
ersetzt alle Vorkommen von „abc“ durch „efg“ ohne Groß- und Kleinschreibung zu berücksichtigen
Hinweis: Der ganze Ausdruck muss aneinander geschrieben werden: z. B. :%s/abc/efg/gi.
Abspeichern und Verlassen
Ganz am Schluss der Bearbeitung sollte man nicht vergessen, die Datei abzuspeichern. Dazu einfach das Kommando :w absetzen. Dann verlässt man die Datei mit einem :q. Ein :wq erledigt dies in einem Schritt.
Fazit
Wer erst einmal den Vim-Editor in seinen Grundfunktionen beherrscht, der kann zum Beispiel viel schneller Änderungen an Konfigurationsdateien vornehmen, als so manch anderer Benutzer, der mit einem grafischen Editor unterwegs ist.
Voraussetzung dafür ist aber das ständige und konsequente Benutzen des Editors. Am Besten macht man sich nebenher auf einem Stück Papier eine Ãœbersicht der gängigsten Befehle und legt das neben die Tastatur. So gewöhnt man sich schneller an den Umgang und wird immer vertrauter mit diesem Urgestein der Editoren.

🙂

WordPress und 1&1

Wer sein WordPress bei 1&1 mit MySqlDB einrichten will, bekommt oft die Fehlermeldung (”500 Interner Serverfehler”). Vorallem bei der Installation eines PlugIns bleibt WordPress stehen  oder reagierte seltsam, wenn man die PlugIn-Seite aufruft.

Die Lösung des Problems liegt in der .htaccess Datei im WordPress-Verzeichnis in die folgende Zeilen eingefügt werden müssen:

# PHP5 auf 1und1 einschalten
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php