anpera.net
https://anpera.dyndns.org/phpbb3/

MYSQL Speichern
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=3330
Seite 1 von 2

Autor:  Ferenan [ Mo 29 Jan, 2007 15:12 ]
Betreff des Beitrags:  MYSQL Speichern

Ich habe mir die ganzen Sachen hier im forum durchgelesen zum thema und irgendwie waren das doch immer sonderfälle.

bei mir ist das nicht so. Ich will eine Art back-up Datei erstellen und habe echt schiss.
Ich habe absolut keine Plan von Mysql...und vom rest auch noch nicht :P

Ich wollte mal frage, ob mir jemand sagen kann, wie ich eine Sicherheitskopie erstelle.
Wäre toll, wenn zB mein Server umziehen muss oder wenn ich was auf meinem Lokal Host testen möchte.
Könnt ihr mir helfen?

Autor:  Nightborn [ Mo 29 Jan, 2007 15:38 ]
Betreff des Beitrags: 

Welches System, welche Zugriffsrechte, das wäre gut zu wissen.

Wenn Du Konsolenzugriff hast, ist z.B. mein Sicherungsbefehl
$this->bbcode_second_pass_code('', '
/usr/bin/mysqldump -uroot -pROOTPW -h localhost -A | gzip > /backupdir/archive-TAG.sql.gz')

mach einen Dump und zippt das ganze File direkt.

Schöne, saubere Lösung, mit Variablen als Shell oder PHP Datei gemacht, eine mehr als ausreichende. Das ganze im Cronjob läuft 2x täglich.

Autor:  Lestat [ Mo 29 Jan, 2007 15:50 ]
Betreff des Beitrags: 

Das hängt natürlich davon ab, was für eine Admin-Oberfläche du verwendest. Also ich verwende "phpMyAdmin", was ja recht verbreitet ist.
Dort kann man recht einfach entweder (um ein Backup auf dem Server zu halten) die Datenbank kopieren (Die Datenbank wid dann einfach unter anderem Namen erneut angelegt, was den Vorteil hat sehr schnell zu gehen, und im Fall der Fälle schnell umbenannt werden kann), oder man kann die Datenbank exportieren. Dazu musst du die betreffende Datenbank auswählen und den Button "Exportieren" klicken. Hier hats du nun die Auswahl welche Datenbanktabellen du exportieren möchtest, also am besten "Alle auswählen"

Bei dem Feld, wo du den Dateinamen eingeben kannst musst du den Haken "Senden" setzen. Nach Klick auf OK beginnt der Download :)

Um die Größe des Backups zu verkleinern solltest du vorher noch folgende SQL-Anweisung ausführen.

$this->bbcode_second_pass_code('', 'DELETE
FROM `referers`
WHERE 1;

DELETE
FROM `debuglog`
WHERE 1;

DELETE
FROM `faillog`
WHERE 1;

UPDATE `accounts`
SET output='', allowednavs='',restorepage=''
WHERE 1;')

Um Probleme während des Backups zu vermeiden (wenn noch Spieler eingeloggt sind z.b.) gehe ich wie folgt vor:

1. kopieren der DB "logd" (oder wie immer sie bei dir heisst) in "logd_JJJJMMTT" wobei JJJJMMTT für das aktuelle Datum steht.
2. ausführen der obigen SQLs in der kopierten DB mit anschliessendem optimieren der Tabellen.
3. export der kopierten und optimierten Datenbank.

Hoffe die "Anleitung" war verständlich. Viel Erfolg! :wink:

Autor:  Nightborn [ Mo 29 Jan, 2007 17:23 ]
Betreff des Beitrags: 

*hust*

Bitte sag auch noch, was Deine SQL Befehle da machen...
und das "Where 1" ist nicht nötig.

Der letzte Befehl zum Beispiel ist... pikant.
Soweit ich weiß, schickst Du damit alle Leute, die sich nachher einloggen, auf eine badnav Seite... weil nix allowednavs da.

Wenn Du das regelmäßig machst, würde ich als Spieler mir Gedanken machen, warum ich oft nicht im Haus, sondern in einer badnav aufwache.

Autor:  Harthas [ Mo 29 Jan, 2007 17:51 ]
Betreff des Beitrags: 

Zitat:
1. kopieren der DB "logd" (oder wie immer sie bei dir heisst) in "logd_JJJJMMTT" wobei JJJJMMTT für das aktuelle Datum steht.
2. ausführen der obigen SQLs in der kopierten DB mit anschliessendem optimieren der Tabellen.


Lies mal diese zwei Punkte ;-).
Ausserdem hatte Eliwood hier irgendwo noch n Script geschrieben, welches sichbei Aufruf ein Backup macht und es dann in eine Textdatei speichert. Wo dieses Skript aber genau zu finden ist weiss ich nicht...

