sql >> Databáze >  >> RDS >> Mysql

Jak změnit datovou složku MySQL 8.0. Mohu používat složky OneDrive?

Pokud chcete sdílet databázi s několika dalšími uživateli, umístění datadir na OneDrive nebude fungovat.

MySQL ukládá data do souborů pod datadir, to je pravda. Jsou uloženy v souborech zvaných tabulkové prostory které mají .ibd rozšíření.

Ale jak provádíte operace INSERT/UPDATE/DELETE, data se dočasně ukládají do paměti a do protokolů transakcí (ib_logfile* . MySQL mezi nimi musí provést jemnou koordinaci, aby byla data uchována trvanlivým způsobem a zároveň byl zajištěn dobrý výkon. Funguje to dobře, ale pouze pokud je MySQL Server jediným procesem zapisujícím do souborů.

OneDrive se vůbec nekoordinuje s MySQL. Bude pravidelně kontrolovat soubory, které se od poslední synchronizace změnily. Interval, který OneDrive kontroluje soubory, je přibližně každých 10 minut a toto nelze konfigurovat.

OneDrive se může rozhodnout synchronizovat soubory v okamžiku poté, co provedete nějaké operace INSERT/UPDATE/DELETE a data se upraví v paměti RAM, ale ještě nebyla aktualizována v souborech tabulkového prostoru na disku.

Jakmile provedete změnu, musí být také bezpečně uložena v protokolu transakcí, i když není aktualizována v tabulkovém prostoru. Ale pokud vaši přátelé obdrží soubory v tomto stavu (transakční protokol obsahuje změny, které nejsou přítomny v tabulkovém prostoru), mohou rekonstruovat data z vaší RAM, která nezískali. Toto se nazývá Obnova po havárii InnoDB . MySQL Server to udělá automaticky, pokud se spustí a zjistí, že protokol transakcí obsahuje změny, které nejsou v tabulkovém prostoru. Předpokládá to, že došlo k náhlému restartu a ztratili jste to, co bylo v paměti RAM.

Pokud se vaši přátelé pokusí udržet jejich MySQL Server nepřetržitě spuštěný a budou číst datadir, který je současně aktualizován jejich OneDrivem, v podstatě to přepíše jejich soubory a MySQL bude zmatená. Pouze zkontroluje, zda by měl provést obnovu po havárii při spuštění serveru MySQL. Pokud se tedy soubory změní neočekávaným způsobem, zatímco MySQL Server již běží, dojde pouze k závěru, že se váš pevný disk poškodil. Pravděpodobně ohlásí fatální chybu a vypne MySQL.

Také pokud se vaši přátelé pokusí provést vlastní změny v databázi, jejich změny by byly v rozporu s aktualizacemi z OneDrive. Pak by se jejich pokusy o přepsání souborů nakonec synchronizovaly opačným směrem přes OneDrive a nakonec by poškodily i vaši databázi. K tomu dojde bez varování v 10minutových intervalech, kdykoli se OneDrive rozhodne provést synchronizaci souborů.

Obávám se tedy, že OneDrive není řešením pro sdílení vaší databáze.

Alternativy, které mají šanci fungovat, zahrnují:

  • Hostování jedné instance serveru MySQL na webové stránce, kterou všichni sdílíte, a poskytování každého z vás klienta, který může používat databázi. Oblíbeným bezplatným klientem je phpMyAdmin . Tímto způsobem by existovala pouze jedna instance serveru MySQL, jeden datový adresář, i když byste každý byli souběžnými klienty, kteří by četli a zapisovali data. Toto je nejjednodušší řešení, s největší pravděpodobností bude fungovat.

  • Export dat z instance serveru MySQL pomocí mysqldump pravidelně a vkládání exportovaného souboru na OneDrive nebo jeho odesílání přátelům e-mailem nebo jakýmkoli jiným způsobem. Poté by museli tato data importovat do svého serveru MySQL ručně. To by přepsalo všechny změny, které provedli ve své databázi, ale nevypadalo by to jako poškození. Pokud vám chtějí poslat změny zpět, mohli by provést podobnou operaci:exportovat svou databázi, umístit soubor výpisu na OneDrive, pak byste získali jejich soubor výpisu a importovali jej do instance serveru MySQL a přepsali všechny změny, které jste provedli. provedeno lokálně od posledního odeslání exportu svým přátelům.

  • Použijte doplněk MySQL pro synchronní replikaci na více serverech, jako je Replikace skupiny InnoDB nebo Percona XtraDB Cluster . Ale toto je pravděpodobně příliš složité na to, abyste to nastavili, pokud jste s MySQL nováčkem.




  1. Salesforce SOQL od Crystal Reports

  2. Rozdělte varchar do samostatných sloupců v Oracle

  3. MYSQL, pokud výběrový dotaz vrátí 0 řádků, pak jiný výběrový dotaz?

  4. SQL Aktualizační dotaz s klauzulí seskupit