The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Särskilda Forum > Webb Programmering, Web 2.0 och mashups
.
google unix.com



Webb Programmering, Web 2.0 och mashups Diskutera Web Programming och Web Server administration, inklusive LAMP, Apache, MySQL, Flash, HTML, SEO, mashups och andra Web API och ämnen.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
MySQL Developer uppfyller "Quan" (alias MySQL Query Analyzer) iBot MySQL DevZone RSS 0 05-15-2009 02:30
MySQL universitet - Utbildning i MySQL Development & interna iBot Solaris BigAdmin RSS 0 11-12-2008 09:10
hur man kan bryta mysql dump sql fil learnbash Shell-programmering och Skript 2 05-14-2008 06:39
återställa mysql dumpfilen i många fjärrservrar? blesets Shell-programmering och Skript 2 09-13-2006 02:17
Hjälp, vad är skillnaden mellan centrala dumpa och panik dumpa? Aileen UNIX for Dummies Frågor & Svar 1 06-11-2001 09:08

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Omdöme: Thread Rating: 1 votes, 5.00 average. Visningslägen
  #1 (permalänk)  
Old 05-29-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: april 2009
Inlägg: 29
Question Confused kanske om MySQL Dump & PHP

Hej. Syftet med mitt arbete just nu är att få en större script för mig (som admin berättade att han lagt in cron för mig) till ordentligt back-up min MySQL databas. Att testa sql backup-del (innan de fick hela skriften i cron, och få den att fungera) jag ville testa det. Så här är vad jag gjorde:

PHP-filen för att göra min undersökning (på live server)

Kod:
<?php

$test = shell_exec('echo $SHELL');
echo "<pre>$test</pre>";

$output = shell_exec('sh ./sqlBack.sh');
echo "<pre>$output</pre>";
?>

Script kallas av PHP

Kod:
#!/usr/local/bin/bash

# MYSQL BACKUP:
sql_bDir="./sql_backups/" #LOCATION FOR SQL BACKUPS TO LAND
sql_bName=SqlBackup_$(date "+%A")

echo "The Shopping Cart's database backup will be in $sql_bDir and will be named $sql_bName" #NOTICE OF DATABASE BACKUP
mysqldump -uNAME -pPASS --opt DBASENAME > $sql_bDir$sql_bName.tgz

bara för att testa, sattes båda filerna till 777 på servern. Utdata från PHP-filen ser ut precis som det ska, men då jag finner . / sql_backups / Directory tomma. Jag har provat den Användarnamn, lösenord och databas den sista raden i ett sådant manus i både versaler och gemener (läst nånstans att huvudstäder fungerar bättre .. anyways). Jag är inte upplevt med php / mysql .. Jag tyckte att syntaxen för att mysqldump linje i en artikel.

Tack på förhand för all din hjälp!
  #2 (permalänk)  
Old 06-02-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1.893
Om han ska lägga den i en cronjob, kan du inte riktigt ta vad PWD (nuvarande arbetskatalog) kommer att, så att linjen:

Kod:
sql_bDir="./sql_backups/" #LOCATION FOR SQL BACKUPS TO LAND

Är inte rimligt. Du behöver en fullständig sökväg, eller kanske något med prefixet $ HOME.

För det andra bör mysqldump linjen:

Kod:
mysqldump -u NAME -p PASS  DBASENAME

Slutligen bör du förstå att produktionen inte komprimeras automatiskt. Gör det separat, via en pipa

Kod:
mysqldump -u NAME -p PASS  | gzip -c > $sql_bName.gz

Slutligen kan du vinna en del prestanda genom buffert produktionen genom ett program som kallas "dd". Detta gör mysqldump att göra sitt arbete under en längre tid innan övergången att göra komprimeringen.

Kod:
mysqldump -u NAME -p PASS DBASENAME  | dd bs=1M | gzip -c > $sql_bName.gz

För min dumpa ser jag till soptippen sker i en enda transaktion "för att säkerställa att dumpa representerar en ersättningsgilla stat. (dvs. transaktioner inte äga rum under soptippen). Jag skickar även produktionen med bzip2 för högre kompression.

