Bagaimana saya bisa memindahkan database MySQL ke drive lain?

34

Saya menggunakan MySQL 5.5 pada mesin lokal untuk menganalisis sejumlah besar data pemerintah. Saya telah membuat database lokal yang berada di drive default saya (Win7 C: drive). Saya ingin menyimpan data di drive E: saya, drive eksternal eSATA yang besar.

Langkah apa yang harus saya ambil?


sumber
Anda tidak dapat mengekspor dB sebagai file sql, kemudian menyimpan file do e: maka di masa depan jika Anda ingin mengembalikan dB Anda dapat mengimpor file ini
@ tq - Itu tidak akan berhasil. Dia ingin mengubah direktori data server MySQL. Jika dia mengekspor dan mengimpornya, itu masih akan berada di drive yang sama!
Sebuah kata hati-hati ketika Anda memindahkan file database ke drive eksternal, Anda harus tetap terhubung ke komputer Anda jika tidak database Anda akan crash karena tidak akan dapat menemukan file data
Stephen Senkomago Musoke

Jawaban:

35
  1. Matikan mysql.
  2. Pindahkan semua file di direktori data Anda saat ini ke lokasi baru (lihat lokasi di langkah 3 - datadirparameter).
  3. Temukan my.inifile (ada di direktori instalasi mysql). Ubah datadirnilai parameter untuk menunjuk ke lokasi baru.
  4. Mulai mysql.

sumber
Ini memberi saya kesalahan ketika mencoba memulai mysql (masalah izin). Saya memilih solusi yang saya posting di sini , yang saya harap dapat membantu menghemat waktu seseorang.
snapfractalpop
1
Pertanyaan @snapfractalpop adalah untuk windows
adam
@adam windows disebutkan di badan pertanyaan, tetapi tidak ditandai sebagai pertanyaan windows saja, juga windows tidak disebutkan dalam informasi utama. Saya memposting tautan di komentar karena mungkin pengguna non-windows lain mungkin tersandung pada pertanyaan ini juga.
snapfractalpop
Saya menemukan saya harus menggunakan /dan bukan \ sebagai pemisah direktori di jalur direktori untuk datadir. Saya menggunakan WAMPserver pada Windows 10.
Steve
Direktori ProgramData mungkin disembunyikan di file explorer Anda. Saya pikir itu tidak ada sampai saya mengubah pengaturan untuk menampilkan File Tersembunyi.
WestAce
6

Meskipun Anda meminta windows, berikut adalah beberapa petunjuk yang bagus untuk mereka yang berakhir di sini mencari petunjuk linux / ubuntu:

Asumsi:

  • Anda memiliki data mysql pada drive eksternal / usb / alternatif /mountpoint/var/lib/mysql, mungkin dari komputer yang mati atau instalasi lama
  • Anda ingin memindahkannya ke instalasi Ubuntu baru Anda secara lokal /var/lib/mysql
  • Berhenti MySQL dengan:
    sudo /etc/init.d/mysql stop.
  • Membuat cadangan dari saat ini (bersih) direktori data MySQL dengan:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Kemudian salin direktori data lama dari drive lama dengan: di
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    mana mountpointpath ke mount.
  • Sekarang restart MySQL dengan:
    sudo /etc/init.d/mysql start

Dengan sedikit keberuntungan, MySQL harus memulai kembali, dan Anda harus mengembalikan database lama Anda.

Sumber [email protected]

Cyrille
sumber
3
(!) ini tidak akan berfungsi karena konfigurasi masih menunjuk ke lokasi lama
ADOConnection
4

Solusi 1:

  1. Pertama-tama, buat cadangan data Anda menggunakan `mysqldump.
  2. Jika Anda menginstal Mysql Server dari paket resmi, Anda dapat melakukannya dengan menjalankan program MySQLINstanceConfig.exe dari direktori bin server Anda.
  3. Impor data

MySQLINstanceConfig.exe

Solusi kedua (tidak disarankan, tetapi bekerja pada mesin yang sama)

  1. Hentikan server Mysql.
  2. Salin data dari direktori data Anda ke direktori baru Anda
  3. Buka file my.cnf (dalam kasus saya "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. temukan baris seperti datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" dan ubah jalur ke lokasi baru Anda
  5. Mulai server Anda

Pada versi 5.6 MySQLInstanceConfig.exe tidak lagi didistribusikan. Fungsi ini sedang digantikan oleh penginstal. http://bugs.mysql.com/bug.php?id=66306

rkosegi
sumber
Apakah ada program Linux yang setara untuk memindahkan data
Ron Piggott
Setelah memindahkan data dengan pendekatan kedua saya tidak dapat memulai MariaDB (versi 5.5). Setelah memberikan akses pengguna layanan ke datadir baru layanan dimulai dan saya bale untuk terhubung ke DB. Namun mengakses setiap meja masih gagal: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Bagaimana saya bisa memastikan izin diatur dengan benar?
Bram
2

Untuk Windows, pada Penginstal MySQL 1.4.6 (2015-04-07) , lokasi data dapat ditentukan dalam kunci registri yang menentukan lokasi my.inifile, jadi jika data awalnya dipasang di lokasi non-default yang my.iniberkas tidak akan di C:\ProgramData\MySQL\MySQL Server x.x\.

Lokasi nilai registri adalah (setidaknya pada MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationadalah REG_SZyang menunjuk ke folder tempat file aplikasi MySQL berada; secara default:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationadalah REG_SZyang menunjuk ke folder di mana my.iniberada; secara default juga:C:\Program Files\MySQL\MySQL Server x.x\

Juga, my.inipath file termasuk dalam perintah layanan di bawah kunci registri ini: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXdalam ImagePath REG_EXPAND_SZnilai.

Nilai default dari string ini adalah: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Jadi intinya adalah bahwa untuk memindahkan file data dalam skenario ini Anda harus mengikuti langkah-langkah yang diposting oleh @ITCugas dengan beberapa tambahan.

Berikut langkah-langkah lengkapnya:

  1. Matikan mysql.
  2. Cari DataLocationnilai registri di atas untuk menemukan my.inilokasi file saat ini , dan jika Anda ingin juga memindahkan my.inifile perbarui DataLocationpath dan pindahkan my.inifile ke path baru ini.
  3. Jika Anda mengubah lokasi my.inifile, Anda perlu memperbarui jalur di kunci registri perintah layanan yang tercantum di atas.
  4. Buka my.inifile, cari datadirparameternya. Pindahkan file dari datadirjalur ini ke jalur di mana Anda ingin data berada, dan kemudian perbarui datadirparameter dengan jalur baru ini.
  5. Mulai mysql.
nextgentech
sumber