Fehlerhafter Windows-Dienst-Status bei Mysql

Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 10:51:14 von emanuel

Hallo Zusammen

Ich habe mehrere MySql Server-Instanzen als Windows-Dienst installiert.
Ich habe ein Programm geschrieben, welches mit dem API-Befehl
QueryServiceStatus den MySql-Dienst-Status eines eben gestarteten
MySql-Dienstes ausliest. Ich muss zurzeit ein sleep von 3s setzten,
damit ich den richtigen Status erhalte. Lass ich sleep weg, kriege ich
den Status 'Gestartet' obwohl das gar nicht stimmt.

Das gleiche passiert mir, wenn ich den Dienst von Hand über die
Systemverwaltung starte. Zuerst erscheint 'Gestartet' nach dem
aktualisieren (Menü 'Aktion'->'Aktualisieren') ist der Status wieder
leer.

Vielen Dank für die Hilfe
Emanuel Blaser

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 10:57:42 von emanuel

Anmerkung

emanuel schrieb:

> Hallo Zusammen
>
> Ich habe mehrere MySql Server-Instanzen als Windows-Dienst installiert.

Es handelt sich um MySql 5.0.22 und Win XP mit Sp2.

>=20
> Vielen Dank für die Hilfe
> Emanuel Blaser

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 11:48:37 von Thomas Rachel

emanuel wrote:

> Das gleiche passiert mir, wenn ich den Dienst von Hand über die
> Systemverwaltung starte. Zuerst erscheint 'Gestartet' nach dem
> aktualisieren (Menü 'Aktion'->'Aktualisieren') ist der Status wieder
> leer.

Es könnte sich um ein Problem mit dem Windows-Kram handeln - dann wäre es
hier off-topic. Wenn aber alle anderen Dienste funktionieren, liegts wohl
an MySQL.

Das heißt, daß MySQL sich nicht starten lassen will. Was sagen denn die
Log-Dateien dazu? (Im Handbuch auf dev.mysql.com ist AFAIR genau
beschrieben, wo diese stehen).


Thomas
--
Ich glaube an das Pferd. Das Auto halte ich für eine
vorübergehende Modeerscheinung. (Kaiser Wilhelm II)

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 13:47:15 von emanuel

Thomas Rachel schrieb:

>
> Es könnte sich um ein Problem mit dem Windows-Kram handeln - dann wär=
e es
> hier off-topic. Wenn aber alle anderen Dienste funktionieren, liegts wohl
> an MySQL.

Alle anderen Dienste funktionieren. Ich bringe den Dienst auch zum
laufen wenn ich will. Das Problem ist, wenn ich mit dem gleichen Port
einen zweiten MySql-Dienst starten will, bemerkt der Dienst den Fehler
erst nach ca. 2-3s.

>
> Das heißt, daß MySQL sich nicht starten lassen will. Was sagen denn d=
ie
> Log-Dateien dazu? (Im Handbuch auf dev.mysql.com ist AFAIR genau
> beschrieben, wo diese stehen).
>

Anhand vom Ereignissprotokoll sieht man wie Windows reagiert:

Versuch:
MySql läuft bereits im Dienst MySql (Port 3306).
Jetzt wird der Dienst MySql2 ebenfalls mit Port 3306 gestartet (was
natürlich nicht geht).

Zeit: 13:19:05
Der Steuerbefehl "starten" wurde erfolgreich an den Dienst "MySQL2"
gesendet.
Zeit: 13:19:05
Dienst "MySQL2" befindet sich jetzt im Status "Ausgeführt".
Zeit: 13:19:07
Dienst "MySQL2" wurde unerwartet beendet.


Nicht bei jedem Error reagiert MySql erst so spät, ist z.B. das
Verzeichnis der Daten falsch, erscheint sofort eine Fehlermeldung.

Ich hab das Probelm auf zwei Pcs getestet, es ist auf beiden gleich.

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 14:32:12 von Martin Schneider

>>Es könnte sich um ein Problem mit dem Windows-Kram handeln - dann wäre es
>>hier off-topic. Wenn aber alle anderen Dienste funktionieren, liegts wohl
>>an MySQL.
>
[Snip]
> Nicht bei jedem Error reagiert MySql erst so spät, ist z.B. das
> Verzeichnis der Daten falsch, erscheint sofort eine Fehlermeldung.
>
> Ich hab das Probelm auf zwei Pcs getestet, es ist auf beiden gleich.
Das scheint wirklich ein Windows-Problem zu sein. Windows schickt den
Fehler, dass ein Port 2x belegt wurde, teilweise erst sehr spät an den
Aufrufer (hier den MySQL-Service). Und solange läuft der Service
natürlich, was Dir auch richtigerweise angezeigt wird.

