MySQL(MariaDB)バックアップ&リストア備忘録

やりたい事

mysqのデータベースをlをコマンドライン、もしくはシェルスクリプトでバックアップしたい。
ダンプファイルはgzipで圧縮して、ファイル名に日付をつけたい。
最終的には cronなどで自動実行させたい。

mysqldump基本形

mysqldump -u ユーザー名 -pパスワード DB名 > バックアップ先ファイル名

パスワードが丸見えなのは気分的に良くないので別ファイルで管理する。
mysqlcon.cnf というファイルを作成し以下の内容を記述する。

[client]
user = ユーザー名
password = パスワードをここに記述
host = localhost

一応外部から見られないように

chmod 600 mysqlcon.cnf

としておく。

mysqldumpでユーザ名とパスワードを別ファイルにする

ユーザ名、パスワードを記述していた部分は以下の通り置き換えることができる。
mysqlcon.cnfが同一フォルダにあっては意味なないので、最終的には別の場所に移動する。

mysqldump--defaults-extra-file=mysqlcon.cnf DB名 > バックアップ先ファイル名

mysqldumpの出力を圧縮し、日付のファイル名を付ける

–defaults-extra-fileで先ほど作った接続情報を読み込むことができる。

mysqldump --defaults-extra-file=mysqlcon.cnf DB名 | gzip > mysql_DB名.`date +%Y%m%d`.dump.gz

日時までつけたいときはdateの部分を以下のようにする。

`date +%Y%m%d%H%M`

リストア

mysqldumpで出力したダンプファイルはただのSQL分の羅列なので、

mysql -u ユーザー名 -p < ダンプしたバックアップファイル名

バックアップしたファイルが圧縮されているのであれば

zcat ダンプしたバックアップファイル名.dumpl.gz | mysql -u ユーザー名 -p DB名

コメント

タイトルとURLをコピーしました