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!