Могу ли я делиться файлами базы данных MySql с Windows при двойной загрузке?
12
Я хотел бы использовать как в Ubuntu, так и в Windows (двойная загрузка) файлы базы данных MySql, находящиеся в разделе NTFS. Это будет работать? Есть ошибки?
ДЛЯ ЗАПИСИ СООБЩЕСТВА: пользователь спрашивает о совместимости форматов данных 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 в новый раздел.
Смонтируйте раздел 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).
Очень хороший ответ! Просто два комментария: уже есть много смешанных имен случаев, и использование lower_case_table_names=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.
Ответы:
Да, это работает, но с некоторыми причудами. MySQL использует одинаковые форматы файлов на разных платформах, поэтому все, что вам нужно, это предоставить общий доступ к каталогу данных. Одна проблема заключается в том, что каталог данных должен иметь mysql в качестве владельца и группы в Ubuntu. А в Windows регистр не учитывается, а в Linux регистр учитывается, поэтому сохраняйте все имена одинаковыми: либо полное, либо строчное, либо прописное, но не смешивайте их.
От начала и до конца; если у вас уже есть что-то настроенное, возможно, потребуется подстройка под ваши настройки:
sdXN
сейчас).Переместите каталог данных mysql из Ubuntu в новый раздел.
использование
mv
сохраняет разрешения.Создайте новый каталог MySQL
Смонтируйте раздел NTFS в
/var/lib/mysql
. Измените имя устройства на то, что оно получило при создании раздела NTFS.Для автоматического монтирования при загрузке найдите раздел UUID, локаль и отредактируйте
/etc/fstab
.Измените путь
/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
источник
lower_case_table_names=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.источник