(MySQL) MySQLのバックアップとリストア

戻る一つ前のメニューに戻る

MySQLデータベースのバックアップとリストア方法のメモ。

MySQL 5 以降の文字コード自動変換対策

端末の文字コードと、サーバの文字コードが違う場合、自動変換が勝手に掛かる。特に端末またはサーバのどちらかがlatin1文字コードの場合、7ビットに切り捨てられるため、データが破壊されてしまう。

文字コード設定の表示を行い、サーバ毎に違うと思われるこれらの設定を確認してから作業すること。

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

バックアップ時に --default-character-set=binary スイッチを付けて、文字コード自動変換を阻止すれば、問題が解決する場合が多い。

バックアップ

普通にバックアップ

mysqldump -Q --host=サーバ --user=ユーザ --password=パスワード /
 --default-character-set=binary DB名 > backup.sql

16進数を文字に変換してバックアップ(この方法を推奨)

mysqldump -Q --host=サーバ --user=ユーザ --password=パスワード /
 --default-character-set=binary --hex-blob DB名 > backup.sql

XML形式でバックアップ

mysqldump -Q --host=サーバ --user=ユーザ --password=パスワード /
 --default-character-set=binary --xml DB名 > backup.xml


リストア

リストア

mysql -h サーバ -u ユーザ -pパスワード DB名 < backup.sql

XML形式バックアップファイルのリストア方法は、不明。

戻る一つ前のメニューに戻る