mysqlのデータを別ディレクトリに保存する
インフラエンジニアの伊藤です。
MySQLのデータの格納場所は、設計段階で決めておくべきことではあると思いますが、
それでもデータが増えて別のディレクトリに移動させてなくてはならない...といったことがありますよね。
そんなときに必要な手順を紹介したいと思います!
実際の手順
なにはともあれ、まずはMySQLのプロセスを止めます。
# /etc/init.d/mysql stop
次にコンフィグファイルを設定します。
- データの保存先
- ソケットファイルの場所
- クライアント側のソケットファイルの場所
この3つが設定に必要な部分です。
# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql(保存先をどこにするか) socket=/var/lib/mysql/mysql.sock(ソケットファイルをどこにするか) [client] socket=/var/lib/mysql/mysql.sock
元にあったデータを動かします。
# cp -pR /var/lib/mysql/ /path/to/datadir
では、MySQLのプロセスを動かして、ログインしてみましょう。
# /etc/init.d/mysql start # mysql -uroot -phogehoge login to mysql prompt Warning: Using a password on the command line interface can be insecure. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) /etc/init.d/mysqld get_mysql_option mysqld datadir "/var/lib/mysql"
あかんやないかい!!!
ダメな正体は起動スクリプトです。
起動スクリプト内の、MySQLのデータディレクトリの指定を変更する必要があります。
# vi /etc/init.d/mysqld get_mysql_option mysqld datadir "/var/lib/mysql" ↓ get_mysql_option mysqld datadir "/path/to/datadir"
再度起動して、問題ないことを確認します。
あとはデータ保存先が変更されているか確認します。
mysql> show variables like 'datadir'; +---------------+-------------------+ | Variable_name | Value | +---------------+-------------------+ | datadir | /path/to/datadir/ | +---------------+-------------------+ 1 row in set (0.01 sec)
無事データ保存先が変更されているようですね!
めでたしめでたし。
MySQLについては他の記事も書いてますので、コチラも併せてご覧ください。
スクリプトでmysqlコマンドを実行すると「Warning: Using a password on the command line interface can be insecure」と表示される
この記事がお役に立てば【 いいね 】のご協力をお願いいたします!