web-dev-qa-db-ja.com

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

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

12
maaartinus

はい、動作しますが、いくつかの癖があります。 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_dataに設定します(Windowsでマウントする場所のX:を置き換えます)。

F.orgのトピック1442148 からコンパイル。

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

9
Rinzwind

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

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

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

1
Josiah