SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.11.2007, 14:31:57
zabbensx zabbensx ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 10
Read Lock Status bestimmen

Hallo zusammen,

ich hab ein Problem wofür ich keine Lösung finde.

Hier mal kurz zur Sache, ich habe eine Datenbank auf myisam Basis.
Die Datenbank ist ca 20 MB groß und wächst, da dort teils wichtige Informationen drinnen
liegen fährt die Datenbank während der Hauptzeit (9-16 Uhr) stündlich ein Backup,
da es sich um eine MyIsam DB handelt muss ich erst mit FLUSH TABLES WITH READ LOCK
alle Tabellen Sperren, was natürlich mit sich zieht das die Webanwendung die dahinter liegt nun nicht mehr verfügbar ist (aktuell dauert dies ca 1 Minute),
da die DB wächst und anzunehmen ist das es bald doch einige Minuten braucht, dachte ich mir bau ich mir einen Hinweis ein.

Hier beginnt das Problem:
Ich finde nirgends eine Statusvariable oder andere möglichkeit, abzufragen
ob die DB gerade im READ LOCK status ist.
Einzige möglichkeit per show processlist denn wenn ein anderer User bereits eine anfrage gestartet hat, erscheint dort ja Waiting for Release of readlock.

Dummerweise hat nun der erste User keinen Hinweis und die Applikation steht bei ihm...

Hab auch zwei Variblen entdeckt (com_unlock_tables und com_flush)
leider zählen diese nur bei einer Consolensitzung mit.

Ich hab auch noch eine Variable gefunden(flush_commands) leider hab ich keinen Zähler gefunden der global die unlocks aufzeichnet.

Daher meine Frage,
gibt es noch eine andere Art den read lock zu bestimmen?

Vielen Dank für eure Hilfe

Gruß

ZX
Mit Zitat antworten
  #2  
Alt 27.11.2007, 14:39:36
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: Read Lock Status bestimmen

Aktiviere doch besser das binlog von Mysql und mache nur zum Beispiel alle Woche einmal ein Backup.
http://dev.mysql.com/doc/refman/5.1/en/binary-log.html
__________________
Wat der Bauer nich kennt, dit frisster nich.
Mit Zitat antworten
  #3  
Alt 27.11.2007, 16:49:55
zabbensx zabbensx ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 10
AW: Read Lock Status bestimmen

Zitat:
Zitat von defabricator Beitrag anzeigen
Aktiviere doch besser das binlog von Mysql und mache nur zum Beispiel alle Woche einmal ein Backup.
http://dev.mysql.com/doc/refman/5.1/en/binary-log.html
Die Idee gefällt mir, da hätt ich auch selbser draufkommen können ;)
Da eh ein Slave mitläuft hab ich die Datei ja auch, aber die Frage die ich noch hätte
kann ich auch beliebige momente wieder herstellen ? (z.B. 25.11.07 - 16h)
theoretisch läuft das ja so:

Ich nehm das Backup von dort als ich die Binary log gestartet habe (quasi das Paket,
welches auch auf den Slave drauf ist bevor er die Replikation startet)
Das Problem was ich hier sehe ist, das ich in der Binary-Log selbst auf anhieb keinen
Zeitstempel gefunden habe, das wäre fatal!

Denn dann kann ich die db ja nur bis jetzt wiederherstellen und wenns die (aufgrund
eines Unwissenden) zerschossen hat, dann hat ja auch das Binary Log diesen
misst in sich drinnen, gut könnte man raushauen, ist aber nicht sehr komfortabel vorallem
wenn der Fehler erst später auffällt könnte es ohne Zeitstempel auch schwer werden die Richtige stelle zufinden.

Nur wenn dus wissen willst, wir haben hier ein Paar "neue" die noch nicht so gut mit der Datenbank umgehen können, es aber lernen sollen und die machen oft misst,
ja ich würd denen auch das gerne verbieten bis sie es können, aber das geht leider nicht.

Auch machen oft die User misst den wir dann wieder ausbügeln dürfen.
Mit Zitat antworten
  #4  
Alt 27.11.2007, 17:21:05
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: Read Lock Status bestimmen

http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html
Zitat:
The output includes all events contained in binlog.000003. Event information includes the statement executed, the time the statement took, the thread ID of the client that issued it, the timestamp when it was executed, and so forth.
Also irgendwo muss diese info doch schon gespeichert sein.
__________________
Wat der Bauer nich kennt, dit frisster nich.
Mit Zitat antworten
  #5  
