Memindahkan direktori data mysql centos 7

Ini menunjukkan

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
5 yang merupakan elemen konteks default untuk lokasi file database. Konteks ini harus diterapkan secara manual ke lokasi database baru yang akan digunakan dalam contoh ini agar dapat berfungsi dengan baik

Hentikan daemon mysqld

~]# systemctl stop mariadb.service
_

Buat direktori baru untuk lokasi baru database. Dalam contoh ini, /mysql/ digunakan

~]# mkdir -p /mysql

Salin file database dari lokasi lama ke lokasi baru

~]# cp -R /var/lib/mysql/* /mysql/

Ubah kepemilikan lokasi ini untuk mengizinkan akses oleh pengguna dan grup mysql. Ini menetapkan izin Unix tradisional yang masih akan diamati oleh SELinux

~]# chown -R mysql:mysql /mysql
_

Jalankan perintah berikut untuk melihat konteks awal direktori baru

~]# ls -lZ /mysql
drwxr-xr-x. mysql mysql unconfined_u:object_r:usr_t:s0   mysql

Konteks usr_t dari direktori yang baru dibuat ini saat ini tidak cocok untuk SELinux sebagai lokasi untuk file database MariaDB. Setelah konteks diubah, MariaDB akan dapat berfungsi dengan baik di area ini

Buka file konfigurasi MariaDB utama

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_6 dengan editor teks dan ubah opsi
~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
7 sehingga merujuk ke lokasi baru. Dalam contoh ini nilai yang harus dimasukkan adalah
~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
8

[mysqld]
datadir=/mysql
_

Simpan file ini dan keluar

Mulai

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_9. Layanan harus gagal dimulai, dan pesan penolakan akan dicatat ke file
~]# systemctl stop mariadb.service
0

~]# systemctl start mariadb.service
Job for mariadb.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.

Namun, jika daemon audit sedang berjalan dan bersamanya layanan

~]# systemctl stop mariadb.service
1, penolakan akan dicatat ke file
~]# systemctl stop mariadb.service
2 sebagai gantinya

SELinux is preventing `/usr/libexec/mysqld` "write" access on /mysql. For complete SELinux messages. run `sealert -l b3f01aff-7fa6-4ebe-ad46-abaef6f8ad71`

Alasan penolakan ini adalah mysql tidak diberi label dengan benar untuk file data MariaDB. SELinux menghentikan MariaDB dari memiliki akses ke konten berlabel

~]# systemctl stop mariadb.service
3. Lakukan langkah-langkah berikut untuk mengatasi masalah ini

Jalankan perintah berikut untuk menambahkan pemetaan konteks untuk mysql. Perhatikan bahwa

~]# systemctl stop mariadb.service
_4 tidak diinstal secara default. Jika tidak ada di sistem Anda, instal paket
~]# systemctl stop mariadb.service
5

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
0

Pemetaan ini ditulis ke file

~]# systemctl stop mariadb.service
_6

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_1

Sekarang gunakan utilitas

~]# systemctl stop mariadb.service
_7 untuk menerapkan pemetaan konteks ini ke sistem yang sedang berjalan

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_2

Sekarang lokasi mysql telah diberi label dengan konteks yang benar untuk MariaDB, mysqld dimulai

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_3

Konfirmasi konteks telah berubah untuk mysql

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
_4

Lokasi telah diubah dan diberi label, dan

~]# ls -lZ /var/lib/mysql
drwx------. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql
9 telah berhasil dimulai. Pada titik ini, semua layanan yang berjalan harus diuji untuk mengonfirmasi operasi normal

Setelah menginstal komponen tumpukan LAMP di server CentOS/RHEL 7, ada beberapa hal yang mungkin ingin Anda lakukan

Beberapa di antaranya berkaitan dengan peningkatan keamanan Apache dan MySQL / MariaDB, sementara yang lain mungkin berlaku atau tidak sesuai dengan pengaturan atau kebutuhan kita.

Misalnya, berdasarkan penggunaan yang diharapkan dari server database, kami mungkin ingin mengubah direktori data default (

# mysql -u root -p -e "SELECT @@datadir;"
0) ke lokasi yang berbeda. Ini adalah kasus ketika direktori seperti itu diharapkan tumbuh karena penggunaan yang tinggi

Jika tidak, sistem file tempat

# mysql -u root -p -e "SELECT @@datadir;"
_1 disimpan dapat runtuh pada satu titik yang menyebabkan seluruh sistem gagal. Skenario lain di mana mengubah direktori default adalah ketika kami memiliki jaringan berbagi khusus yang ingin kami gunakan untuk menyimpan data aktual kami

Untuk itu, pada artikel kali ini, kami akan menjelaskan cara mengubah direktori data MySQL / MariaDB default ke jalur yang berbeda di server CentOS/RHEL 7 dan distribusi Ubuntu/Debian

Meskipun kita akan menggunakan MariaDB, konsep yang dijelaskan dan langkah-langkah yang diambil dalam artikel ini berlaku untuk MySQL dan MariaDB kecuali disebutkan lain

Mengubah Direktori Data MySQL/MariaDB default

Catatan. Kami akan berasumsi bahwa direktori data baru kami adalah

# mysql -u root -p -e "SELECT @@datadir;"
2. Penting untuk dicatat bahwa direktori ini harus dimiliki oleh
# mysql -u root -p -e "SELECT @@datadir;"
3

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

