Shimpei Wakida のブログ

日々の学びをゆるりと。FinTechなスタートアップでRailsエンジニア・エンジニアリングマネージャー・スクラムマスターなどをやっています。

MySQLでバックアップ・リストア

概要

たまにローカルのMySQLをPC上からMySQLごと削除したい場面がある。ただ、データは残しておきたいときもあるので、バックアップ・リストア方法を調べた。

基本的には mysqldumpでバックアップ・リストアする - とほほのWWW入門 を参考にさせていただいてます! www.tohoho-web.com

バックアップ

とりあえず以下のコマンドを叩けば、最低限安全にバックアップは取れる。

mysqldump -h localhost -u root -p パスワード --databases データベース名 \
  --single-transaction > dump.sql

冒頭紹介した記事では、--flush-logs--master-data=2のオプションを付けていたが、アプリ側の設定によっては以下のエラーが起こる(起こった)

mysqldump: Error: Binlogging on server not active

対応方法は、2つ。

1つ目は、my.cnfに以下の設定を追加し、再起動。

[mysqld]

log_bin = /var/lib/mysql/mysql-bin.log

参考 blog.siwa32.com

もう一つは、--flush-logs--master-data=2のオプションを使わないこと。

リストア

mysql -h localhost -u root -p パスワード < dump.sql