言語
サーバ関連
ツール
API
読み物
その他
[AD]
MySQL4.0(Linux)でデータベースやログの保存場所を変更したい。その手順を示す。 今回はVineLinux3.2上にapt-getでインストールした物を変更するケースとなる。ほかのディストリビーションやソースからコンパイルした場合、バイナリ版では異なる可能性がある点に注意。
移行の方法は大きく2つある。 シンボリックリンクを使う方法と、設定ファイルを書き換える方法だ。ここでは設定ファイルを書き換える方法になる。
移行自体は(データが巨大な物でなければ)30分もかからないだろう。次のように大きく4つのステップで完了する。
root → mysql にユーザーを変更し、起動スクリプトから停止を行う。
[admhoge]$ su - Password: [root]# su mysql bash-2.05b$ /etc/init.d/mysql stop
デフォルトでは「/var/lib/mysql」以下にデータベースや各種ログが入っているのでディレクトリ毎コピーすれば良い(-rオプションはディレクトリコピーを示す)。
bash-2.05b$ cp -r /var/lib/mysql /newdir
mvで移動しても良いが、運用開始後に切り返す可能性を考え必ずコピーで。この時mysqlを起動するユーザーとデータの所有者が一致すること。ここでは前段階で所有者である「mysql」にユーザーを変更しているため特に何もしない。ミスった場合は焦らずchownしてやればよい。
いったんrootにもどり(my.cnfの所有者がrootだったため)、vi,emacsなどのエディタで設定ファイルを開く。
bash-2.05b$ exit [root]# vi /etc/my.cnf
[mysqld]の下あたりにdatadirを追加する。既存の設定ファイルに存在しない場合でも、自分で追加すればちゃんと認識してくれる。保存して終了する([esc] → :wq)
# The MySQL server [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock 〜中略〜 datadir = /newdir/mysql
[root]# su mysql bash-2.05b$ /etc/init.d/mysql start
以上で終了だ。 後はSELECT,INSERTやUPDATEなどを一通りテストし、ちゃんと新しい方に反映されているかを確かめれば良い。
ここでは設定ファイル(/etc/my.cnf)を編集したが、当環境では起動スクリプト(/etc/init.d/mysql)上でデータディレクトリを指定し、mysqlを起動する際にオプションとして渡している。このような環境ではこの値を変更した方がスマートかもしれない。
failed to fetch data: unkown error
failed to fetch data: unkown error
failed to fetch data: unkown error
failed to fetch data: unkown error