Lokasi berbeda untuk database MySQL?

18

Bisakah saya mengonfigurasi MySQL untuk menyimpan database tertentu di tempat yang terpisah pada disk?

Saya masih ingin ada basis data baru untuk pergi ke lokasi default, tetapi ada basis data khusus yang ingin saya simpan di folder Dropbox saya agar tetap disinkronkan di antara beberapa komputer.

Bagaimana saya bisa melakukan ini?

Colin
sumber
1
Kebetulan, itu mungkin dilakukan sebaliknya. Biarkan database seperti semula, dan simlink ke sana dari Dropbox. Dropbox tidak benar-benar memahami symlink, dan hanya akan menyinkronkannya seperti biasa.
TRiG

Jawaban:

27

Tentu saja Anda bisa! Anda harus memberikan izin root . Baca ln halaman manual.

MySQL menyimpan data basis data dalam direktori yang terpisah di /var/lib/mysql. Saya pikir, pada awalnya Anda harus membuat dir, di mana Anda ingin meletakkan file database yang dipilih. Berikan root permisson, hentikan deamon MySQL:

# /etc/init.d/mysql stop

Salin data Anda ke folder baru Anda:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

Hapus dir lama Anda dari file data MySQL: ( Peringatan! SELALU buat SQL dump terlebih dahulu !!! )

# rm -R /var/lib/mysql/DATABASENAME

Buat symlink kembali ke dir data MySQL: ( Perhatikan! Baca halaman manual ln pertama !!! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

Setelah itu, Anda siap, mulai MySQL Anda:

# /etc/init.d/mysql start

Peringatan! Jika direktori baru Anda tidak dapat ditulis dan dibaca oleh MySQL, itu tidak akan berhasil! Contoh, masalah umum: Anda menempatkan dir data baru Anda ke folder rumah Anda, folder rumah Anda dibaca dilindungi oleh orang lain (mis: drwxrwx --- Anda Andadir).

Tanyakan, apakah Anda ingin tahu hal-hal lain tentang metode itu!

antivirtel
sumber
2
Terima kasih! Saya bahkan tidak mempertimbangkan symlink, saya terlalu sibuk memikirkan cara untuk melakukannya di mysql.
Colin
8
Anda akan ingin mengedit /etc/apparmor.d/*mysqlduntuk memasukkan direktori baru juga. Kemudian sudo service apparmor reloadsebelum me-restart MySQL.
Kees Cook
3
@KeesCook terima kasih banyak atas tip apparmornya, itu membuatku gila !! Sepertinya lebih baik untuk memasukkannya /etc/apparmor.d/local(pada instal saya sudah ada usr.sbin.mysqld di sana), menambahkan satu /full/path/to/new/database/dir/** rwk,melakukannya untuk saya ...
Tobias J
Terima kasih banyak, beberapa detail pengeditan apparmor di sini juga berguna. Saya diperlambat mencoba menempatkan database pada drive yang tidak me-mount secara otomatis saat boot dan membutuhkan pengguna root untuk mengaksesnya. Menolak bekerja. Diedit fstabseperti ini sehingga drive itu dipasang di sistem file setelah bootup, sekarang semuanya berfungsi.
cardamom
3

Harap diingat bahwa jika Anda menggunakan Ubuntu, Anda juga perlu menambahkan entri dalam file konfigurasi AppArmour /etc/apparmor.d/usr.sbin.mysqld jika tidak, Anda akan terus mendapatkan kesalahan izin menulis walaupun Anda mengubah file dan folder izin.

Andrea Moro
sumber