Ако искате да споделите база данни с няколко други потребители, поставянето на datadir в OneDrive няма да работи.
MySQL съхранява данни във файловете под datadir, това е вярно. Те се съхраняват във файлове, наречени tablespaces които имат .ibd
разширение.
Но докато правите операции INSERT/UPDATE/DELETE, данните се съхраняват временно в паметта и в регистрационните файлове на транзакциите (ib_logfile*
. MySQL трябва да извършва деликатна координация между тях, за да запази данните по траен начин, като същевременно гарантира добра производителност. Работи добре, но само ако MySQL сървърът е единственият процес, който пише във файловете.
OneDrive изобщо не координира с MySQL. Той периодично ще проверява за файлове, които са се променили след последното синхронизиране. Интервалът, през който OneDrive проверява файловете, е приблизително на всеки 10 минути и това не може да се конфигурира.
OneDrive може да избере да синхронизира файловете в момент, след като сте извършили някои операции INSERT/UPDATE/DELETE и данните са променени в RAM, но все още не са актуализирани във файловете на пространството за таблици на диска.
След като извършите промяна, тя също трябва да бъде безопасно съхранена в дневника на транзакциите, дори ако не е актуализирана в пространството за таблици. Но ако вашите приятели получат файловете в това състояние (регистрационният файл на транзакциите съдържа промени, които не присъстват в пространството за таблици), те могат да реконструират данните от вашата RAM, които не са получили. Това се нарича възстановяване при срив на InnoDB . MySQL Server го прави автоматично, ако се стартира и установи, че регистърът на транзакциите съдържа промени, които не са в пространството за таблици. Предполага се, че сте имали внезапно рестартиране и сте загубили това, което е било в RAM.
Ако вашите приятели се опитат просто да поддържат своя MySQL сървър да работи непрекъснато, четейки папка с данни, която едновременно се актуализира от техния един OneDrive, това основно ще презапише техните файлове и MySQL ще се обърка. Той само проверява дали трябва да извърши възстановяване при срив при стартиране на MySQL Server. Така че, ако файловете се променят по неочакван начин, докато MySQL Server вече работи, той просто ще заключи, че вашият твърд диск се е повредил. Вероятно ще съобщи за фатална грешка и ще изключи MySQL.
Също така, ако вашите приятели се опитат да направят собствени промени в базата данни, техните промени биха били в конфликт с актуализациите от OneDrive. Тогава техните опити да презапишат файловете в крайна сметка ще бъдат синхронизирани в обратна посока чрез OneDrive и евентуално ще повредят и вашата база данни. Това ще се случи без предупреждение на интервали от 10 минути, когато OneDrive избере да извърши синхронизиране на файловете си.
Така че се опасявам, че OneDrive не е решението за споделяне на вашата база данни.
Алтернативите, които имат шанс да работят, включват:
-
Хостване на един екземпляр на MySQL Server на уебсайт, който всички споделяте, и предоставяне на всеки от вас на клиент, който може да използва базата данни. Популярен безплатен клиент е phpMyAdmin . По този начин ще има само един екземпляр на MySQL Server, един datadir, въпреки че всеки от вас ще бъде едновременен клиент, който чете и записва данни. Това е най-простото решение, което най-вероятно ще работи.
-
Експортиране на данните от вашия MySQL Server екземпляр с помощта на mysqldump периодично и поставяне на файла за експортиране в OneDrive или изпращане на вашите приятели по имейл или по друг начин. Тогава те ще трябва да импортират тези данни в своя MySQL сървър ръчно. Това ще замени всички промени, които са направили в тяхната база данни, но няма да изглежда като корупция. Ако искат да ви изпратят промените обратно, те биха могли да направят подобна операция:да експортират своята база данни, да поставят дъмп файла в OneDrive, след което да получите техния дъмп файл и да го импортирате във вашия MySQL Server екземпляр, като презапишете всички промени, които сте имали направено локално от последния път, когато изпратихте своя експорт на приятелите си.
-
Използвайте добавка MySQL за синхронна репликация на няколко сървъра, като Репликация на група InnoDB или Percona XtraDB Cluster . Но това вероятно е твърде сложно, за да настроите, ако сте начинаещ с MySQL.