Demi kenyamanan Anda, kami telah membagi prosesnya menjadi 5 langkah yang mudah diikuti

Langkah 1. Identifikasi Direktori Data MySQL Saat Ini

Untuk memulai, adalah layak dan baik untuk mengidentifikasi direktori data saat ini menggunakan perintah berikut. Jangan hanya menganggap itu masih

# mysql -u root -p -e "SELECT @@datadir;"
0 karena itu bisa diubah di masa lalu

# mysql -u root -p -e "SELECT @@datadir;"

Setelah Anda memasukkan kata sandi MySQL, hasilnya akan mirip dengan

Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Identifikasi Direktori Data MySQL

Langkah 2. Salin Direktori Data MySQL ke Lokasi Baru

Untuk menghindari kerusakan data, hentikan layanan jika sedang berjalan sebelum melanjutkan. Gunakan perintah terkenal systemd untuk melakukannya

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Jika layanan telah dimatikan, keluaran dari perintah terakhir adalah sebagai berikut

Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Hentikan Layanan MySQL

Kemudian salin secara rekursif isi

# mysql -u root -p -e "SELECT @@datadir;"
0 ke
# mysql -u root -p -e "SELECT @@datadir;"
2 dengan mempertahankan izin asli dan stempel waktu

# cp -R -p /var/lib/mysql/* /mnt/mysql-data
Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Salin Direktori Data MySQL ke Lokasi Baru

Langkah 3. Konfigurasi Direktori Data MySQL Baru

Edit file konfigurasi (

# mysql -u root -p -e "SELECT @@datadir;"
_7) untuk menunjukkan direktori data baru (
# mysql -u root -p -e "SELECT @@datadir;"
2 dalam hal ini)

# vi /etc/my.cnf
OR
# vi /etc/mysql/my.cnf

Temukan bagian

# mysql -u root -p -e "SELECT @@datadir;"
9 dan
------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status
0 dan lakukan perubahan berikut

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Simpan perubahan lalu lanjutkan dengan langkah berikutnya

Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Konfigurasi Direktori Data MySQL Baru

Langkah 4. Setel Konteks Keamanan SELinux ke Direktori Data

Langkah ini hanya berlaku untuk RHEL/CentOS dan turunannya

Tambahkan konteks keamanan SELinux ke

# mysql -u root -p -e "SELECT @@datadir;"
2 sebelum memulai ulang MariaDB

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

Selanjutnya restart layanan MySQL

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Sekarang, gunakan perintah yang sama seperti pada Langkah 1 untuk memverifikasi lokasi direktori data baru

# mysql -u root -p -e "SELECT @@datadir;"
Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Verifikasi Direktori Data Baru MySQL

Langkah 5. Buat Database MySQL untuk Mengonfirmasi Direktori Data

Login ke MariaDB, buat database baru, lalu centang

# mysql -u root -p -e "SELECT @@datadir;"
2

# mysql -u root -p -e "CREATE DATABASE tecmint;"
Memindahkan direktori data mysql centos 7
Memindahkan direktori data mysql centos 7
Periksa Direktori Data Baru MySQL

Selamat. Anda telah berhasil mengubah direktori data untuk MySQL atau MariaDB

Ringkasan

Dalam posting ini, kita telah membahas bagaimana mengubah direktori data di server MySQL atau MariaDB yang berjalan pada distribusi CentOS/RHEL 7 dan Ubuntu/Debian

Apakah Anda memiliki pertanyaan atau komentar tentang artikel ini?

Bagaimana cara memindahkan direktori data MySQL di Linux?

Apa pun penyimpanan dasar yang Anda gunakan, panduan ini dapat membantu Anda memindahkan direktori data ke lokasi baru. .
Langkah 1 — Memindahkan Direktori Data MySQL. .
Langkah 2 — Menunjuk ke Lokasi Data Baru. .
Langkah 3 — Mengonfigurasi Aturan Kontrol Akses AppArmor. .
Langkah 4 — Mulai ulang MySQL

Bagaimana cara memindahkan direktori MySQL ke direktori lain?

Hentikan mysql dengan "sudo service mysql stop"
ubah variabel "datadir" ke jalur baru di "/etc/mysql/mariadb. .
Lakukan backup /var/lib/mysql. "cp -R -p /var/lib/mysql /path_to_my_backup"
hapus dir ini. "sudo rm -R /var/lib/mysql"
Pindahkan data ke direktori baru. "cp -R -p /path_to_my_backup /path_new_dir

Bagaimana cara mengubah direktori data MariaDB ke lokasi baru di CentOS 7?

Mengubah Direktori Data MySQL/MariaDB default .
Langkah 1. Identifikasi Direktori Data MySQL Saat Ini. .
Langkah 2. Salin Direktori Data MySQL ke Lokasi Baru. .
Langkah 3. Konfigurasi Direktori Data MySQL Baru. .
Langkah 4. Setel Konteks Keamanan SELinux ke Direktori Data. .
Langkah 5. Buat Database MySQL untuk Mengonfirmasi Direktori Data

Di mana MySQL disimpan di CentOS 7?

Datadir default untuk MySQL adalah /var/lib/mysql dan selama Anda tidak mengubah konfigurasi, file database disimpan di direktori ini