Bisakah saya berbagi file database MySql dengan Windows pada dual boot?

12

Saya ingin menggunakan di Ubuntu dan Windows (dual boot) file database MySql saya yang berada di partisi NTFS. Apakah ini akan berhasil? Ada gotcha?

maaartinus
sumber
4
UNTUK REKOR KOMUNITAS: Pengguna bertanya tentang kompatibilitas format data MySQL antara Ubuntu Linux dan Microsoft Windows. Pengguna bertanya-tanya tentang apakah data yang disimpan dalam format Linux Ubuntu untuk MySQL kompatibel dengan cara MySQL versi Windows menyimpan data sehingga informasi basis data dapat diedit dan dipulihkan baik di Windows maupun MySQL.
Thomas Ward
A: Saya baru saja memberikan jawaban yang luas untuk pertanyaan ini di sini , di Unix & Linux StackExchange .
Pandangan elips

Jawaban:

9

Ya, itu berfungsi tetapi dengan beberapa kebiasaan. MySQL menggunakan format file yang sama di seluruh platform sehingga yang Anda butuhkan hanyalah berbagi direktori data. Satu masalah adalah bahwa direktori data harus memiliki mysql sebagai pemilik dan grup di ubuntu. Dan Windows tidak peka huruf besar kecil dan Linux peka huruf besar kecil sehingga jaga semua nama tetap seragam: baik seluruh nama huruf kecil atau besar tetapi jangan mencampurnya.

Dari awal hingga akhir; jika Anda sudah memiliki pengaturan hal-hal ini mungkin perlu beberapa penyesuaian agar sesuai dengan pengaturan Anda:

  • Instal dan setup MySQL di kedua sistem.
  • Hentikan server mysql jika sedang berjalan.
  • Buat partisi NTFS baru. Tandai nama perangkat (sebut saja sdXNsekarang).
  • Pindahkan direktori data mysql dari Ubuntu ke partisi baru.

    mkdir /{mountpoint}/mysql_data
    sudo mv /var/lib/mysql /{mountpoint/mysql_data
    

    menggunakan mvmenyimpan izin.

  • Buat direktori mysql baru

    sudo mkdir /var/lib/mysql
    
  • Pasang partisi NTFS di /var/lib/mysql. Ubah nama alat menjadi apa yang didapat saat Anda membuat partisi NTFS.

    sudo mount /dev/{sdXN} /var/lib/mysql -t ntfs-3g -o uid=mysql,gid=mysql,umask=0077
    
  • Untuk mengotomatiskan saat boot menemukan partisi UUID dan lokal dan edit /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
    
  • Ubah jalur 'datadir' /etc/mysql/my.cnfke titik/var/lib/mysql/mysql_data

  • Mulai server mysql dan mengujinya.

  • Edit file konfigurasi Windows ( my.ini) dan atur 'datadir' ke X:/mysql_data(ganti X:untuk tempat Anda memasangnya di Windows).

Dikompilasi dari topik 1442148 di UF.org .

Saya membuat versi Ubuntu berfungsi; jadi sebagian belum teruji karena saya tidak punya Windows

Rinzwind
sumber
Jawaban yang sangat bagus! Hanya dua komentar: Sudah ada banyak nama case campuran dan menggunakannya lower_case_table_names=1berfungsi dengan baik. Tanpa opsi mount Anda, saya bertemu bug ini (yang memang bug IMHO).
maaartinus
"sudo mv / var / lib / mysql / dev / {sdXN} / mysql_data" memberikan kesalahan. Lihat unix.stackexchange.com/questions/310433/...
Tampilan elips
1

Jika Anda telah menambahkan partisi linux ke lingkungan yang sebelumnya hanya untuk windows, Anda dapat menggunakan database di tempat dengan hanya beberapa perubahan kecil. Versi lama di sini , versi singkat:

Anda harus mount --bind '/media/windows/ProgramData/MySQL/MySQL Server 5.5/data' /var/lib/mysqlmenjalankannya saat startup (dengan asumsi Anda memasang drive windows Anda /media/windowsmenggunakan fstab).

Untuk menghindari pemeriksaan ukuran log innodb, Anda harus memindahkan log innodb untuk partisi ubuntu. Di my.cnf, tambahkan innodb_log_group_home_dir = /var/log/mysqlsehingga log pergi di sebelah log kesalahan mysql.

Josiah
sumber