- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysqlhotcopy
-
Mysqlhotcopy
Ciao ragazzi!
Scrivo qui perchè spero di avere al soluzione ad un problema che mi affligge da un bel pò di giorni.In pratica stò cercando di effettuare la copia di un database sul server utilizzando i comandi che ho a disposizione e di utilizzare la copia per prelevare dati.
Ho due database: DATABASE_1 E DATABASE_2
Ho provato vari strumenti fra cui cp -r , rsync , mysqldump e ripristino con mysql ed ora sto provando con il MYSQLHOTCOPY
Al momento applico questa procedura:
- creo DATABASE_2 e imposto nome utente e password (DATABASE_1 è gia attivo)
- applico la seguente procedura:
mysqlhotcopy DATABASE_1 /var/lib/mysql/DATABASE_2 -u nomeutenteD1 -p passwordD1
per D1 intendo nome utente e password del DATABASE_1
Avvio la procedura e in risposta mi viene restituito:
Can't hotcopy to '/var/lib/mysql/DATABASE_2/DATABASE_1' because directory
already exist and the --allowold or --addtodest options were not given.Cosa devo fare? Io ormai sono nel pallone....
-
Hai provato ad aggiungere --allowold alla fine della riga?
Io lo uso in questo modomysqlhotcopy database /home/mysql/backup/ --password=XXXXXX --allowold
e funziona
-
Grazie per la risposta.
In questo modo però fai un semplice backup.
Quello che servirebbe a me e copiare i contenuti del DATABASE_1 all'interno del DATABASE_2 e possibilmente nella directory /var/lib/mysql/DATABASE_2 dove posso richiamarlo.Non hai mai fatto una prove del genere?
-
Non l'ho mai fatto ma penso sia la stessa cosa, non dovrebbe cambiare molto.
Ci sarà da fare attenzione ai permessi dei files
-
Infatti mi viene restituita questa risposta....
mysqlhotcopy DATABASE_1 /var/lib/mysql/DATABASE_2 -u nomeutenteD1 -p passwordD1 --allowold
Deleting previous 'old' hotcopy directory ('/var/lib/mysql/DATABASE_2/DATABASE_1_old')
Existing hotcopy directory renamed to '/var/lib/mysql/DATABASE_2/DATABASE_1_old'
Locked 10 tables in 0 seconds.
DBD::mysql::db do failed: Access denied; you need the RELOAD privilege for this operation at /usr/bin/mysqlhotcopy line 477.
Sincermente non sò quali permessi e come impostarli...
-
O esegui l'operazione come root oppure usando un tool tipo phpmyadmin vai in privilegi e concedi il permesso di RELOAD all'utente in questione
-
Scusa ma non sono molto esperto...
In pratica intendi che devo fare cosi:
mysqlhotcopy DATABASE_1 /var/lib/mysql/DATABASE_2 -u root -p passwordD1 --allowold
-
Credo di aver capito il funzionamento infatti ora mi esegue la copia ma ho ancora un piccolo problema... che in pratica risulta essere i l più grande.
Fatta la copia non riesco a vedere il risultato se non riavvio Mysql.
Mi spiego meglio.Se mi collego al DATABASE_2 con un qualsiasi file in php non vedo gli aggiornamenti effettuari fino a quando non viene riavviato mysql.
Come posso risolvere quest'ultimo problema?
-
Scusa se intervengo ancora ma in pratica non vede l'aggiornamento perche non vengono copiate solo le tabelle del DATABASE_1 all'interno del DATABASE_2 ma tutto il DATABASE_1
ed ottengo questo: /var/lib/mysql/DATABASE2/DATABASE1/tabelle
invece dovrei avere: /var/lib/mysql/DATABASE2/tabelle
Esiste un modo per superare questo ostacolo?
Grazie ancora...
-
Mi sa che in questo modo non puoi fare in quanto il comando in automatico crea la cartella DATABASE_1
A questo punto puoi provare con rsync, e fare qualcosa del genere
rsync -a -v --delete /var/lib/mysql/DATABASE_1 /var/lib/mysql/DATABASE_2
-
Ho gia provato con questo comando:
rsync -auv --delete /var/lib/mysql/DATABASE_1/* /var/lib/mysql/DATABASE_2/
La copia viene eseguita perfettamente ma in pratica non vedo gli aggiornamenti fino a quando non riavvio mysql.
Si può superare questo problema?
Fra -auv --delete e -a -v --delete
che differenza c'è?