デュアルブートでMySqlデータベースファイルをWindowsと共有できますか?


12

UbuntuとWindows(デュアルブート)の両方で、NTFSパーティションにあるMySqlデータベースファイルを使用したいと思います。機能しますか?何か問題がありますか?


4
コミュニティの記録について:ユーザーは、Ubuntu LinuxとMicrosoft Windowsの間のMySQLデータ形式の互換性について質問しています。ユーザーは、MySQL用のUbuntu Linux形式で保存されたデータが、MySQLのWindowsバージョンがデータを保存する方法と互換性があるかどうか疑問に思っています。
トーマスウォード

A:ここで、Unix&Linux StackExchangeでこの質問に対する広範な回答を提供しました。
楕円ビュー

回答:


9

はい、動作しますが、いくつかの癖があります。MySQLはプラットフォーム間で同じファイル形式を使用するため、必要なのはデータディレクトリを共有することだけです。1つの問題は、データディレクトリがubuntuの所有者およびグループとしてmysqlを必要とすることです。また、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_dataX:Windowsでマウントした場所を置き換えます)に設定します。

コンパイルUF.orgに関するトピック1442148

Ubuntuバージョンが動作するようになりました。私はWindowsを持っていないので、部分的にテストされていません


とてもいい答えです!わずか2つのコメント:大文字と小文字が混在する名前がすでに多くあり、lower_case_table_names=1それを使用しても問題ありません。あなたのマウントオプションなしで、私はこのバグに遭遇しました(これは実際にはバグです)。
-maaartinus

「sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data」はエラーになります。unix.stackexchange.com/questions/310433/を
楕円ビュー

1

以前にWindowsのみの環境にLinuxパーティションを追加した場合、わずかな微調整のみでデータベースを使用できます。ここに長いバージョン、短いバージョン:

mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysql起動時に実行する必要があります(Windowsドライブ/media/windowsをfstab を使用してマウントすると仮定します)。

innodbのログサイズチェックを回避するには、ubuntuパーティションのinnodbログを移動する必要があります。ではmy.cnf、追加innodb_log_group_home_dir = /var/log/mysqlのログはMySQLのエラーログに次に行くようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.