Und meines Wissens ist Truncate grundsätzlich besser, um Tabellen wieder zu reinigen, beziehungsweise diese zu leeren.


Ich hatte soeben noch ein kleines Skript von Protectus.de gefunden.

[php]<?php

// error_reporting(0);

// ### (c) by Protecus.de ########
// ### EINSTELLUNGEN #############
// ###############################

$user = 'root'; // Name
$pass = ''; // Passwort
$database = 'test'; // zu sichernde Datenbank
$path = './backup/'; // Backup Ordner
$number_of_files = '5'; // mehr als x Dateien löschen (Autodelete)

// ###############################
// Updates: http://board.protecus.de/t9581.htm

// checke Backupordnergrösse
function dirsize($dir){
$dirsize=0;
$handle=opendir ($dir);
while (false !== ($file = readdir ($handle))) {
$dirsize+=filesize($dir.$file);
}
closedir($handle);
return $dirsize;
}

// Starte Output
echo '<html>
<head>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>MySQL Backup</title>
<style type=\'text/css\'>
<!--
h1 { font-family: verdana, arial;}
body,p,td,a { font-family: verdana, arial; font-size: 8pt;}
//-->
</style>
</head>
<body>

<h1>MySQL Backup</h1>
<b><u>Konfiguration:</u></b>
<br /><b>Sicherung Datenbank:</b> '. $database .'<br />
<b>Auto-Löschen aktiviert:</b> +'.$number_of_files.' Dateien<br />
<b>GZip-Komprimierung:</b> aktiv<br />
<b>Backups gesamt:</b> '.round(dirsize("$path")/(1024*1024),2).' MB<br /><br />
<p><b>Backup wird ausgeführt...</b><br /><br /><span style="color:darkblue; font-weight:bold" id="dspan">|</span></p>
<script type="text/javascript"><!--
function js_dots()
{
dspan.innerText = dspan.innerText + "|";
jstimer = setTimeout("js_dots();", 200);
}
if (document.all)
{
js_dots();
}
//--></script>';


// Backupverzeichnis erstellen, falls noch nicht existient!
if (!is_dir($path)) mkdir($path, 0777);
$dh = opendir($path);
while (false !== ($filename = readdir($dh)))
{
if ($filename != "." && $filename != "..") $files_unlink[] = $filename;
}

@rsort($files_unlink);

if (sizeof($files_unlink) >= $number_of_files)
{
for($n=sizeof($files_unlink)-1; $n>=$number_of_files; $n--)
{
unlink($path.$files_unlink[$n]);
}
}

// Backup erstellen

$datei = date("d\.m\.Y\_H",time())."_Uhr_".date("i",time()); // Dateiname aus Datum und Uhrzeit bilden
$datei .= ".gz";
if (file_exists($datei)) unlink($datei);

$path = str_replace(".", "", $path);

system("/usr/bin/mysqldump -u$user -p$pass -h localhost $database | gzip > ".dirname(__FILE__)."$path/$datei", $fp);
if ($fp==0) $meldung = "Backup erfolgreich!"; else $meldung = "Es ist ein Fehler aufgetreten!";


// und Meldung, dass fertig!
echo '
<script type="text/javascript"><!--
if (document.all)
{
clearTimeout(jstimer);
}
//--></script>
<p>'.$meldung.'</p>
<p><blink><b>Fertig!</b></blink></p>
</html>
</head>';

?>[/php]

Autor:  Lestat [ Mo 29 Jan, 2007 21:44 ]
Betreff des Beitrags: 

Nightborn hat geschrieben:
*hust*

Bitte sag auch noch, was Deine SQL Befehle da machen...
und das "Where 1" ist nicht nötig.

