Mysql
 sql >> Database >  >> RDS >> Mysql

Come modificare la cartella dei dati di MySQL 8.0. Posso usare le cartelle di OneDrive?

Se desideri condividere un database con un paio di altri utenti, inserire la directory dei dati in OneDrive non funzionerà.

MySQL memorizza i dati nei file sotto la datadir, è vero. Sono archiviati in file chiamati tablespace che hanno il .ibd estensione.

Ma mentre esegui le operazioni INSERT/UPDATE/DELETE, i dati vengono temporaneamente archiviati in memoria e nei registri delle transazioni (ib_logfile* . MySQL deve fare un delicato coordinamento tra questi, per salvare i dati in modo duraturo, garantendo al contempo buone prestazioni. Funziona bene, ma solo se il server MySQL è l'unico processo che scrive sui file.

OneDrive non si coordina affatto con MySQL. Verificherà periodicamente i file che sono stati modificati dall'ultima sincronizzazione. L'intervallo di controllo dei file da parte di OneDrive è di circa ogni 10 minuti e non è configurabile.

OneDrive può scegliere di sincronizzare i file in un momento dopo aver eseguito alcune operazioni INSERT/UPDATE/DELETE e i dati vengono modificati nella RAM, ma non sono stati ancora aggiornati nei file tablespace su disco.

Una volta che hai eseguito il commit di una modifica, deve anche essere archiviata in modo sicuro nel registro delle transazioni, anche se non è stata aggiornata nel tablespace. Ma se i tuoi amici ricevono i file in questo stato (il registro delle transazioni contiene modifiche che non sono presenti nel tablespace), possono ricostruire i dati dalla tua RAM che non hanno ricevuto. Questo è chiamato Ripristino da arresto anomalo di InnoDB . MySQL Server lo fa automaticamente se si avvia e rileva che il registro delle transazioni contiene modifiche che non sono nel tablespace. Si presume che tu abbia avuto un riavvio improvviso e che tu abbia perso ciò che era nella RAM.

Se i tuoi amici cercano di mantenere il loro server MySQL in esecuzione continuamente, leggendo una datadir che viene aggiornata contemporaneamente dal loro OneDrive, sostanzialmente sovrascriverà i loro file e MySQL si confonderà. Verifica solo se dovrebbe eseguire il ripristino in modo anomalo all'avvio di MySQL Server. Quindi, se i file cambiano in modi imprevisti mentre MySQL Server è già in esecuzione, si concluderà semplicemente che il tuo disco rigido è stato danneggiato. Probabilmente segnalerà un errore irreversibile e chiuderà MySQL.

Inoltre, se i tuoi amici tentano di apportare modifiche al database, le loro modifiche entrerebbero in conflitto con gli aggiornamenti di OneDrive. Quindi i loro tentativi di sovrascrivere i file alla fine sarebbero stati sincronizzati nella direzione opposta tramite OneDrive e alla fine avrebbero danneggiato anche il tuo database. Ciò accadeva senza preavviso a intervalli di 10 minuti, ogni volta che OneDrive sceglieva di eseguire la sincronizzazione dei file.

Quindi temo che OneDrive non sia la soluzione per condividere il tuo database.

Le alternative che hanno una possibilità di funzionare includono:

  • Ospitare una singola istanza di MySQL Server su un sito Web condiviso da tutti e fornire a ciascuno di voi un client in grado di utilizzare il database. Un popolare client gratuito è phpMyAdmin . In questo modo ci sarebbe solo un'istanza di MySQL Server, una datadir, anche se ognuno di voi sarebbe client simultanei che leggono e scrivono dati. Questa è la soluzione più semplice, molto probabilmente funzionerà.

  • Esportazione dei dati dall'istanza di MySQL Server utilizzando mysqldump periodicamente e inserendo il file di esportazione su OneDrive o inviandolo ai tuoi amici tramite e-mail o qualsiasi altro mezzo. Quindi dovrebbero importare manualmente quei dati sul loro server MySQL. Ciò sovrascriverebbe tutte le modifiche apportate al database, ma non sembrerebbe un danneggiamento. Se vogliono inviarti le modifiche, potrebbero eseguire un'operazione simile:esportare il loro database, inserire il file di dump su OneDrive, quindi otterresti il ​​loro file di dump e lo importerai nella tua istanza di MySQL Server, sovrascrivendo le modifiche che avevi fatto localmente dall'ultima volta che hai inviato l'esportazione ai tuoi amici.

  • Utilizzare un componente aggiuntivo MySQL per la replica sincrona multi-server, come Replica del gruppo InnoDB o Cluster Percona XtraDB . Ma probabilmente è troppo complesso da configurare se sei un principiante con MySQL.