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

Sådan ændres MySQL 8.0-datamappe. Kan jeg bruge OneDrive-mapper?

Hvis du vil dele en database med et par andre brugere, vil det ikke fungere at lægge datadirigenten i OneDrive.

MySQL gemmer data i filerne under datadir, det er sandt. De er gemt i filer kaldet tablespaces som har .ibd udvidelse.

Men mens du udfører INSERT/UPDATE/DELETE operationer, gemmes data midlertidigt i hukommelsen og i transaktionsloggene (ib_logfile* . MySQL skal lave en delikat koordinering mellem disse, for at gemme data på en holdbar måde, samtidig med at det sikres en god ydeevne. Det fungerer godt, men kun hvis MySQL-serveren er den eneste proces, der skriver til filerne.

OneDrive koordinerer slet ikke med MySQL. Den vil med jævne mellemrum kontrollere for filer, der er ændret, siden den sidst foretog en synkronisering. Intervallet, hvor OneDrive kontrollerer filer, er cirka hvert 10. minut, og dette kan ikke konfigureres.

OneDrive kan vælge at synkronisere filerne på et øjeblik efter, at du har udført nogle INSERT/UPDATE/DELETE operationer, og dataene er ændret i RAM, men er endnu ikke blevet opdateret i tablespace-filerne på disken.

Når du har foretaget en ændring, skal den også opbevares sikkert i transaktionsloggen, selvom den ikke er opdateret i tablespacet. Men hvis dine venner modtager filerne i denne tilstand (transaktionslog indeholder ændringer, som ikke er til stede i tablespacet), kan de rekonstruere de data fra din RAM, som de ikke fik. Dette kaldes InnoDB-nedbrudgendannelse . MySQL Server gør det automatisk, hvis den starter op og finder, at transaktionsloggen indeholder ændringer, der ikke er i tablespacet. Det antager, at du havde en pludselig genstart og mistede det, der var i RAM.

Hvis dine venner forsøger bare at holde deres MySQL-server kørende kontinuerligt og læser en datadir, der samtidig bliver opdateret af deres OneDrive, vil den dybest set overskrive deres filer, og MySQL vil blive forvirret. Den tjekker kun for at se, om den skal udføre nedbrudsgendannelse, når MySQL Server starter. Så hvis filerne ændrer sig på uventede måder, mens MySQL Server allerede kører, vil det blot konkludere, at din harddisk er blevet beskadiget. Det vil sandsynligvis rapportere en fatal fejl og lukke MySQL ned.

Også hvis dine venner forsøger at lave deres egne ændringer i databasen, vil deres ændringer være i konflikt med opdateringerne fra OneDrive. Så ville deres forsøg på at overskrive filer i sidste ende blive synkroniseret i den modsatte retning via OneDrive og i sidste ende også ødelægge din database. Dette ville ske uden varsel med 10 minutters intervaller, hver gang OneDrive valgte at udføre sin filsynkronisering.

Så jeg er bange for, at OneDrive ikke er løsningen til at dele din database.

Alternativer, der har en chance for at arbejde, omfatter:

  • Hosting af en enkelt forekomst af MySQL Server på et websted, som I alle deler, og giver hver af jer en klient, der kan bruge databasen. En populær gratis klient er phpMyAdmin . På den måde ville der kun være én forekomst af MySQL Server, én datadir, selvom I hver især ville være samtidige klienter, der læser og skriver data. Dette er den enkleste løsning, der sandsynligvis vil virke.

  • Eksport af data fra din MySQL Server-instans ved hjælp af mysqldump med jævne mellemrum, og lægger eksportfilen på OneDrive eller sender den til dine venner via e-mail eller på anden måde. Så ville de skulle importere disse data til deres MySQL-server manuelt. Dette ville overskrive eventuelle ændringer, de havde foretaget i deres database, men det ville ikke fremstå som korruption. Hvis de vil sende ændringer tilbage til dig, kunne de udføre en lignende handling:eksportere deres database, lægge dumpfilen på OneDrive, så ville du hente deres dumpfil og importere den til din MySQL Server-instans og overskrive eventuelle ændringer, du havde gjort lokalt siden sidste gang, du sendte din eksport til dine venner.

  • Brug en MySQL-tilføjelse til multi-server synkron replikering, såsom InnoDB Group Replication eller Percona XtraDB Cluster . Men dette er sandsynligvis for komplekst for dig at konfigurere, hvis du er nybegynder med MySQL.




  1. Har PL/SQL-udgange i realtid

  2. gem postgresql resultat i bash variabel

  3. Smid en fejl, der forhindrer en tabelopdatering i en MySQL-trigger

  4. PostgreSQL:Opret indeks for boolesk kolonne