Der letzte Befehl zum Beispiel ist... pikant.
Soweit ich weiß, schickst Du damit alle Leute, die sich nachher einloggen, auf eine badnav Seite... weil nix allowednavs da.

Wenn Du das regelmäßig machst, würde ich als Spieler mir Gedanken machen, warum ich oft nicht im Haus, sondern in einer badnav aufwache.


Die SQLs sorgen dafür, dass das Datenbankdump (welches ja rein für ein Backup gedacht ist) erheblich kleiner wird, und werden NICHT im laufenden Betrieb auf die DB losgelassen, sondern nur auf die Kopie, vor dem eigentlichen Backup.
Badnavs bekommt man auch nicht.

Dass das "WHERE 1" nicht unbedingt notwendig ist, ist auch klar, aber es ist einfach sauberer.


Es geht ja "nur" darum ein Backup für Notfälle zu besitzen.

Autor:  Nightborn [ Mo 29 Jan, 2007 23:36 ]
Betreff des Beitrags: 

Also das mit der Kopie muß ich wohl überlesen haben...

ich sah das im Livebetrieb...

nach der Beschreibung.

übrigens: wenn man gzcompress auf den output losläßt, wird das ganze sehr viel schlanker (wurde mir heute beigebracht von einem halbgott)
und das in saveuser.php

Autor:  Lestat [ Di 30 Jan, 2007 17:57 ]
Betreff des Beitrags: 

Hm, hab mich vielleicht auch schlecht ausgedrückt..
Naja, wie auch immer, jetzt ist es ja klar. :D

Die Kompression habe ich lange Zeit auch direkt aus phpMyAdmin heraus genutzt, nur hat es ab und zu Probleme gegeben, also Teile des Dumps wurden abgeschnitten, etc.
Daher lasse ich die Kompression weg, denn dort hatte ich noch nie Probleme.
Aber prinzipiell hast du recht. Mit eingeschalteter Kompression spart man deutlich Platz.

Autor:  Ferenan [ Di 30 Jan, 2007 18:54 ]
Betreff des Beitrags: 

Danke leute^^

Hat mir weitergeholfen^^