Kod:
mysqldump -u NAME -p PASS --single-transaction DBASENAME | dd bs=1M | bzip2 -c >dumpfile

  #3 (permalänk)  
Old 06-02-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: april 2009
Inlägg: 29
Tack för svaret!

Citat:
Ursprungligen postat av otheus View Post
Om han ska lägga den i en cronjob, kan du inte riktigt ta vad PWD (nuvarande arbetskatalog) kommer att, så att linjen:

Kod:
sql_bDir="./sql_backups/" #LOCATION FOR SQL BACKUPS TO LAND

Är inte rimligt. Du behöver en fullständig sökväg, eller kanske något med prefixet $ HOME.
good point, inser jag att om jag bara hade. / i stället som något tillfälligt som jag gör manuella test (lättare att skriva ut för provning)

Citat:
Ursprungligen postat av otheus View Post
För det andra bör mysqldump linjen:

Kod:
mysqldump -u NAME -p PASS  DBASENAME

Slutligen bör du förstå att produktionen inte komprimeras automatiskt. Gör det separat, via en pipa

Kod:
mysqldump -u NAME -p PASS  | gzip -c > $sql_bName.gz
Tack, hade jag misslyckats med att läsa vad "välja" alternativet inte (som stod på en online artikel förslag att använda det som sagt inte välja komprimering)
Detta är vad jag hittade:
Citat:
o - opt

Detta alternativ är stenografi, det är samma som att ange
- add-drop-table - add-lås - Skapa-alternativ - disable-keys
- extended-Insert - lock-tables - sammanfattning - set-charset. Det bör
ger dig en snabb soptipp drift och producera en dump fil som kan
reloaded till en MySQL-server snabbt.

Den - opt alternativet är aktiverat vid standard. Använda - skip-opt till inaktivera
den. Se diskussionen i början av detta avsnitt för
information om selektivt aktivera eller inaktivera vissa av de
valmöjligheter påverkas av - opt.
Om jag inte vet vad de flesta av dem ^ do (eftersom jag inte känner till MySQL) skulle du föreslå jag bara hålla med de enklare kod du som är konstruerad? eller kommer de ovan nämnda alternativen "välja" inte ont?

Citat:
Ursprungligen postat av otheus View Post
Slutligen kan du vinna en del prestanda genom buffert produktionen genom ett program som kallas "dd". Detta gör mysqldump att göra sitt arbete under en längre tid innan övergången att göra komprimeringen.

Kod:
mysqldump -u NAME -p PASS DBASENAME  | dd bs=1M | gzip -c > $sql_bName.gz
This is really cool, thanks!
Citat:
Ursprungligen postat av otheus View Post
För min dumpa ser jag till soptippen sker i en enda transaktion "för att säkerställa att dumpa representerar en ersättningsgilla stat. (dvs. transaktioner inte äga rum under soptippen). Jag skickar även produktionen med bzip2 för högre kompression.

Kod:
mysqldump -u NAME -p PASS --single-transaction DBASENAME | dd bs=1M | bzip2 -c >dumpfile
Det finns mer än 8.100 artiklar i vår varukorg. efter att ha läst den som jag ser det är rekommenderat att använda "snabb" i samband med "en enda transaktion" för stora tabeller. Vad är en "stor" bord? Är 8.000 + ex vara ett stort bord? Om jag använder "quick" kommer att motverka syftet att driva bs \u003d 1M alternativ med dd?

Tack för all din hjälp!
  #4 (permalänk)  
Old 06-02-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1.893
Du behöver inte använda - välja eftersom den är aktiverad som standard. 8.000 poster är inte mycket. "Snabb" funktionen kommer inte motverka syftet med bs \u003d 1M.
  #5 (permalänk)  
Old 06-02-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: april 2009
Inlägg: 29
Question

Citat:
Ursprungligen postat av otheus View Post
Du behöver inte använda - välja eftersom den är aktiverad som standard. 8.000 poster är inte mycket. "Snabb" funktionen kommer inte motverka syftet med bs \u003d 1M.
Tack så mycket för hjälpen. Jag försöker testa det här på min personliga levande webbplats wordpress databasen först. så jag laddade upp en test.php fil att köra shell script, så här:

