20 Kasım 2010 Cumartesi

MySQL-Data klasörünün değiştirilmesi

Çeşitli amaçlarla data klasörünü değiştirmek isteyebilirsiniz.
Ben aşağıdaki gibi bir durumla karşılaştım mesela.

Linux üzerine rpm kurarak mysql server kurduysanız
kurulumun bir parçası olarak "mysql" isminde
bir linux user oluşturulur ve mysql data klasörü
"/var/lib/mysql" klasörü olarak konumlanır.
Bu nedenle de "/var/lib/mysql" altındaki her bir ayrı klasör, ayrı bir database olarak görünür. Bu durum bir miktar sorunu da beraberinde
getirmektedir. Örneğin user a ait desktop verileri Linux işletim
sistemi tarafından "/var/lib/mysql/desktop" klasöründe saklanabilir.
Fakat mysqld, data klasörü olan "/var/lib/mysql" altında bulduğu "desktop"
ismindeki bu klasörün invalid bir database olduğunu varsayar.

Sorun aşağıdaki komutla da tespit edilebilir.

mysql> show databases;

Bu durumu düzeltmek için aşağıdaki adımlar uygulanarak
mysql data klasörü değiştirilir.

1) "mysql" user ı ile database kapatılır.

$ /etc/init.d/mysql stop

2) "root" user ile yeni mysql data klasoru oluşturulur ve
"mysql" user ına bu klasör için yetki verilir.

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

3) Aşağıdaki satır, "/var/lib/mysql/my.cnf" dosyasına, "[mysqld]"
etiketi altına eklenir.

datadir=/mysql/data

4) "/var/lib/mysql" klasörü altında bulunan, my.cnf ve işletim sistemi ile ilişkili
dosya ve klasörler hariç tüm dosya ve klasörler "mysql" user ı ile
"/mysql/data" klasörüne taşınır.

5) Database açılır.

/etc/init.d/mysql start

Yukarıdaki adımları mysql 5.1.48 - redhat ile test ettim.
Bir sorun olması durumunda, aksi my.cnf dosyasında belirtilmedikçe
data klasöründe bulunan, "err" uzantılı error log
dosyasını inceleyebilirsiniz.