DBAtlas · データベース運用アトラス

論理バックアップ(ダンプ)を取得

Oracle

expdp system/password DIRECTORY=dpump_dir \
  SCHEMAS=hr DUMPFILE=hr_%U.dmp LOGFILE=hr_exp.log PARALLEL=4

Data Pump を使用する。DIRECTORY オブジェクトは事前に CREATE DIRECTORY で定義しておく必要がある。物理バックアップには RMAN を使用する。

PostgreSQL

pg_dump -U postgres -h localhost -Fc -f db.dump mydb
# -Fc = compressed custom format (restored with pg_restore)

-Fc は柔軟なリストア(テーブル選択/並列)を可能にする。クラスタ全体(ロールを含む)には pg_dumpall を使用する。

MySQL

mysqldump -u root -p --single-transaction \
  --routines --triggers --events mydb > db.sql

--single-transaction により InnoDB でロックなしの一貫性のあるバックアップを取得できる。大容量データ向けの並列オプション: mydumper/myloader または MySQL Shell の util.dumpInstance()/dumpSchemas()(mysqlpump は 8.0.34 で非推奨となり 8.4 で削除)。

SQL Server

BACKUP DATABASE [MyDB]
TO DISK = N'C:\backup\MyDB_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;

INIT は既存ファイルを上書きする。追記するには NOINIT を使用する。ログバックアップには BACKUP LOG を使用する(FULL 復旧モデル)。

MongoDB

mongodump --uri="mongodb://localhost:27017" \
  --archive=db.archive.gz --gzip --db=mydb

シャードクラスタでは、一貫性のためにバランサーを停止したうえで mongos 経由で取得する。

Redis

BGSAVE
# Takes an RDB snapshot in the background (dump.rdb).
# Non-blocking copy: redis-cli --rdb /backup/dump.rdb

BGSAVE は fork によりバックグラウンドで実行される。SAVE はサーバーをブロックする(本番環境では使用しない)。AOF を有効にすると失われるデータが少なくなる。

DBAtlas で開く →