株式会社キャッチアップで働くエンジニアのブログです。

技術雑記

MySQL / PostgreSQL データベースをgzip形式でバックアップ・リストアする

Twitter bookmark Facebook LINE Pocket Feedly RSS

やりたいこと

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

 

Twitter bookmark Facebook LINE Pocket Feedly RSS