はじめに
開発環境側のmysqlデータ消しちゃって、あー、たしかにダンプまとめとかないとなぁ~って思って
ダンプファイル作成
Console
# cd ~
# vi mysql-dbaccess.cnf
mysql-dbaccess.cnf
[client]
user = root
password = MYPASSWORD
Console(ぜんぶdump)
# mysqldump --defaults-extra-file=mysql-dbaccess.cnf -h localhost portfolio_db > ~/mysql_dump.sql
mv mysql_dump.sql /home/ubuntu
自動化
console
# mkdir -p /var/backup/mysql-dump
# cd /var/backup/mysql-dump
# vi mysql-backup.sh
mysql-backup.sh
#!/bin/sh
# -------------------------------------------------------
#
# [環境設定]
#
# バックアップファイルを保存するディレクトリパス
dirpath='/var/backup/mysql-dump'
# バックアップを保存する日数
period=14
# -------------------------------------------------------
#
# [バックアップ取得処理]
#
# ファイル名を定義 ※「mysql-dump-yyyymmdd.sql」となるようにします
fileprefix="mysql-dump-"
filedate=`date +%Y%m%d`
filename=$fileprefix$filedate
# mysqldumpを実行しdumpファイルを出力
mysqldump --defaults-extra-file=~/mysql-dbaccess.cnf -h localhost portfolio_db > $dirpath/$filename.sql --no-create-
info --skip-add-drop-table --ignore-table portfolio_db.register_user
# 出力されたdumpファイルのパーミション変更
chmod 700 $dirpath/$filename.sql
#
# [ローテーション処理]
#
# 削除対象年月日を取得
olddate=`date --date="$period days ago" +%y%m%d`
# 削除対象ファイル名を生成
oldfile=$fileprefix$olddate
# 削除実行
rm -f $dirpath/$oldfile.sql
シェルスクリプト実行
# cd /var/backup/mysql-dump
# sh mysql-backup.sh
crontab
console
# export EDITOR=vi
# crontab -e
0 2 * * * /var/backup/mysql-dump/mysql-backup.sh
# chown -R ubuntu:ubuntu /var/backup/mysql-dump
# ls -l
total 37476
-rw-r--r-- 1 ubuntu ubuntu 1076 May 31 23:56 mysql-backup.sh
-rwx------ 1 ubuntu ubuntu 38368295 Jun 5 12:08 mysql-dump-20220605.sql
ローカルへ転送
/home/ubuntu にあるダンプファイルをFTPかなんかでローカルに引っ張ってください。いまは自動化は考える余裕ないわ
MySQLにインポート
powershellでmysqlコマンドでsqlをインポート
console(CentOS,Windows)
dev\Portfolio> mysql -u root -p portfolio_db
mysql> source mysql_dump.sql
console(Ubuntu)違いがよくわからん
# mysql portfolio_db < mysql_dump.sql
point
dumpはSQLを実行するだけなので、例えば「サーバーよりも開発環境のほうがテーブルが追加されている」状態でdumpをインポートしても、新しいテーブルがあるままドスッと過去データが入る(あ、だめっぽい。ダンプファイルのCreate文調整してくれ)