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

12

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

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

Ответы:

9

Да, это работает, но с некоторыми причудами. 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. Измените имя устройства на то, что оно получило при создании раздела 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
    
  • Измените путь /etc/mysql/my.cnfк datadir, чтобы он указывал на/var/lib/mysql/mysql_data

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

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

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

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

Rinzwind
источник
Очень хороший ответ! Просто два комментария: уже есть много смешанных имен случаев, и использование lower_case_table_names=1его прекрасно работает. Без ваших параметров монтирования я столкнулся с этой ошибкой (которая, по-моему, действительно ошибка).
Maaartinus
"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" выдает ошибку. См. Unix.stackexchange.com/questions/310433/…
эллиптический вид
1

Если вы добавили раздел 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.

Иосия
источник