• backupを極める
  • 実行はpostgresユーザー前提なので、そうじゃない場合は-U postgresつける

DBサイズ確認

SELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;

実行中の負荷

  • どの形式でもPostgresのCPU使用率は100%程度まで上がる。

テキスト形式

pg_dump -d DB_NAME | gzip > dump.sql.gz

Custom形式

  • 並列実行は不可能。アーカイブしてくれる
  • テキスト形式の1/10以下のサイズ。テキスト+gzipと同等。時間を考えるとこれ一択
  • ただしバイナリ
  • リストアはpg_restoreが必要
pg_dump -Fc DB_NAME > /var/tmp/custom.dmp

ディレクトリ形式

  • jオプションで並列実行可能
pg_dump -j 1 -Fd /data/pgtest/ DB_NAME 

時間計測

4G程度で2分半あれば終わる。サイズは圧縮で200MBほど。 下の1億レコード追加18Gで9分。並列度をあげた場合は

大量データ作成

CREATE TABLE tasks (
   id SERIAL NOT NULL,
   name VARCHAR(255) NOT NULL,
   created_at TIMESTAMP,
   updated_at TIMESTAMP,
   PRIMARY KEY (id)
);
  • 10億レコードは数十ギガ消費し、1時間でも終わらなかったので一億レコードで挑戦。このデータで14G程度増量できた
INSERT 
INTO tasks ( 
 id
 ,name
 ,created_at
 ,updated_at
) 
SELECT
 i
 ,format('%s連番とても長いデータを造るためにがんばります', i)
 ,now()
 ,now()
FROM
 generate_series(1, 100000000) as i;

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-03-17 (木) 10:03:57