Autor:  Lucifer [ Do 20 Mär, 2008 17:40 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Also ich hab backup gemacht und wie kann ich das einfügen bzw: aufn anderen server aber mit der selben mysql version ?
$DB_USER="123"; //Database Username

$DB_PASS="pw"; //Database Password

$DB_HOST="host/"; //Database Hostname

$DB_NAME="dbname"; //Databasename

oder ?

Autor:  MySql [ Do 20 Mär, 2008 17:53 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Du kannst eine Datenbank "NICHT" auf mehrere Domains aufteilen! - Zumindest nicht ohne gewisse berechtigungen!
Ich selber habe noch kein BAckup von meiner Datenbank gemacht, werde es vorerst auch nicht machen(!) (müssen!)
Aber ich kann mir vorstellen, das du dieses Backup dann als *.sql bzw. *.txt oder gar als *.doc Datei erhälst die du auf dem Rechner speicherst.

Um die in einer anderen DB einzufügen, gehst du einfach auf "SQL" und nimmst die untere Anweisung "SQL-Einträge aus Datei". - Oder so ähnlich..

Hoffe ich habe dich jetzt richtig verstanden, sonst kaufe ich mir a. ne Brille, b. n' bissel Grips...

Autor:  The_Muh [ Do 20 Mär, 2008 17:55 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Wenn man die Backup-datei wirklich verkleinern will, würde ich die News-Table ebenfalls leeren.
da die nicht unbedingt wichtig ist, aber nach kurzer zeit sehr voll wird.

mfg
The_Muh

Autor:  MySql [ Do 20 Mär, 2008 17:57 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Ähm... entschuldige bitte, aber hier spricht gerade niemand davon eine Backup-Datei zu verkleinern. :?

Autor:  The_Muh [ Do 20 Mär, 2008 18:06 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Siehe oben (lestat)
wollte meinen senf halt auch noch dazugegen.

und zum eigentlich Topic (damit zu zufrieden bist):
1. Phpmyadmin aufrufen
2. Datenbank aussuchen
3. (optional) die schritte von lestat.
4. Oben auf "exportieren", dann unten rechts auf "OK"
5. Den angezeigten Code in einer Text-datei abspeichern.

Wenn man das Backup wieder einspielen will:

1. Alte (fehlerhafte?) datenbank leeren.
2. SQL ausführen (den Abgespeicherten Code)
3. Fertig.

Edit: ich würde parallel dazu immer den Source mitspeichern, sonst kanns passieren das du neue Modifikationen hast die mit der Alten datenbank nicht funktionieren und hättest den doppelten aufwand.

Autor:  Lucifer [ Do 20 Mär, 2008 19:26 ]
Betreff des Beitrags:  Re: MYSQL Speichern

MySql hat geschrieben:
Du kannst eine Datenbank "NICHT" auf mehrere Domains aufteilen! - Zumindest nicht ohne gewisse berechtigungen!
Ich selber habe noch kein BAckup von meiner Datenbank gemacht, werde es vorerst auch nicht machen(!) (müssen!)
Aber ich kann mir vorstellen, das du dieses Backup dann als *.sql bzw. *.txt oder gar als *.doc Datei erhälst die du auf dem Rechner speicherst.

Um die in einer anderen DB einzufügen, gehst du einfach auf "SQL" und nimmst die untere Anweisung "SQL-Einträge aus Datei". - Oder so ähnlich..

Hoffe ich habe dich jetzt richtig verstanden, sonst kaufe ich mir a. ne Brille, b. n' bissel Grips...

wenn es der gleich provider is ?

Autor:  MySql [ Do 20 Mär, 2008 19:51 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Auch nicht...

Ich gebe dir mal ein Beispiel:

Ich habe zwei Domains auf meinem Account bei Server4Zou geregt.
Eine dieser Domains geh;rt mir, die andere einem guten Freund.
The three Worlds - mein Server
ob-games - Alex seine Website+Server

So... Nun...ein Account im System (Powerpanel) kann eine Domain für sich beanspruchen...
Mein Acc ist "Administrator". Dieser Administrator kann dann bei uns "Reseller" erstellen.
Und dieser "Reseller" erstellt beliebig viele Kunden. Doch jeder Kunde kann nur eine Domain für sich beanspruchen!
So hat "web1" die Domain the-tree-worlds.de und "web2" die Domain ob-games.de!
Daher jeder dieser nun eine eigene phpMyAdmin oberfläche zugewiesen bekommt, kann ich z.B. nicht mit ob-games auf the-tree-worlds.de zugreifen. Es seie denn, ich lass mir von meinem Hoster für soetwas eine Berechtigung geben. Und das wiedrum geht auch nciht bei jeden.

- Machs dir einfach, reg 2 Funpic acc's (Ohne lotgd aufzuspielen) und versuche mal mit einem der beiden ACC auf die Datenbank des anderen zuzugreifen... Wird nicht gelingen...

Bei genaueren Frage, löchere doch deinen Hoster mal kräftig durch, denn der kann dir dazu bestimmt mehr sagen als jeder andere hier...

My.

Autor:  Lucifer [ Do 20 Mär, 2008 20:35 ]
Betreff des Beitrags:  Re: MYSQL Speichern

danke das wollt ich ja nur wissen :)

Autor:  Eliwood [ Fr 21 Mär, 2008 00:01 ]
Betreff des Beitrags:  Re: MYSQL Speichern

cssforum.de
xhtmlforum.de

Beides eine Domäne, gleiche Adresse. Gut, nicht exakt das gleiche (cssforum ist ein Redirect), aber beides auf den gleichen Platz zeigen zu lassen ist ohne Probleme möglich - vorausgesetzt, der Provider unterstützt das. Technisch allerdings ohne Probleme möglich, dass 2 verschiedene Adressen zur gleichen IP auflösen. Müsste mich schwerst irren, wenn das nicht möglich ist.

Autor:  Lucifer [ Fr 21 Mär, 2008 11:25 ]
Betreff des Beitrags:  Re: MYSQL Speichern

eli ?
rein theorischtisch müsste es gehn oda wie meintes du das?

Autor:  Eliwood [ Fr 21 Mär, 2008 11:55 ]
Betreff des Beitrags:  Re: MYSQL Speichern

Ja. In der Theorie gehts.

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/