データベースのバックアップ
特定のデータベースのバックアップ
バックアップにはコンソールからmysqldumpコマンドを使う。
以下のコマンドでダンプファイルが作成される(dumpファイルパスがファイル名だけならカレントディレクトリーに作成)。
1 |
mysqldump --single-transaction -u DBユーザ名 -p DB名 > dumpファイルパス |
全データベースのバックアップ
1 |
mysqldump --single-transaction -u root -p -x --all-databases > dumpファイルパス |
データベースの復元
データベースの復元には、コンソールからmysqlコマンドを使う(mysqldumpコマンドではない)。
あらかじめ復元先の空のデータベースを作成しておく。
特定のデータベースへの復元
1 |
mysql -u DBユーザー名 -p DB名 < dumpファイル名 |
全データベースの復元
1 |
mysql -u DBユーザー名 -p < dumpファイル名 |
ハマったこと
復元時に「データベースがない」
以下のエラー。
Unknown database ‘DB名’
復元先に空のデータベースがないと復元できないので、作成する必要がある。
復元時に'<‘が使えない (Windows PowerShell)
以下のエラー。
演算子 ‘<‘ は、今後の使用のために予約されています。
WindowsのPowerShellでは'<'
は使えないらしい。コマンドプロンプトやLinuxのShellでは問題なし。
復元時に「ASCIIの’\0’があります」(Windows/PowerShell)
以下のエラー。
ERROR: ASCII ‘\0’ appeared in the statement, but this is not allowed unless option –binary-mode is enabled and mysql is run in non-interactive mode. Set –binary-mode to 1 if ASCII ‘\0’ is expected.
WindowsのPowerShellはデフォルトの文字コードがSJISのため、ダンプファイルを作成すると復元側で読み取れない。