Alt 28.11.2007, 12:46:54
zabbensx zabbensx ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 10
AW: Read Lock Status bestimmen

Da kann man nur sagen AUA
Wer lesen kann ist klar im vorteil ;)
Der Zeitstempel kann mit mysqlbinlog ausgewertet werden,
so nun hätte ich da aber noch eine Frage:

Hab gestern die Datenbank runtergefahren n Snapshot gemacht (sowohl vom Dateisystem als auch N Backup via sql) so hab das Bin Log neugestartet (so das er ganz frisch anfängt)

So nun meine Frage angenommen ich habe einen Ausfall, nehmen wir an heute 14:00 Uhr
zu dieser Zeit wurde warum auch immer die dB Platt gemacht.

Nun gehe ich her stell erstmal mein Hauptbackup wieder her, soweit kein Prob,
dann stelle ich mit dem BinLog die daten wieder bis 13:59 her, hab zwar noch nicht
genau den Plan wie das geht aber das denke ich krieg ich schon gebacken,
nun aber zu meiner Frage, wie handle ich das mit dem BinLog jetzt?

Das BinLog ging ja bis 14 Uhr, soweit ich das verstanden habe soll man das BinLog nicht editieren, reicht....

...ich glaub ich hab mir grade die Antwort selbst gegeben :D
In dem Moment wo der SQL Server wieder jungfräulich ist ist ja auch das BinLog
leer, durch den Backup prozess den ich auslöse wird das BinLog wieder erstellt, bis
13:59. Somit hab ich ein konsitentes Binlog.

Oder?

Hat irgendwer schon erfahrung mit Recovery via BinLog ?
Soweit ich das verstanden habe gehe ich einfach her
mysqlbinlog logfile > daten.sql
und das lass ich dann einfach in mysql ausführen, passt das ?

Danke für die Hilfe
und vorallem den Tipp mit dem BinLog das ist ja sehr konfortabel, vorallem
was die Möglichkeiten angeht, kann ja quasi direkt vors unglück gehen ;)
Mit Zitat antworten
  #6  
Alt 28.11.2007, 13:20:44
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: Read Lock Status bestimmen

Zitat:
Zitat von zabbensx Beitrag anzeigen
Soweit ich das verstanden habe gehe ich einfach her
mysqlbinlog logfile > daten.sql
und das lass ich dann einfach in mysql ausführen, passt das ?
Den Umweg über die Datei kannst Du sogar weglassen.
mysqlbinlog logfile | mysql
__________________
Wat der Bauer nich kennt, dit frisster nich.
Mit Zitat antworten
  #7  
Alt 28.11.2007, 15:41:57
zabbensx zabbensx ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 10
AW: Read Lock Status bestimmen

Das hab ich auch gelesen ist aber ne Windows Büxe :(
und da hab ich gehört das, dass mit der Pipe nicht funzt ;)

Dank dir, ich bin auf morgen gespannt,
will morgen mal n Test fahren...
Mit Zitat antworten
  #8  
Alt 28.11.2007, 21:48:01
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: Read Lock Status bestimmen

Unter win9x vielleicht nicht. Aber ansonsten gibt es da eigentlich keine Probleme.
Aber wenn Dir der Weg über die Datei lieber ist, dann nimm ihn halt. Gibt sicher schilmmeres.
__________________
Wat der Bauer nich kennt, dit frisster nich.
Mit Zitat antworten
  #9  
Alt 29.11.2007, 11:45:22
zabbensx zabbensx ist offline
Anfänger
 
Registriert seit: Nov 2007
Beiträge: 10
AW: Read Lock Status bestimmen

Du hattest recht die Pipe funzt ohne Probs,
wollt mich nur nochmal bedanken mit dem Tipp das Binlog dazu zu missbrauchen ;)
Klappt super habs grade im Betrieb getestet, wie ne eins...

ZX sagt danke ;)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SHOW TABLE STATUS FROM ... LIKE ... exweised MySQLi/PDO/(MySQL) 0 11.03.2005 15:23:15
en: lock file, de: ?? c4 Off Topic Area 4 29.11.2004 13:37:34
Problem mit array schmidt PHP für Fortgeschrittene und Experten 15 23.10.2003 16:39:33
stringlänge bestimmen? andreas87 PHP für Fortgeschrittene und Experten 2 06.01.2003 19:00:14
Variablen mit session_id übergeben? Magnus PHP für Fortgeschrittene und Experten 21 02.09.2002 06:11:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:53:12 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt