Как изменить папку данных MySQL 8.0.Могу ли я использовать папки OneDrive? - PullRequest
0 голосов
/ 23 июня 2019

Я пытаюсь создать базу данных для очень маленькой программы, которую используют только я и еще 2 друга, поэтому база данных будет маленькой.

Я хочу поделиться этой базой с этими двумя друзьями, поэтому я подумал о хранении данных в общей папке OneDrive.

В настоящее время я использую текстовый файл в качестве «базы данных». Который находится в общей папке OneDrive, поэтому, когда мои друзья запускают программу, она может прочитать данные оттуда и сделать их в режиме реального времени «онлайн».

Дело в том, что я не могу найти файл my.ini в моем

C:\Program Files\MySQL\MySQL Server 8.0\ 

, поэтому я не могу изменить папку данных.

Другая проблема, с которой я столкнулся, заключается в том, что у меня также нет папки Data в этом каталоге, вместо этого я нашел ее в этом:

C:\Program Files\MySQL\MySQL Workbench 8.0 CE

Можно ли делать то, что я хочу делать? И как мне поступить?

Как вы думаете, я должен использовать версию MySQL 5.x?

Спасибо

1 Ответ

0 голосов
/ 23 июня 2019

Если вы хотите поделиться базой данных с несколькими другими пользователями, размещение datadir в OneDrive не будет работать.

MySQL сохраняет данные в файлах под datadir, это правда.Они хранятся в файлах, называемых табличными пространствами , которые имеют расширение .ibd.

Но когда вы выполняете операции INSERT / UPDATE / DELETE, данные временно сохраняются в памяти и в журналах транзакций.(ib_logfile*. MySQL должен обеспечить тонкую координацию между ними, чтобы сохранить данные надежным способом, обеспечивая при этом хорошую производительность. Он работает хорошо, но только если MySQL Server - единственный процесс записи в файлы.

OneDrive вообще не координирует свои действия с MySQL. Он периодически проверяет файлы, которые изменились с момента последней синхронизации. Интервал проверки файлов OneDrive составляет примерно каждые 10 минут, и это не настраивается.

OneDrive может синхронизировать файлы сразу после того, как вы выполнили некоторые операции INSERT / UPDATE / DELETE, и данные были изменены в ОЗУ, но еще не обновлены в файлах табличного пространства на диске.

После внесения изменения оно также должно быть безопасно сохранено в журнале транзакций, даже если оно не обновлено втабличного пространства.Но если ваши друзья получают файлы в этом состоянии (журнал транзакций содержит изменения, которых нет в табличном пространстве), они могут восстановить данные из вашей оперативной памяти, которые они не получили.Это называется Восстановление после сбоя InnoDB .MySQL Server автоматически запускается, если запускается, и обнаруживает, что журнал транзакций содержит изменения, которых нет в табличном пространстве.Предполагается, что вы внезапно перезагрузились и потеряли то, что было в ОЗУ.

Если ваши друзья попытаются просто поддерживать работу MySQL Server непрерывно, читая каталог данных, который одновременно обновляется их OneDrive, это в основном будетперезаписать их файлы и MySQL запутаетсяЭто только проверяет, должно ли это делать восстановление после сбоя, когда MySQL Server запускается.Поэтому, если файлы изменяются неожиданным образом, когда MySQL Server уже запущен, он просто сделает вывод, что ваш жесткий диск поврежден.Вероятно, он сообщит о фатальной ошибке и отключит MySQL.

Также, если ваши друзья попытаются внести свои собственные изменения в базу данных, их изменения будут конфликтовать с обновлениями OneDrive.Тогда их попытки перезаписать файлы будут в конечном итоге синхронизированы в обратном направлении через OneDrive, что в конечном итоге также приведет к повреждению вашей базы данных.Это может происходить без предупреждения с 10-минутными интервалами всякий раз, когда OneDrive выбирает синхронизацию файлов.

Поэтому я боюсь, что OneDrive не является решением для совместного использования вашей базы данных.

Альтернативы, которые имеют шанс работать, включают:

  • Размещение одного экземпляра MySQL Server на веб-сайте, которым вы все делитесь, и предоставление каждому из вас клиентакоторые могут использовать базу данных.Популярный бесплатный клиент - phpMyAdmin .Таким образом, будет только один экземпляр MySQL Server, один datadir, хотя каждый из вас будет одновременно работать с клиентами, читающими и записывающими данные.Это простейшее решение, которое, скорее всего, сработает.

  • Периодический экспорт данных из экземпляра MySQL Server с использованием mysqldump и помещение файла экспорта в OneDrive, илиотправить его своим друзьям по электронной почте или любым другим способом.Затем им придется импортировать эти данные на свой MySQL Server вручную.Это перезапишет любые изменения, которые они внесли в свою базу данных, но это не будет выглядеть как повреждение.Если они хотят отправить вам изменения назад, они могут выполнить аналогичную операцию: экспортировать свою базу данных, поместить файл дампа в OneDrive, затем вы получите их файл дампа и импортируете его в свой экземпляр MySQL Server, перезаписывая все ваши изменениясделано локально с момента последней отправки экспорта вашим друзьям.

  • Используйте надстройку MySQL для многосерверной синхронной репликации, например InnoDB Group Replication или Percona XtraDB Cluster .Но это, вероятно, слишком сложно для вас, если вы новичок в MySQL.

...