CentOS(EyeCatch)

MySQLとphpとHDD

TinyTinyRSSを入れてから、HDDのガリガリ音がするのですが、仕方ないと諦めてはいたものの、余りにもうるさいので、MySQLのデータベースを別のHDDへ移動させることにしました。

移動方法は、Google先生に相談すると出てくるので、今回は方法だけ書いた小ネタです。

 

$ sudo service mysqld stop
$ sudo cp -rp /var/lib/mysql /mnt/HDD/
$ sudo mv /var/lib/mysql /var/lib/mysql_bak
$ sudo vim /etc/my.cnf

[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/mnt/ExHDD/mysql
socket=/mnt/ExHDD/mysql/mysql.sock

#[Client]
#socket=/mnt/ExHDD/mysql/mysql.sock

$ sudo service mysqld start

MySQLをSTOP後、データベースを別HDDへコピーしています
コピーの際はpオプションを追加し、属性を維持しないとエラーになりました。。。
その後、自分はビビリなので、元のデータベースをリネームしておいてます。なので、自身のある人は不要ですね。

次に、/etc/my.cnfを修正。
datadirとsocketの行を変更後のディレクトリへ変更します。元の設定はやっぱり怖がりなので、
#でコメントアウトしてます
[Client]からの行は、追加しないとエラーになる環境があるようです。
自分の環境では不要でした。

$ sudo vim /etc/php.ini

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-socket
mysql.default_socket = /mnt/ExHDD/mysql/mysql.sock

$ sudo service httpd restart
$ sudo rm -f /var/lib/mysql_bak

phpに変更を適用します。
php.iniにsocketの場所を記述しないと、phpからMySQLへアクセス出来なかったので、上記を追記しています。
追記後、httpdをrestart。。。

すべてが問題なく動作している事を確認後、バックアップを消して終了です。
たぶん、google先生から出てくる他のページの方々の方が詳しく解説されていると思うので、詳細はそちらを参照ください。

ちなみに、/mnt/ExHDDは起動後に/etc/crontabで自動的にマウントしていたのですが、serviceでMySQLを起動している場合、reboot後にMySQLが正常に動いていませんでした。

自分でもむちゃくちゃな事やってるなぁ。と、思っていたのですが、要するにcrondの起動前にmysqldが起動しようとして起動できていなかったようです。
これを気に、ちゃんと/etc/fstabでマウントするように修正しました。とりあえず、これで問題なさそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です