MySQLバックアップとリストア
inoue.h edited this page Aug 18, 2023
·
1 revision
Home > Software > ソフトウエア開発・PC管理のメモ帳 > this page (このページ)
MySQLデータベースのバックアップとリストア方法を個人的にメモしたものです
端末の文字コードと、サーバの文字コードが違う場合、自動変換が勝手に掛かる。特に端末またはサーバのどちらかが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 --quote-names --host=MYSQL_SERVER --user=MYSQL_USER --password=PASSWORD / --default-character-set=binary DB_NAME > backup.sql
16進数を文字に変換してバックアップ(この方法を推奨)
mysqldump --quote-names --host=MYSQL_SERVER --user=MYSQL_USER --password=PASSWORD / --default-character-set=binary --hex-blob DB_NAME > backup.sql
XML形式でバックアップ
mysqldump --quote-names --host=MYSQL_SERVER --user=MYSQL_USER --password=PASSWORD / --default-character-set=binary --xml DB_NAME > backup.xml
リストア
mysql --host=MYSQL_SERVER --user=MYSQL_USER --password=PASSWORD DB_NAME < backup.sql
XML形式バックアップファイルのリストア方法は、不明。