mysqlのデータを別ディレクトリに保存する
インフラエンジニアの伊藤です。
MySQLのデータの格納場所は、設計段階で決めておくべきことではあると思いますが、
それでもデータが増えて別のディレクトリに移動させてなくてはならない...といったことがありますよね。
そんなときに必要な手順を紹介したいと思います!
実際の手順
なにはともあれ、まずはMySQLのプロセスを止めます。
1 | # /etc/init.d/mysql stop |
次にコンフィグファイルを設定します。
- データの保存先
- ソケットファイルの場所
- クライアント側のソケットファイルの場所
この3つが設定に必要な部分です。
1 2 3 4 5 6 7 | # vi /etc/my.cnf [mysqld] datadir= /var/lib/mysql (保存先をどこにするか) socket= /var/lib/mysql/mysql .sock(ソケットファイルをどこにするか) [client] socket= /var/lib/mysql/mysql .sock |
元にあったデータを動かします。
1 | # cp -pR /var/lib/mysql/ /path/to/datadir |
では、MySQLのプロセスを動かして、ログインしてみましょう。
1 2 3 4 5 6 7 8 9 | # /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のデータディレクトリの指定を変更する必要があります。
1 2 3 4 5 | # vi /etc/init.d/mysqld get_mysql_option mysqld datadir "/var/lib/mysql" ↓ get_mysql_option mysqld datadir "/path/to/datadir" |
再度起動して、問題ないことを確認します。
あとはデータ保存先が変更されているか確認します。
1 2 3 4 5 6 7 | mysql> show variables like 'datadir' ; + ---------------+-------------------+ | Variable_name | Value | + ---------------+-------------------+ | datadir | /path/ to /datadir/ | + ---------------+-------------------+ 1 row in set (0.01 sec) |
無事データ保存先が変更されているようですね!
めでたしめでたし。
MySQLについては他の記事も書いてますので、コチラも併せてご覧ください。
この記事がお役に立てば【 いいね 】のご協力をお願いいたします!