Eine Lösung habe ich aber leider auch nicht... Du kannst nur vorher
selbst testen, ob der Port schon belegt ist.

Viele Grüße

Martin

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 14:44:57 von Thomas Rachel

emanuel wrote:
^^^^^^^ ...

> Alle anderen Dienste funktionieren. Ich bringe den Dienst auch zum
> laufen wenn ich will. Das Problem ist, wenn ich mit dem gleichen Port
> einen zweiten MySql-Dienst starten will,

Ach so...

> bemerkt der Dienst den Fehler erst nach ca. 2-3s.

Naja gut - da das eh ein Fehler ist, der vermeidbar sein sollte, ist das
IMHO nicht so tragisch.

> Versuch:
> MySql läuft bereits im Dienst MySql (Port 3306).
> Jetzt wird der Dienst MySql2 ebenfalls mit Port 3306 gestartet (was
> natürlich nicht geht).

Denn Du kannst den 2. Server ja auf einen anderen Port jegen und das Deinen
Clients mitteilen.


> Nicht bei jedem Error reagiert MySql erst so spät, ist z.B. das
> Verzeichnis der Daten falsch, erscheint sofort eine Fehlermeldung.
>
> Ich hab das Probelm auf zwei Pcs getestet, es ist auf beiden gleich.

Was für ein Problem? Ist es denn eins?


Thomas
--
Die .sig wurde fristlos entlassen.

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 16:38:13 von emanuel

Thomas Rachel schrieb:

> emanuel wrote:
> ^^^^^^^ ...
>
> > Alle anderen Dienste funktionieren. Ich bringe den Dienst auch zum
> > laufen wenn ich will. Das Problem ist, wenn ich mit dem gleichen Port
> > einen zweiten MySql-Dienst starten will,
>
> Ach so...
>
> > bemerkt der Dienst den Fehler erst nach ca. 2-3s.
>
> Naja gut - da das eh ein Fehler ist, der vermeidbar sein sollte, ist das
> IMHO nicht so tragisch.
>
> > Versuch:
> > MySql läuft bereits im Dienst MySql (Port 3306).
> > Jetzt wird der Dienst MySql2 ebenfalls mit Port 3306 gestartet (was
> > natürlich nicht geht).
>
> Denn Du kannst den 2. Server ja auf einen anderen Port jegen und das Dein=
en
> Clients mitteilen.
>
>
> > Nicht bei jedem Error reagiert MySql erst so spät, ist z.B. das
> > Verzeichnis der Daten falsch, erscheint sofort eine Fehlermeldung.
> >
> > Ich hab das Probelm auf zwei Pcs getestet, es ist auf beiden gleich.
>
> Was für ein Problem? Ist es denn eins?

Das Problem ist, ich muss den User ein paar Sekunden länger warten
lassen, bis der Server gestartet ist, falls er schon eine MySql
Datenbank installiert hat.

Es gibt (fast) immer mehrere Möglichkeite für eine Lösung. Ich
wollte mir das Port-Scannen ersparen und dachte, ich machs mit try and
error. Leider sind dann die oben beschriebenen Probleme aufgetaucht,
was die Umsetzung erschwerte.

Vielen Dank für die Antworten!
Emanuel Blaser

Re: Fehlerhafter Windows-Dienst-Status bei Mysql

am 27.07.2006 21:45:24 von ascii158

emanuel schrieb:
> Das Problem ist, ich muss den User ein paar Sekunden länger warten
> lassen, bis der Server gestartet ist, falls er schon eine MySql
> Datenbank installiert hat.
>
> Es gibt (fast) immer mehrere Möglichkeite für eine Lösung. Ich
> wollte mir das Port-Scannen ersparen und dachte, ich machs mit try and
> error. Leider sind dann die oben beschriebenen Probleme aufgetaucht,
> was die Umsetzung erschwerte.

Wieso Port-Scannen, bietet nicht auch Windows eine Möglichkeit per API
die Prozessliste auszulesen? Da schaust du einfach rein, ob ein
mysqld.exe läuft...

Mal davon abgesehen, warum willst du ohne Rückfrage einfach einen Dienst
installieren und starten? Die meisten Nutzer, die eine MySQL drauf haben
werden das wissen, und deinem Programm das sagen können.

Grüße,
--
Philipp Tölke
PGP: 0x96A1FE7A