test.php

Kod:
<?php

$output=shell_exec('sh /home/jzacsh/public_html/private/scripts/dbackup.sh');

echo "<pre>$output</pre>";

?>

den shell script sin inställd att gå är:


Kod:
#!/bin/sh

sql_bDir=./sql_pickup/

#START SQL BACKUP + TGZ 
echo " " #VISUAL PADDING
echo "# BEGINNING DATABASE BACKUP PORTION:" #VISUAL
    #MYSQL LANDING DIR. CHECK
    echo "Checking if sql backup landing directory exists: $sql_bDir"
    if test -d "$sql_bDir"
    then
        echo "Directory to receive database backup exists"
    else
        echo "Directory to receive database backup does not exist, creating it"
        mkdir $sql_bDir
    fi #ENDIF SQL DIR. CHECK

echo " " #VISUAL PADDING

# MYSQL BACKUP
sql_bName=SQLBackUp_$(date +%A).gz
sql_Path=$sql_bDir$sql_bName

echo "The Shopping Cart's database backup will be:" $sql_Path #NOTICE OF DATABASE BACKUP
echo "Note: If the main backup is backing up the root directory, you do not need to separately download the database backup."

mysqldump -u name -p wppass --single-transaction db123 | dd bs=1M | gzip -c > $sql_Path

då jag besöker ovan ^ test.php via webbläsare och få denna utgång:

Kod:
 
# BEGINNING DATABASE BACKUP PORTION:
Checking if sql backup landing directory exists: ./sql_pickup/
Directory to receive database backup exists
 
The Shopping Cart's database backup will be: ./sql_pickup/SQLBackUp_Tuesday.gz
Note: If the main backup is backing up the root directory, you do not need to separately download the database backup.

När jag hämtar filen dess enda 4KB, och på unarchiving filen hittar jag en Zero KB fil, som med "katt" via terminalen visar att filen är verkligen tomt.

Några idéer vad jag kan göra för fel?
  #6 (permalänk)  
Old 06-02-2009
otheus's Avatar
otheus otheus is offline Forum Staff  
Moderator ala Mode
  
 

Join Date: februari 2007
Location: Innsbruck, Österrike
Inlägg: 1.893
1. förändring sql_bDir till $ PWD / sql_pickup / så vi kan se var på faktiskt resultat.
2. för testning, stänga av komprimering och hoppa över kommandot dd ... produktion direkt till filen.
  #7 (permalänk)  
Old 06-02-2009
jzacsh jzacsh is offline
Registered User
  
 

Join Date: april 2009
Inlägg: 29
Question

Citat:
Ursprungligen postat av otheus View Post
1. förändring sql_bDir till $ PWD / sql_pickup / så vi kan se var på faktiskt resultat.
2. för testning, stänga av komprimering och hoppa över kommandot dd ... produktion direkt till filen.
Okej, gjort. verkade inte göra skillnad (filen kommer fortfarande ut 0 B, bara okomprimerade)

test.php utgång:

Kod:
 
# BEGINNING DATABASE BACKUP PORTION:
Checking if sql backup landing directory exists: ./sql_pickup/
Directory to receive database backup exists
 
The Shopping Cart's database backup will be: ./sql_pickup/SQLBackUp_Tuesday
Note: If the main backup is backing up the root directory, you do not need to separately download the database backup.

källa dbackup.sh

Kod:
#!/bin/sh

sql_bName=SQLBackUp_$(date +%A)
mysqldump -u jzacsh_jzacsh -p wordpres --single-transaction jzacsh_jzwp  > $PWD/sql_pickup/$sql_bName

faktiskt ... just i att sända det ^ jag insåg att jag inte har kontrollerat:
echo $ SHELL

... det gav
/ usr / local / cpanel / bin / noshell

Jag gissar vilket innebär att jag inte kan köra saker ordentligt? (Jag är inte säker, jag har naturligtvis ett skal för att mata ut en fil med och allt ... Jag var inte lyckas generera en BRA-fil)
Closed Thread

Komihåglista

Taggar
säkerhetskopia, mysql, php test

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 08:28.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0