Чи можу я поділитися файлами баз даних MySql з Windows при подвійному завантаженні?


12

Я хотів би використовувати в Ubuntu та Windows (подвійне завантаження) мої файли баз даних MySql, що знаходяться на розділі NTFS. Чи буде це працювати? Будь-які готчі?


4
ДЛЯ ЗАПИСУ СПІЛЬНОСТІ: Користувача запитують про сумісність форматів даних MySQL між Ubuntu Linux та Microsoft Windows. Користувача цікавить питання, чи сумісні дані, що зберігаються у форматі Ubuntu Linux для MySQL, таким чином, як версія Windows MySQL зберігає дані, щоб інформація про базу даних могла бути відредагована та відновлена ​​як у Windows, так і в MySQL.
Thomas Ward

Відповідь: Я щойно дав розгорнуту відповідь на це питання тут , в 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
    
  • Змініть шлях "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


Дуже приємна відповідь! Лише два коментарі: Існує вже багато змішаних назв справ, і їх використання lower_case_table_names=1прекрасно працює. Без ваших варіантів монтажу я зіткнувся з цією помилкою (що справді помилка IMHO).
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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.