You are not logged in.

wcf.regNote.message

Hexo

Intermediate

  • "Hexo" started this thread

Posts: 297

  • Send private message

1

Sunday, August 12th 2007, 1:25pm

SQL optimieren

Hey.

Ich sichere per Cronjob meine Datenbank (jede Nacht um 3 Uhr) in ein bestimmtes Verzeichniss auf meinem Webspace.
Nun möchte ich auch, dass ich einmal in der Nacht meine Datenbank optimieren. Im Moment mach ich das noch regelmäßig per Hand aber die Datenbank wird immer größer (mittlerweile über 115.000 Beiträge) und ich merke nach einer optimierung ein verbesserung der Geschwindigkeit. Deswegen würde ich das gerne täglich machen und ab liebsten per Job.

Dann würde ich gerne per Job in einen bestimmten Ordner auf dem Webspace Daten, die älter als 14 Tage sind, automatisch löschen. Geht das auch?

Ich hab bei All-inkl.com 25 Jobs frei.

Was gibt es denn noch für jobs, die bei einem Forum sinnvoll und zu empfehlen sind?

Gruß

This post has been edited 1 times, last edit by "Hexo" (Aug 12th 2007, 1:26pm)


Prometheus

Administrator

Posts: 3,278

  • Send private message

2

Sunday, August 12th 2007, 1:38pm

Also grundsätzlich würde ich sagen die Datenbank nur zu sichern ist zu wenig. Wenn die Festplatte aufraucht ist alles weg. Du musst entweder einen externen Server haben wo Du zusätzlich sichern kannst oder eben so oft es geht die Datenbank runter laden.

Außerdem würde ich den gesamten Webordner auch einpacken mit tar.gz und runter laden. Die reine DB nützt garnichts wenn der rest fehlt.

Was noch Sinnvoll ist das müsstest Du aber mal schaun ob das bei Dir überhaupt nötig ist ist ein Log Rotate. Das sorgt dafür das jede Nacht z.B. die Logfiles gepackt werden und neue angefangen werden. Ansonsten wachsen die Logs unaufhaltsam weiter.

Ansonsten wüsste ich nichts was nötig ist im Cronjob. Zumindest nichts was sein muss. Du kannst z.B. auch Logs die ein bestimmtes Alter haben löschen lassen oder sonst irgendwas.

Was übrigens immer gut funktioniert wenn man mal nicht weiß wie man z.B. das mit dem Optimieren der DB schafft dann einfach ein PHP Skript schreiben und das in irgend enen Ordner legen der nicht übers Web erreichbar ist und dort dann einfach in PHP die gewünschten Vorgänge ausführen. Nutze ich z.B. auch um kleinigkeiten zu machen. Im Cronjob brauchst Du dann nur das PHP File ausführen mit php -f und ab gehts. Bei Dir hätte das noch den Vorteil das Du mit einem Cronjob mehrere Sachen machen kannst.
Jedwege Anfragen bitte an Technomausi oder ShaoKhan richten. Dieses Konto ist und bleibt inaktiv.

Hexo

Intermediate

  • "Hexo" started this thread

Posts: 297

  • Send private message

3

Sunday, August 12th 2007, 2:22pm

Quoted

Original von Prometheus
Was übrigens immer gut funktioniert wenn man mal nicht weiß wie man z.B. das mit dem Optimieren der DB schafft dann einfach ein PHP Skript schreiben (...)


Wie würde das Script aussehen? Soweit bin ich mit meinem PHP Kenntnissen noch nicht ;-) (als um die Datenbank optimieren)

Zu dem Versenden der gesicherten Datenbank auf einen anderen Webspace... Wie würde das am besten von statten gehen.
Bei All-inkl.com hab ich nur den Webspace und keine besonderen Rootrechte. Angenommen ich wollte die Datenbank per Script jede Nacht auf einen rootserver übertragen wollen (z.b. Deinem ;-) ).... wie würde ich da vorgehen?

Und Du hast vollkommen recht. Der ganze Webspace müsste gesichert werden. Das mach ich aber noch ca. 1 mal im Monat von Hand. Das reicht mir auch. Für mich ist das wichtigste die Datenbank. Wenn die Platte wirklich mal abrauchen würde, kann ich mit der aktuellen Datenkbank immerhin das Board wieder aufbauen. Klar, es fehlen vielleicht ein paar "Avatare usw" aber das wichtigeste: Die Beiträge, User etc. sind noch da!

Hexo

Intermediate

  • "Hexo" started this thread

Posts: 297

  • Send private message

4

Tuesday, August 14th 2007, 6:15am

Moin.

Würde das mit dem Optimieren der Datenbank theretisch so gehen?
Oder kann man das verbessern?
Weil irgendwie klappt das noch nicht so wirklich.
Ps: Ja ich hab die richtigen Daten bei "User" und "Passwort"
eingegenen.

Gruß

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php

$mysqlhost        = "localhost"; // MySQL-Host angeben
$mysqluser        = "Name"; // MySQL-User angeben
$mysqlpwd         = "Passwort"; // Passwort angeben

############################################################################

$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd);
if (mysql_error()) {
    echo "Konnte Datenbankserver nicht anwählen, bitte versuchen Sie es später nocheinmal. <!-- ".mysql_error()."//-->";
}

$db_list = mysql_list_dbs();
$i = 0;
$cnt = mysql_num_rows($db_list);

echo "<table cellspacing=\"0\" cellpadding=\"0\" width=\"500\" align=\"center\">\n";

while ($i < $cnt) {

   $db =  mysql_db_name($db_list, $i);
        ####################################################################

        mysql_select_db($db, $connection);
        $result = mysql_list_tables($db);

                echo "<tr>
						<td colspan=\"2\" style=\"font-weight:bold\"><br />Datenbank: <span style=\"color:blue\">".$db."</span></td>
					  </tr>\n";
                echo "<tr>\n
						<td>Tabelle</td>
						<td>Ergebnis</td>\n
					  </tr>\n";
        while ($row = mysql_fetch_row($result)) {

                        $sql = "OPTIMIZE TABLE `".$row[0]."`";
                        $erg = mysql_query($sql, $connection) or die(mysql_error());
                        $daten= mysql_fetch_array($erg, MYSQL_ASSOC);

                        if($daten){

							switch ($daten['Msg_text']) {
								case "Table is already up to date":
								$color = "#CAF9AE";
								break;

								case "OK":
								$color = "#63EB66";
								break;

								case "The handler for the table doesn't support check/repair":
								$color = "#63EB66";
								break;

								default:
								$color = "#F21C1C";
								break;
							}

                            echo "<tr style=\"background-color:".$color."\">
									<td width=\"300\" nowrap>".$row[0]."</td>
									<td width=\"200\" nowrap>".$daten['Msg_text']."</td>
								  </tr>\n";
                    }
                }
                ####################################################################
                $i++;
    }
    echo "</table>\n";
?>

wcf.user.socialbookmarks.titel