Sunday, March 10, 2013

MySQL:データベースのリストア


mysqldumpで取っておいたデータ(backupfile.sql)をデータベースにリストアしました。
データベースの一部をリストアなので、まずデータベースを作ってその後リストアします。

$mysql -u kinoko -p
Enter password:

mysql> create database kinokoDB;
Query OK, 1 row affected
mysql> exit;


$mysqldump -u kinoko -p KDB < backupfile.sql

失敗するので調べてみるとリストアはmysqldumpではなくmysqlを使うとのこと。

$mysql -u kinoko -p KDB < backupfile.sql

でリストアは成功。

日本語が化けているような気がするので文字コードセットを確認すると、

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


#characer_set_clientはクライアントが送信する文字コード。
#character_set_resultsはサーバが送信する文字コード。


character_set_serverがlatin1なのでutf8に変更します。が、my.cnfに変更を加えて再起動したものの起動せず。。

$vi /etc/my.cnf
[client]
default-character-set = utf8

[mysqld]
default-character-set = utf8
default-set-server = utf8

$ mysqld_safe --user=root &

エラーログを見てみると、

$less /var/log/mysql/XXXX.err
130310 18:32:11 [ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
130310 18:32:11 [ERROR] Aborting

※mysqld_safeの起動時にも、my.cnfにもエラーログファイル名を指定していないため、XXXXはマシン名になってます。


unknown variable?
調べるとdefault-character-setはMySQL5.5からは使えないらしく、代わりに、character-set-serverを使うとのこと。

$vi /etc/my.cnf
[mysqld]
character-ser-server=utf8

書き替えたら無事に起動したので文字コードを確認すると、

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
  
全部utf8になりました。