WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Problem med stor MySQL-fil (https://www.wn.se/forum/showthread.php?t=36524)

Althalos 2009-04-28 18:48

Hej
Här är ännu ett problem som har med min lokala set-up på datorn att göra. Som jag frågade om i en annan tråd också. Den här gången gäller det hur jag ska få över mina databaser, som är sex stycken och totalt blir över 100 mb. Hur jag än gör så får jag error relaterat till storleken, inte ens det skript jag hittat och som heter BigDump fungerar. Har ni något tips på hur ni hade gjort?

tackar på förhand

Westman 2009-04-28 19:05

Dumpa dem en och en? Annars kan du ta en titt på MySQLs migreringsmotor.

Slacker 2009-04-29 05:56

MySQLDumper borde fungera för att återställa stora filer.
http://www.mysqldumper.de/en/

Björklund 2009-04-29 09:16

100mb är inte så mycket. mysqldump som ingår i MySQL klarar det på några sekunder.

elitasson 2009-04-29 10:28

MySQL Front är det senaste program jag investerat i och sköter sådant här väldigt bra.

tartareandesire 2009-04-29 10:55

Citat:

Originally posted by jonasb76@Apr 29 2009, 09:16
100mb är inte så mycket. mysqldump som ingår i MySQL klarar det på några sekunder.

Jag tycker också det låter lite märkligt då det inte är extremt stora databaser. Det tar dock betydligt mer än några sekunder på många amerikanska webbhotell men ligger du på ett svenskt borde det fungera utan några som helst problem. Om så är fallet borde du tala med webbhotellet.

dAEk 2009-04-29 22:44

Är det filstorleken vid överföringen som det klagas på kan du ju zippa filerna innan du skickar över dem för import. Eller är det webbhotellet/servern som inte tillåter databaser eller filer över en viss storlek? Det framgår ju inte när felet inträffar.

Althalos 2009-05-01 21:36

Nja.. jag får olika fel vilket verkar bero på hur PHPMyAdmin/NaviCat skriver sina backupfiler. Som BigDump inte klarar av och inte heller PHPMyAdmin, p.g.a. begränsningar i PHP-inställningarna.

Någon som kan länka mig till en sidao m hur jag använder MySQL-dump? När jag testar de kommandona i NaviCat så händer ingenting. Jag får helt enkelt en nya rad som ser ut som såhär: -> och klickar jag enter får jag ytterliggare en -> o.s.v.

Danielos 2009-05-01 22:25

Althalos, kan du fixa ssh login på servern?

Althalos 2009-05-02 11:25

Nej =(

Althalos 2009-05-02 17:46

Okej, jag har nu fixat i PHPs inställningar så den accepterar större filer och större posts, för säkerhetsskull. Lyckas med vissa backupfiler men inte med andra. Felmeddelandet är MySQL server gone away, exempel:

Citat:

INSERT INTO `cache_menu` VALUES ('router:', 0x613A3739303A7B733A343A226E6F6465223B613A32363A7B 733A353A227469746C65223B733A373A22436F6E74656E7422 3B733A31333A22706167652063616C6C6261636B223B733A31 373A226E6F64655F706167655F64656661756C74223B733A31 363A2261636365737320617267756D656E7473223B613A313A 7B693A303B733A31343A2261636365737320636F6E74656E74 223B7D733A343A2274797065223B693A343B733A363A226D6F 64756C65223B733A343A226E6F6465223B733A31343A226C6F 61645F66756E6374696F6E73223B733A303A22223B733A3136 3A22746F5F6172675F66756E6374696F6E73223B733A303A22 223B733A363A22776569676874223B693A303B733A31333A22 5F6E756D6265725F7061727473223B693A313B733A363A225F 7061727473223B613A313A7B693A303B733A343A226E6F6465 223B7D733A343A225F666974223B693A313B733A383A225F76 697369626C65223B623A313B733A343A225F746162223B623A 303B733A31303A227461625F706172656E74223B733A303A22 223B733A383A227461625F726F6F74223B733A343A226E6F64 65223B733A31353A226163636573732063616C6C6261636B22 3B733A31313A22757365725F616363657373223B733A31343A 2270[...]

MySQL sa: Dokumentation
#2006 - MySQL server has gone away


Jake.Nu 2009-05-02 18:46

Här är ett gammal fult script som jag gjort och använt en del.
Kanske strular det lite beroende på charsets och likn.

1. Lägg sql-filen och scriptet i samma katalog på webbservern.
2. Sätt namnet på sql-filen i $filename
3. Sätt $max_per_request till så många _byte_ som du vill köra per request.
4. Surfa in på sidan

Kod:

<?php

$filename = "mysqldump.sql";
$max_per_request        = 52428800; // 5 MB

function get_data(&$offset, $max = 8192, $filename)
{
        $rows = array();
       
        if ($fp = fopen($filename, "r"))
        {
 *$is_row        = false;
 *$buf *= "";
 *$tot_len        = 0;
 *
 *if ($offset)
 *{
 *        fseek($fp, $offset, SEEK_SET);
 *}
 *
 *while ($row = fgets($fp))
 *{
 *        if (!$is_row)
 *        {
 * *if (strpos($row, "CREATE") !== 0 && strpos($row, "INSERT") !== 0)
 * *{
 * *        continue;
 * *}
 * *
 * *$is_row        = true;
 * *$buf *= "";
 *        }
 *       
 *        $buf .= $row;
 *        $row_len = strlen($row);
 *        $tot_len += $row_len;
 *       
 *        if (strpos($row, ";\n") === $row_len - 2)
 *        {
 * *$is_row = false;
 * *
 * *$rows[] = $buf;
 * *
 * *if ($tot_len >= $max)
 * *{
 * *        break;
 * *}
 *        }
 *}
 *
 *$offset = ftell($fp);
 *
 *fclose($fp);
        }
       
        return $rows;
}

$start_offset = isset($_GET["offset"]) ? intval($_GET["offset"]) : 0;

$sqlData *= get_data($start_offset, $max_per_request, $filename);

if (empty($sqlData))
{
        echo "Import klar<br/>";
       
        exit();
}
       
mysql_connect("..", "..", "..")or die(mysql_error());
mysql_select_db("..")or die(mysql_error());

foreach ($sqlData as $query)
{
        mysql_query($query)or die($query . " => " . mysql_error());
}

header("Refresh: 2;URL=http://" . $_SERVER["HTTP_HOST"] . "/" . $_SERVER["SCRIPT_NAME"] . "?offset=" . $start_offset);
exit();
?>

Fungerar bra med dumpar från mysqldump och phpmyadmin.


edit: alla tabbar försvann i koden..
edit: konstruerat för Linux (a.k.a. nyrad = \n)

Althalos 2009-05-03 20:58

För mig säger den bara Import klar direkt.. hm..

Jake.Nu 2009-05-03 21:10

Den kanske inte hittar filen.

Lägg till
Kod:

if (!file_exists($filename))
{
  die("Hittade inte filen");
}

först i funktionen


Alla tider är GMT +2. Klockan är nu 10:06.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson