2012-03-30 17 views
5

È possibile automatizzare l'esportazione di un singolo db usando phpMyAdmin?Come posso automatizzare l'esportazione di un database mySQL usando phpMyAdmin

Quando provo a creare il file .sql da uno script esterno, come php, il file .sql risultante sembra pulito, ma quando importato causa problemi nell'applicazione.

Quando uso phpMyAdmin per creare un file .sql simile utilizzando Export, il file .sql risultante importa senza causare problemi alla mia applicazione.

L'applicazione è moodle 2.2, la versione di MySQL è 5.5, la versione phpMyAdmin è 3.4.10.

+1

Non ho controllato in phpMyAdmin, ma forse la soluzione migliore sarà fare cron job. – Dudeist

+0

Sto usando cron per chiamare il mio script esterno che è problematico, ed è per questo che vorrei creare lo script direttamente da phpMyAdmin. – jamesTheProgrammer

+0

È possibile connettere MySQLBackupFTP (http://mysqlbackupftp.com/) al proprio phpMyAdmin e impostare una pianificazione per il backup automatico dei database. –

risposta

4

L'opzione migliore è creare uno script che esegua l'esportazione del database con mysqldump e successivamente un cronjob per eseguire lo script.

+0

dal momento che sto usando un server Windows 2003, non c'è un avail di cron. per automatizzare.Ho trovato la versione di Windows di cron, AT, dove sono stato in grado di usare mysqldump, come hai detto dalla riga di comando. – jamesTheProgrammer

+3

I cronjobs in Windows sono denominati Taks pianificati. – edelgado

+0

Funziona perfettamente finché non ci si trova in una società di hosting in cui l'IP del server DB è localhost o qualche indirizzo [RFC 1918] (http://www.faqs.org/rfcs/rfc1918.html) e l'unico altro accesso è FTP. Quindi il tuo unico accesso al nostro database è phpMyAdmin o tramite uno script PHP homegrown, perché non puoi accedere al DB da Internet. –

2

Se non è possibile connettersi direttamente al database con mysqldump, è possibile utilizzare questo script di shell (richiede ricciolo):

#!/bin/sh 
ADMIN_URL='https://phpmyadmin.example.com' 
USERNAME='my_username' 
PASSWORD='my_password' 
COOKIEJAR='/tmp/my_cookiejar' 
token=`curl -s -o - -d "pma_username=$USERNAME" -d "pma_password=$PASSWORD" -c "$COOKIEJAR" "$ADMIN_URL/" | grep -o -m 1 "token=.*'" | sed "s/'//"` 
curl -o - -b "$COOKIEJAR" -d what=sql -d export_type=server -d sql_structure_or_data=structure_and_data -d "$token" "$ADMIN_URL/export.php" 
rm "$COOKIEJAR" 

poi metterlo nel vostro crontab:

22  3 * * * someuser /path/to/script.sh > /path/to/backup/db.sql 

a ottenere un backup alle 3:22 ogni notte.

Testato solo con phpMyAdmin 3.4.10.1 e potrebbe non funzionare in altre (principali) versioni.

+0

Sembra che V4 abbia token nel modulo quindi non penso che funzionerà ... Non testato però. – Nick

+0

qualsiasi aggiornamento su questo? £ –

0

Usa questo script: https://github.com/qubitstream/phpmyadmin_sql_backup

phpmyadmin_sql_backup.py

A Python 3 script per automatizzare il download di backup di SQL tramite un'interfaccia web phpMyAdmin.

Questo è utile quando il fornitore di web hosting non concede accesso alla console (per mysqldump), ma si vuole automatizzare il backup del database (senza dover utilizzare manualmente il browser).

E 'stato testato con Python 3.4+ su Linux e Windows e phpMyAdmin 4.3.6, 4.5.4.1 e 4.7.0-dev

Nota: L'interfaccia web di phpMyAdmin potrebbe cambiare in futuro e rompere questo script. Si prega di presentare una segnalazione di bug (inclusa la versione di phpMyAdmin) se si verifica questo problema.

Esempio:

phpmyadmin_sql_backup.py "http://www.example.com/phpmyadmin/" your_user your_password 

altre opzioni disponibili.

Problemi correlati