Apakah mungkin mengubah direktori data MySQL default saya ke jalur lain? Apakah saya dapat mengakses database dari lokasi lama?
Apakah mungkin mengubah direktori data MySQL default saya ke jalur lain? Apakah saya dapat mengakses database dari lokasi lama?
Jawaban:
Hentikan MySQL menggunakan perintah berikut:
sudo /etc/init.d/mysql stop
Salin direktori data yang ada (default berada di /var/lib/mysql
) menggunakan perintah berikut:
sudo cp -R -p /var/lib/mysql /newpath
edit file konfigurasi MySQL dengan perintah berikut:
sudo gedit /etc/mysql/my.cnf # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
Cari entri datadir
, dan ubah jalur (yang seharusnya /var/lib/mysql
) ke direktori data baru.
Di terminal, masukkan perintah:
sudo gedit /etc/apparmor.d/usr.sbin.mysqld
Cari garis yang dimulai dengan /var/lib/mysql
. Ubah /var/lib/mysql
baris dengan jalur baru.
Simpan dan tutup file.
Mulai ulang profil AppArmor dengan perintah:
sudo /etc/init.d/apparmor reload
Mulai ulang MySQL dengan perintah:
sudo /etc/init.d/mysql restart
Sekarang login ke MySQL dan Anda dapat mengakses database yang sama seperti sebelumnya.
alias /var/lib/mysql/ -> /newpath/,
Cepat dan mudah dilakukan:
# Create new directory for MySQL data
mkdir /new/dir/for/mysql
# Set ownership of new directory to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql
# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql
# Stop MySQL before copying over files
service mysql stop
# Copy all files in default directory, to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/
Edit /etc/my.cnf
file, dan di bawah [mysqld]
tambahkan baris ini:
datadir=/new/dir/for/mysql/
Jika Anda menggunakan CageFS (dengan atau tanpa CloudLinux) dan ingin mengubah direktori MySQL, Anda HARUS menambahkan direktori baru ke file ini:
/etc/cagefs/cagefs.mp
Dan kemudian jalankan perintah ini:
cagefsctl --remount-all
Anda harus menyalin data saat ini ke direktori baru dan mengubah my.cnf
MySQL Anda.
[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/
Anda harus menyalin database ketika server tidak berjalan .
ln -s
lynx simbolik statis, bukankah itu akan membuatnya?
my.cnf
Pertama, Anda harus menghentikan server mysql. misalnya
# /etc/init.d/mysql stop
Setelah itu Anda harus menyalin direktori data lama (misalnya / var / lib / mysql) termasuk. hak istimewa ke direktori baru Anda melalui
# cp -R -p /var/lib/mysql /new/data/dir
sekarang Anda dapat mengubah /etc/mysql/my.cnf
data baru dan me-restart server
# /etc/init.d/mysql restart
Jika seperti saya Anda menggunakan debian dan Anda ingin memindahkan direktori mysql ke rumah Anda atau path di / home / ..., solusinya adalah:
Suatu hari untuk menemukan solusi bagi saya pada dokumentasi mariadb. Semoga ini bisa membantu beberapa orang!
Saya ingin menyimpan database di mesin saya, tetapi juga memiliki data di hard drive eksternal saya, dan beralih antara menggunakan keduanya.
Jika Anda menggunakan Mac, dan menginstal MySQL menggunakan Homebrew, ini seharusnya cocok untuk Anda. Jika tidak, Anda hanya perlu mengganti lokasi yang sesuai untuk MySQL datadir
di komputer Anda.
#cd to my data dir location
cd /usr/local/var/
#copy contents of local data directory to the new location
cp -r mysql/ /Volumes/myhd/mydatadir/
#temporarily move the old datadir
mv mysql mysql.local
#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql
Kemudian ketika Anda ingin beralih kembali cukup lakukan:
mv mysql mysql.remote
mv mysql.local mysql
dan Anda menggunakan basis data lokal Anda lagi. Semoga itu bisa membantu.
Pertama hentikan mysqld
mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
Kemudian ubah datadir di /etc/mysql/my.cnf
Mulai mysqld Anda
Catatan:
# 1: mungkin Anda harus menyesuaikan pengaturan SELinux Anda (coba dengan SELinux dinonaktifkan jika ada masalah), Apparmor (Ubuntu) mungkin juga menjadi masalah.
# 2: lihat Referensi Instal MySQL DB
Pertama-tama hentikan mysql Anda
sudo service mysql stop
salin data mysql ke lokasi baru.
sudo cp -rp /var/lib/mysql /yourdirectory/
jika Anda menggunakan apparmor, edit file berikut dan lakukan hal berikut
sudo vim /etc/apparmor.d/usr.sbin.mysqld
Ganti di mana / var / lib / oleh / yourdirectory / lalu tambahkan follwoing jika tidak ada ke file
/yourdirectory/mysql/ r,
/yourdirectory/mysql/** rwk,
Simpan file dengan perintah
:wq
Edit file my.cnf
sudo vim /etc/mysql/my.cnf
Ganti di mana / var / lib / oleh / yourdirectory / lalu simpan dengan perintah
:wq
akhirnya mulai mysql
sudo service mysql start
@lihat lebih lanjut tentang raid0, optimasi ici
Solusi ini berfungsi di Windows 7 menggunakan Workbench. Anda memerlukan hak Administrator untuk melakukan ini. Ini menciptakan persimpangan (seperti jalan pintas) ke mana pun Anda benar-benar ingin menyimpan data Anda
Buka Workbench dan pilih INSTANCE - Startup / Shutdown Hentikan server
Instal Junction Master dari https://bitsum.com/junctionmaster.php
Arahkan ke C: \ ProgramData \ MySQL \ MySQL Server 5.6
Klik kanan pada Data dan pilih "MOVE dan kemudian LINK folder untuk ..." Terima tujuan Titik peringatan ke "Direktori data baru Anda di sini tanpa tanda kutip" Klik MOVE DAN LINK
Sekarang buka "Direktori data baru Anda di sini tanpa tanda kutip"
Klik kanan pada Data Pergi ke tab keamanan Klik Edit Klik Tambah Jenis LAYANAN NETWORK kemudian Periksa Nama Klik OK Klik kotak centang Izinkan Kontrol Penuh dan kemudian OK
Kembali ke Workbench dan Mulai server
Metode ini bekerja untuk saya menggunakan MySQL Workbench 6.2 pada Windows 7 Enterprise.
Semuanya seperti @ user1341296 katakan, ditambah ...
Anda lebih baik tidak mengubah /etc/mysql/my.cnf
Alih-alih Anda ingin membuat file baru /etc/mysql/conf.d/ext.cnf
(nama apa pun, tetapi ekstensi harus cnf
)
Dan masukkan perubahan Anda:
[mysqld]
datadir=/vagrant/mq/mysql
Lewat sini
Jika Anda adalah pengguna Windows dan mendarat di sini untuk mengetahui bahwa semua jawaban untuk Pengguna Linux, jangan kecewa! Saya tidak akan membiarkan Anda membuang waktu seperti yang saya lakukan.
Sedikit omong kosong sebelum solusi:
MySQL menggunakan direktori Data untuk menyimpan data dari berbagai basis data yang Anda buat. Yah, pada akhirnya, itu harus menyimpannya dalam bentuk file dengan beberapa jugglery ditambahkan dalam aplikasi dan format file untuk memastikan janji-janji Database yang Anda pelajari di kelas-kelas Database utuh.
Sekarang Anda ingin memastikan ada cukup ruang untuk menyimpan basis data besar yang mungkin Anda buat di masa depan, dan Anda berpikir, Hei! Saya ingin memasukkannya ke drive lain yang memiliki lebih banyak ruang.
Jadi, Anda melakukan yang berikut ini.
Langkah - 1 : Menghentikan layanan MySQL.
Window Key + R - will open Run
servies.msc - will open services manager
Locate MySQL80 (80 is for version 8.0, look for the one you've).
Stop it. (Right click, Stop)
Langkah - 2 : Mencari tahu direktori Data saat ini
Goto C:\ProgramData\MySQL\MySQL Server 8.0
Secara default, harus ada folder di sini bernama Data
, ini adalah yang digunakan oleh MySQL dalam pengaturan default (asalkan mereka belum menemukan lokasi lain yang lebih baik), tetapi mari kita periksa.
Temukan my.ini
file, harus ada di sana.
Buka di editor (Notepad ++ mungkin).
Lakukan CTRL + F untuk mencari tahu datadir
dalam file.
Apa pun yang disebutkan di sini adalah lokasi aktual yang sedang digunakan oleh MySQL untuk direktori data. Ini yang ingin Anda ubah.
Langkah - 3 : Menggantinya dengan direktori data baru.
Katakanlah Anda ingin direktori data baru Anda menjadi W: __ MySQL_Data. Mari kita ubah
datadir
nilai dalam my.ini
file ke nilai ini. Biarkan nilai sebelumnya dikomentari sehingga Anda tidak harus mengingatnya.
# Path to the database root
# datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
datadir=W:/__MySQL_Data
Sekarang gunakan xcopy
untuk menyalin default datadir
ke W:\
. Luncurkan command prompt (Window + R, cmd, Enter)
>> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0" "W:\" /E /H /K /O /X
Dan ganti nama folder yang disalin ke nilai baru datadir
yang Anda ubah. Sini:W:/__MySQL_Data
Mengapa tidak menyalin saja? Nah karena itu bukan COOL !, ini membantu Anda tidak kehilangan izin pada folder yang disalin, sehingga ketika Anda me-restart MySQL80
, itu tidak akan memberikan kesalahan bodoh: "Layanan MySQL80 pada Komputer Lokal mulai dan kemudian berhenti. Beberapa layanan berhenti secara otomatis jika mereka tidak digunakan oleh layanan atau program lain. " - Courtesy: Microsoft
Langkah - 4 : Mulai ulang layanan
Well, go back to the Services Manager to Start again,
"MySQL80" that you stopped, to restart it again.
Langkah - 5 : Selesai! Sekarang kembali bekerja !!
Saya sering perlu melakukan ini ketika meningkatkan mesin, bergerak dari kotak ke kotak. Selain memindahkan / var / lib / mysql ke lokasi yang lebih baik, saya sering perlu mengembalikan tabel DB lama dari instalasi MySQL lama. Untuk melakukan ini ...
Kami harus memindahkan MySQL ke /home
direktori karena dipetakan dari disk fisik lain. Untuk membuat hidup lebih sederhana, alih-alih mengubah direktori di my.cnf, kami telah memetakan direktori baru /home/mysql
di tempat direktori asli /var/lib/mysql
. Ini bekerja untuk kita seperti jimat (diuji pada CentOS 7.1).
Buat dir baru dan atur izin yang benar.
mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql
Hentikan MySQL jika berjalan.
systemctl stop mysql
Pindahkan direktori data.
mv -f /var/lib/mysql/* /home/mysql
Buat tunggangan permanen dan jalankan.
echo "/home/mysql /var/lib/mysql none bind 0 0" >> /etc/fstab
mount -a
Mulai ulang server.
systemctl start mysql
Jika Anda ingin melakukan ini secara terprogram (tidak ada entri teks manual dengan gedit) di sini adalah versi untuk Dockerfile berdasarkan jawaban user1341296 di atas:
FROM spittet/ruby-mysql
MAINTAINER you@gmail.com
RUN cp -R -p /var/lib/mysql /dev/shm && \
rm -rf /var/lib/mysql && \
sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \
/etc/init.d/mysql restart
Tersedia di hub Docker di sini: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/
Pertama, Anda harus tahu di mana file konfigurasi Anda? dimana file konfigurasi anda?
JIKA Anda menginstal dengan apt-get atau yum install。
file konfigurasi mungkin muncul di
/etc/mysql/my.cnf
datafile dapat muncul di
/ var / lib / mysql
dan apa yang harus Anda lakukan adalah
dan kemudian pekerjaan selesai.
Tetapi jika Anda tidak menginstalnya dengan apt atau yum, direcotry mungkin tidak seperti ini, dan Anda dapat menemukan file mysql dengan
dimana mysql
Di bawah SuSE 13.1, ini berfungsi dengan baik untuk memindahkan direktori data mysql di tempat lain, misalnya ke / home / example_user /, dan untuk memberinya nama yang lebih informatif:
Di / var / lib /:
# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql
Saya memulai kembali mysql:
# systemctl restart mysql.service
tetapi curiga bahwa itu pun tidak perlu.
Untuk salah satu lingkungan saya mengubah direktori data mysql ke lokasi baru tetapi selama restart server mysql, butuh waktu. Jadi saya memeriksa port, dan menemukan bahwa proses lain mendengarkan pada port mysql. Jadi saya mematikan proses dan me-restart server mysql dan bekerja dengan baik.
Saya mengikuti langkah-langkah berikut untuk mengubah direktori data yang berfungsi sangat baik. ubah direktori data mysql di Linux
Langkah-langkah di atas adalah dasar dan dasar. Saya mengikuti mereka dan masih mendapat kesalahan "mysql gagal memulai".
Agar folder baru untuk menyimpan data mysql, Anda perlu memastikan bahwa folder tersebut memiliki izin dan kepemilikan mysql: mysql.
Selain itu, perlu memeriksa izin dan kepemilikan direktori induk dari mysql jika memiliki, katakanlah, / data / mysql /. Di sini / data / direktori harus menjadi root: root. Saya memperbaiki kesalahan "mysql gagal memulai" setelah mengubah kepemilikan direktori induk dari / mysql. OS di VM saya adalah RHEL 7.6.
Dimungkinkan juga untuk menghubungkan datadir. Setidaknya di macOS, lingkungan dev.
(homebrew) misalnya
# make sure you're not overwriting anything important, backup existing data
mv /usr/local/var/mysql [your preferred data directory]
ln -s [your preferred data directory] /usr/local/var/mysql
Mulai ulang mysql.
Jika Anda menggunakan SE linux, atur ke mode permisif dengan mengedit / etc / selinux / config dan mengubah SELINUX = menegakkan ke SELINUX = permisif
datadir
properti