it-swarm-id.com

Bagaimana cara saya memindahkan file data MySQL ke partisi yang berbeda?

Saya memiliki hard drive saya dipartisi dengan dua partisi, jadi saya dapat dengan mudah menginstal ulang Ubuntu dan mencoba versi yang berbeda tanpa kehilangan data direktori rumah saya. Ini diatur seperti ini:

20GB  -> /     (root)
180GB -> /home 

Saya melakukan banyak pekerjaan pengembangan, jadi saya memiliki folder /var/www saya yang terhubung dengan /home/valorin/workspace.

Tapi saya ingin melakukan ini dengan file data MySQL saya juga, karena saya merasa jengkel bahwa setiap kali saya menginstal ulang mesin saya, saya perlu melakukan SQLdump penuh dan kemudian mengembalikan semua DB sebelum saya dapat melakukan lebih banyak pekerjaan.

Apa cara terbaik untuk melakukan ini tanpa merusak MySQL?

28
Stephen RC

Sebenarnya ada potensi jawaban spesifik Ubuntu untuk pertanyaan ini.

Seperti yang disebutkan oleh tautan Gergoes, ini pada dasarnya tentang memodifikasi /etc/mysql/my.cnf dan menetapkan nilai baru untuk datadir = di bagian [mysqld] . Sejauh ini bagian yang tidak spesifik dari jawabannya.

Dengan asumsi Anda menjalankan versi Ubuntu yang agak modern, Anda mungkin sudah memiliki --- AppArmor diinstal secara default, dengan profil untuk /usr/sbin/mysqld di mode yang dipaksakan. Profil default itu kemungkinan besar tidak akan menerima datadir baru Anda.

Mari kita asumsikan bahwa datadir baru Anda adalah /home/data/mysql .

Jika Anda membuka file /etc/apparmor.d/usr.sbin.mysqld Anda akan menemukan aturan di antara dua baris ini.

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

Dengan asumsi contoh kita di atas, mereka harus diganti atau (mungkin lebih disukai) dilengkapi oleh dua baris ini.

/home/data/mysql/ r,
/home/data/mysql/** rwk,

Sebelum kita dapat memulai server MySQL kita, dengan datadir baru, kita juga harus secara eksplisit memuat profil apparmor baru kita.

$ Sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
31
andol

Pengguna super memiliki petunjuk langkah demi langkah yang bagus tentang cara mengatasi masalah ini

Berikut ini adalah seperangkat instruksi lain untuk melakukan hal yang sama http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html

Ini dia mem-posting ulang. Pergi dan naik pilih yang asli jika Anda bisa di pengguna super.

Setelah kebingungan umum tentang izin, saya menyadari bahwa masalahnya bukan pada hak akses dan jalur saya, tetapi AppArmor mencegah mysql membaca dan menulis ke lokasi baru.

Ini solusi saya:

Pertama hentikan MySQL, jadi tidak ada yang aneh terjadi saat Anda mengutak-atik:

$ Sudo stop mysql

Kemudian pindahkan semua direktori database ke rumah baru mereka:

$ Sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

Jangan memindahkan file, itu akan dihasilkan oleh mysql, cukup pindahkan folder (yang merupakan basis data).

Kemudian dengan sopan minta AppArmor untuk mengizinkan mysql menggunakan folder baru:

$ Sudo vim /etc/apparmor.d/usr.sbin.mysqld

tambahkan baris:

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

Kemudian beri tahu mysql bahwa datadir telah pindah:

$ Sudo vim /etc/mysql/my.cnf 

ubah baris:

datadir=/var/lib/mysql

untuk:

datadir=/my-new-db-dir/

CATATAN: Bergantung pada pengaturan basis data Anda, Anda mungkin perlu mengubah innodb-data-home-dir dll.

Kemudian restart AppArmor untuk membaca pengaturan baru:

$ Sudo /etc/init.d/apparmor restart

Dan mulai lagi MySQL menggunakan datadir baru:

$ Sudo start mysql

Semoga ini membantu!

4
nelaaro

Bagi mereka yang menyukai saya bekerja dengan VirtualBox dan perlu memindahkan datadir MySQL ke folder bersama pada sistem Host, ikuti tutorial sederhana di http://vacilando.org/en/article/moving-mysql-data -files-virtualbox-shared-folder

0
Vacilando

Ini sebenarnya bukan spesifik Ubuntu. Namun demikian, berikut adalah sesuatu yang mungkin membantu: http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location

0
Nathan Osman