Spostamento di database di grandi dimensioni


8

Ho un server centos e / var / lib / mysql / è 125 GB (il disco ha 1 GB di spazio libero).

Normalmente userei mysqldump per il backup dei database, ma normalmente non lavoro con database così grandi, quindi ho bisogno di conoscere il modo più sicuro di copiare i database su un nuovo server.

Tutti i consigli sono apprezzati!

Risposte:


3

È possibile utilizzare i seguenti passaggi

Sul vecchio server

1. Arrestare il server mysql

2.Copia il contenuto di Datadir in un'altra posizione sul disco come ... mysqlbackup

3. Riavviare il server mysql

4.Comprimere i dati (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5.Copia il file compresso sul nuovo server

Sul nuovo server

1.Installa MySQL [la versione di MySQL dovrebbe essere la stessa del vecchio server] (non avviare il server MySQL)

2. Decomprimere il file compresso (tar -xzvf mysqlbackup.tar.gz)

3.Spostare i contenuti di mysqlbackup nel datadir.

4.Assicurarsi che le autorizzazioni di datadir siano corrette

5.Assicurati che il tuo innodb_log_file_size sia lo stesso sul nuovo server o, in caso contrario, non copiare i vecchi file di registro (MySQL li genererà)

6.Avviare MySQL.

Puoi anche guardare Come posso spostare un database da un server a un altro?


2

Poiché il DB di origine ha solo 1 GB, non c'è spazio per mysqldump da nessuna parte.

Quello di cui hai bisogno è il seguente

  • Porta 3306 aperta nel firewall del server DB di origine
  • Eseguire il programma mysqldump dal server DB di destinazione

Per un server DB di origine il cui indirizzo IP è 10.20.30.40, accedere al DB di destinazione ed eseguirlo

PIPE mysqldump nell'istanza MySQL sul server DB di destinazione

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-tranactions"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS}| mysql ${MYSQL_CONN}

PIPE mysqldump nel file SQL. Carica MySQL da SQLFile

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --hex-blob --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
mysql ${MYSQL_CONN} < MySQLData.sql

NOTE FINALI

Utilizzare la tecnica n. 1 se non è presente spazio su disco per salvare un file SQL. Utilizzare la tecnica n. 2 se si desidera scaricare il file e caricarlo in un secondo momento.


0

Dal nuovo server, supponendo che sia stata impostata una coppia di chiavi pubblica / privata

ssh root@oldserver mysqldump database | mysql database

dovrebbe funzionare bene, non credo che verrà utilizzato alcuno spazio su disco


Non dimenticare di utilizzare ssh -Cper la compressione al volo.
Scintillii il

0

Di solito si esegue mysqldump per creare una copia del database e i backup come segue:

$ mysqldump -u user -p db-name > db-name.out

Copia il file db-name.out usando sftp / ssh sul server MySQL remoto:

$ scp db-name.out user@remote.box.com:/backup

Ripristina database su server remoto (login su ssh):

$ mysql -u user -p db-name < db-name.out

O

$ mysql -u user -p 'password' db-name < db-name.out

0

Questo ha funzionato per me:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/

Modifica il tuo post e fornisci alcune spiegazioni che aiuteranno i futuri utenti a capire il tuo codice.
RLF,

0

@ user2029574, il tuo hardware è nel cloud? Anch'io una volta mi sono imbattuto nello stesso problema che eri / sei qui. Tuttavia, la mia installazione di MySQL è in AWS e sai che significa molta facilità per collegare ancora un altro disco di dimensioni maggiori. Qui sto riassumendo quello che ho fatto:

  1. Collega un nuovo disco più grande alla tua attuale istanza del server MySQL.
  2. Usa l'innobackupex di Percona per preparare il backup completo dei dati MySQL correnti nel nuovo disco che hai collegato.
  3. Prepara ancora un'altra istanza con MySQL installato.
  4. Scollegare il disco collegato all'istanza 1.
  5. Ora collega il disco alla nuova istanza, istanza 2.
  6. Arresta il servizio MySQL nell'istanza 2.
  7. Modifica il file di configurazione di MySQL in modo che la directory dei dati indichi la nuova posizione.
  8. Ripristina il database nella nuova istanza. Ancora una volta, innobackupex , è lì per il tuo aiuto.
  9. Avviare il server MySQL nell'istanza 2.

In questo modo, puoi avere le tue applicazioni che si collegano sempre a questo DB e puoi anche aggiornare il profilo della tua istanza cloud, se anche questo è un requisito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.