Linux'ta Varsayılan MySQL/MariaDB Veri Dizini Nasıl Değiştirilir


LAMP yığınının bileşenlerini CentOS/RHEL 7 sunucusuna yükledikten sonra yapmak isteyebileceğiniz birkaç şey vardır.

Bunlardan bazıları Apache ve MySQL/MariaDB'nin güvenliğini artırmakla ilgiliyken diğerleri kurulumumuza veya ihtiyaçlarımıza göre uygulanabilir veya olmayabilir.

Örneğin, veritabanı sunucusunun beklenen kullanımına bağlı olarak, varsayılan data dizinini (/var/lib/mysql) farklı bir konuma değiştirmek isteyebiliriz. Böyle bir dizinin yüksek kullanım nedeniyle büyümesi beklendiğinde durum budur.

Aksi takdirde, /var dosyasının depolandığı dosya sistemi bir noktada çökebilir ve tüm sistemin çökmesine neden olabilir. Varsayılan dizini değiştirmenin başka bir senaryosu, gerçek verilerimizi depolamak için kullanmak istediğimiz özel bir ağ paylaşımına sahip olduğumuz durumdur.

Bu nedenle bu yazımızda CentOS/RHEL 7 sunucusu ve Ubuntu/Debian dağıtımlarında varsayılan MySQL/MariaDB veri dizininin farklı bir yola nasıl değiştirileceğini açıklayacağız.

Her ne kadar MariaDB'yi kullanacak olsak da, bu makalede açıklanan kavramlar ve atılan adımlar, aksi belirtilmediği sürece hem MySQL hem de MariaDB için geçerlidir.

Varsayılan MySQL/MariaDB Veri Dizinini Değiştirme

Not: Yeni veri dizinimizin /mnt/mysql-data olduğunu varsayacağız. Bu dizinin mysql:mysql'e ait olması gerektiğini unutmamak önemlidir.

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

Size kolaylık sağlamak için süreci takip edilmesi kolay 5 adıma ayırdık:

Adım 1: Mevcut MySQL Veri Dizinini Tanımlayın

Başlamak için, aşağıdaki komutu kullanarak mevcut veri dizinini tanımlamak faydalı olacaktır. Geçmişte değiştirilmiş olabileceği için hala /var/lib/mysql olduğunu varsaymayın.

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

MySQL şifresini girdikten sonra çıktının benzer olması gerekir.

Adım 2: MySQL Veri Dizinini Yeni Bir Konuma Kopyalayın

Veri bozulmasını önlemek için, devam etmeden önce şu anda çalışıyorsa hizmeti durdurun. Bunu yapmak için systemd'nin iyi bilinen komutlarını kullanın:

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

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

OR

service mysql stop
service mysql status

Hizmetin kapatılması durumunda son komutun çıktısı aşağıdaki gibi olmalıdır:

Ardından, orijinal izinleri ve zaman damgalarını koruyarak /var/lib/mysql içeriğini yinelemeli olarak /mnt/mysql-data dosyasına kopyalayın:

cp -R -p /var/lib/mysql/* /mnt/mysql-data

Adım 3: Yeni Bir MySQL Veri Dizini Yapılandırın

Yeni veri dizinini (bu durumda /mnt/mysql-data) belirtmek için yapılandırma dosyasını (my.cnf) düzenleyin.

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

[mysqld] ve [client] bölümlerini bulun ve aşağıdaki değişiklikleri yapın:

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

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

Değişiklikleri kaydedin ve ardından bir sonraki adıma geçin.

Adım 4: SELinux Güvenlik İçeriğini Veri Dizinine Ayarlayın

Bu adım yalnızca RHEL/CentOS ve türevleri için geçerlidir.

MariaDB'yi yeniden başlatmadan önce SELinux güvenlik içeriğini /mnt/mysql-data dosyasına ekleyin.

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

Daha sonra MySQL hizmetini yeniden başlatın.

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

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

OR

service mysql stop
service mysql status

Şimdi, yeni veri dizininin konumunu doğrulamak için 1. Adım'daki komutun aynısını kullanın:

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

Adım 5: Veri Dizinini Onaylamak için MySQL Veritabanı Oluşturun

MariaDB'ye giriş yapın, yeni bir veritabanı oluşturun ve ardından /mnt/mysql-data'yı kontrol edin:

mysql -u root -p -e "CREATE DATABASE tecmint;"

Tebrikler! MySQL veya MariaDB'nin veri dizinini başarıyla değiştirdiniz.

Özet

Bu yazıda CentOS/RHEL 7 ve Ubuntu/Debian dağıtımlarında çalışan MySQL veya MariaDB sunucusundaki veri dizininin nasıl değiştirileceğini tartıştık.

Bu makaleyle ilgili herhangi bir sorunuz veya yorumunuz var mı? Aşağıdaki formu kullanarak bize bildirmekten çekinmeyin; sizden haber almaktan her zaman memnuniyet duyarız!