Вопрос Могу ли я поделиться файлами базы данных MySql с Windows при двойной загрузке?


Я хотел бы использовать как Ubuntu, так и Windows (двойную загрузку) мои файлы базы данных MySql, находящиеся на разделе NTFS. Это будет работать? Любые ошибки?


12
2018-02-19 05:00


происхождения


ДЛЯ ЗАПИСИ ОБЩЕСТВЕННОСТИ: Пользователь спрашивает о совместимости форматов данных MySQL между Ubuntu Linux и Microsoft Windows. Пользователь задается вопросом, совместимы ли данные, хранящиеся в формате Ubuntu Linux для MySQL, с тем, как версия MySQL MySQL хранит данные, чтобы можно было отредактировать и восстановить информацию о базе данных как в Windows, так и в MySQL. - Thomas Ward♦
A: Я только что дал обширный ответ на этот вопрос Вот, в Unix и Linux StackExchange, - Eliptical view


ответы:


Да, это работает, но с некоторыми причудами. MySQL использует одни и те же файловые форматы на разных платформах, поэтому все, что вам нужно, - это обмен каталогом данных. Одна из проблем заключается в том, что в каталоге данных должен быть mysql как владелец и группа в ubuntu. И Windows не чувствительна к регистру, и Linux чувствителен к регистру, поэтому сохраняйте все имена одинаковыми: либо полное имя в нижнем регистре, либо в верхнем регистре, но не смешивайте их.

От начала до конца; если у вас уже есть что-то настроенное, это может потребовать некоторой настройки для вашей установки:

  • Установите и настройте MySQL на обеих системах.
  • Остановите сервер mysql, если он запущен.
  • Создайте новый раздел NTFS. Отметьте имя устройства (назовем его sdXN на данный момент).
  • Переместите каталог данных mysql из Ubuntu в новый раздел.

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    с помощью mv сохраняет разрешения.

  • Создайте новый каталог mysql

    sudo mkdir /var/lib/mysql
    
  • Установите раздел NTFS в /var/lib/mysql, Измените имя devicename на то, что он получил, когда вы создали раздел NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Чтобы автомонтировать при загрузке, найдите UUID раздела и локали и отредактируйте /etc/fstab,

    ls -l /dev/disk/by-uuid
    locale -a
    sudo gedit /etc/fstab   
    UUID={number_found_with_the_ls-l} /var/lib/mysql ntfs-3g uid=mysql,gid=mysql,umask=0077,locale={your_locale}.utf8  0  0
    
  • Измените путь 'datadir' в /etc/mysql/my.cnf указать на /var/lib/mysql/mysql_data

  • Запустите сервер mysql и протестируйте его.

  • Отредактируйте конфигурационный файл Windows (my.ini) и установите 'datadir' для X:/mysql_data (заменить X: где вы монтируете его под Windows).

Составлено из по теме 1442148 на UF.org,

Я получил версию Ubuntu; поэтому частично непроверено, так как у меня нет Windows


9
2017-08-19 13:48



Очень хороший ответ! Всего два комментария: Есть уже много имен смешанных имен и использование lower_case_table_names=1 он отлично работает. Без вариантов монтирования я столкнулся эта ошибка (это ИМХО действительно ошибка). - maaartinus
«sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" дает ошибку. Видеть unix.stackexchange.com/questions/310433/... - Eliptical view


Если вы добавили раздел linux в ранее установленную только для Windows среду, вы можете использовать базу данных только с некоторыми незначительными изменениями. Длинная версия Вот, укороченная версия:

Вам понадобиться mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysql для запуска при запуске (при условии, что вы подключите свой Windows-диск к /media/windows используя fstab).

Чтобы обойти проверку размера журнала innodb, вам нужно переместить журналы innodb для раздела ubuntu. В my.cnf, Добавить innodb_log_group_home_dir = /var/log/mysql так что журналы идут рядом с журналом ошибок mysql.


1
2018-01-13 15:36