やりたいこと
MySQLやPostgreSQLのDBのバックアップとリストアを行います。
ただそのままバックアップするとファイルサイズが大きくなりがちなのでgzipを使ってバックアップと同時にファイルを圧縮します。
MySQL バックアップ
mysqldump -u[ユーザ名] -p[パスワード] [データベース名] | gzip > [ファイル名.sql.gz]
例
mysqldump -uusername -ppassword dbname | gzip > dbname-`date "+%Y%m%d_%H%M%S"`.sql.gz
MySQL リストア(復元)
gzip -cd [ファイル名.sql.gz] | mysql -u[ユーザ名] -p[パスワード] [データベース名]
例
gzip -cd dbname-YYYYmmdd_HHMMSS.sql.gz | mysql -uusername -ppassword dbname
PostgreSQL バックアップ
pg_dump -U [ユーザ名] [データベース名] | gzip > [ファイル名.sql.gz]
例
pg_dump -U username dbname | gzip > dbname-`date "+%Y%m%d_%H%M%S"`.sql.gz
PostgreSQL リストア(復元)
gzip -cd [ファイル名.gz] | psql -U [ユーザ名] -d [db名]
例
※ テーブルやシーケンスなど個別に消すの大変なので、スキーマごと削除して再作成するのが手っ取り早いかも?
psql -U username dbname
SELECT current_schema;
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
gizp -cd dbname-YYYYmmdd_HHMMSS.sql.gz | psql -U username dbname