Archiv der Kategorie: SuSE

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.

Wie baue ich eine OCI Modul für PHP5 und Apache2?

Benötigt wird:

Bei SuSE 10.X

Anlegen von mkdir /opt/oracle

Auspacken der Zip-Dateien in den Ordner /opt/oracle/instantclient_10_2
Link anlegen
cd /opt/oracle/instantclient_10_2
ln -s libclntsh.so.10.1 libclntsh.so

Test ob Oracle vorhanden:
echo $ORACLE_HOME

Anlegen der Pfade in der Datei /etc/profile

ORACLE_HOME=/opt/oracle/instantclient_10_2
LD_LIBRARY_PATH=$ORACLE_HOME
export ORACLE_HOME
export LD_LIBRARY_PATH

Der gleiche Eintrag muss auch noch in
/etc/init.d/apache2

Tip: vom System abmelden und wieder anmelden

cd /opt/oracle/
wget http://pecl.php.net/get/oci8
pear5 install oci8-1.2.3.tgz

—————————-Meldung ———————————
10 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Please provide the path to ORACLE_HOME dir. Use ‚instantclient,/path/to/instant/client/lib‘
if you’re compiling against Oracle Instant Client [autodetect] :
—————————-Meldung ———————————

Eingeben von: instantclient,/opt/oracle/instantclient_10_2

Nach der Installation:
Die Datei /etc/php5/conf.d/oci.ini anlegen mit dem Inhalt:

; comment out next line to disable oci extension in php
extension=oci8.so

Test der Installation:
php /usr/share/doc/packages/php5/test.php5 | grep oci8

Apache2 Restarten

Testseite anlegen und ausführen:

Da wir keine tnsnamesora verwenden ändert sich der Aufruf:

—————————-Meldung ———————————
< ?php

$conn = OCILogon(„dbuser“, „dbpasswd“, „//dbserver.host.net/DB“);

$query = ’select table_name from user_tables‘;

$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);
while ($succ = OCIFetchInto($stid, $row)) {
foreach ($row as $item) {
echo $item.“ „;
}
echo „
\n“;
}

OCILogoff($conn);

?>
—————————-Meldung ———————————

Links:
http://www.oracle.com/technology/tech/php/index.html
http://en.opensuse.org/Howto_build_oci8_extension_module_for_php

Apache: exit signal File size limit exceeded (25)

Es gibt manchmal Fehler die eigentlich nicht passieren dürften, bei der Kontrolle der Logfiles stolperte ich auf folgende Fehlermeldung: „child pid 8914 exit signal File size limit exceeded (25)“

Die Meldung machte mich stutzig, da ja alle Logfiles in der Datei (SuSE) /etc/logrotate.d/apache2
eingetragen sein sollten. Durch eine kleines Script überprüfte ich mein Apache Konfigurations File mit:

‚du -h $(cat yast2_vhosts.conf | grep -v „#“ | grep „CustomLog“ | awk ‚{print $2}‘) | grep „G“ ‚

Spontan tauchten in den Konsole drei Logfiles mit einer Größe von 11Gb auf.
Die Lösung war einfach, Logs verschieben / umbenennen und den Webserver einen Restart verordnen. Die Datei „/etc/logrotate.d/apache2“ durch die Fehlenden Einträge ersetzen fertig.

Die einzige Frag die offen bleibt: „Warum standen die Logs nicht in der Datei?“
Und die Erkenntnis, das Apache2 nur Files bis 2 GB verarbeiten kann.

Support für Suse Linux 10 wird eingestellt

Wie der Linux-Distributor Novell bekannt gab, endet mit der Freigabe der kommenden Version der OpenSuse-Distribution der offizielle Support für Suse Linux 10.

Benutzer der vor zwei Jahren freigegebenen Version 10.0 von Suse Linux sollten spätestens in einem Monat über eine Migration ihrer Systeme auf eine neue Version der Distribution nachdenken. Wie der Hersteller bekannt gab, wird es ab dem 15. November keine weiteren Sicherheitspatches mehr für das alte Produkt geben. Ende November soll dann definitiv Schluss sein. Fortan wird das Produkt offiziell nicht mehr gepflegt und in das Verzeichnis /pub/suse/discontinued verschoben.

Unangetastet bleibt dagegen der Support für die Unternehmens-Varianten von Suse Linux 10. Sowohl Suse Linux Enterprise Desktop 10 als auch die Server-Variante, Suse Linux Enterprise Server 10, werden weiterhin mit Patches versorgt. Der Supportanspruch soll, wie bereits bei älteren Versionen, erst zwei Jahre nach der Freigabe erlöschen. Suse Linux 10.0 wurde im Oktober 2005 veröffentlicht.

Powered by ScribeFire.