OSS-DB Silver 暗記 B-4

運用管理(52%):::バックアップ方法【重要度:7】

 

 

1. バックアップとリストア

 

 

backup PostgreSQL
Fig.1 backup

 

  • オンラインバックアップ(リストア)
    • PostgreSQL 稼働中のバックアップ(リストア)
  • オフラインバックアップ(リストア)
    • PostgreSQL 停止中のバックアップ(リストア)

 

2. オンラインバックアップ(リストア)

2.1 DBC

  • 書式:pg_dumpall  [-f ファイル名]
  • 書式:psql  [-f ファイル名]

 

2.2 DB

  • 1つのDBC には、複数のDB が存在
  • 書式:pg_dump  [-Fp | -Fc | -Ft ]  [-f ファイル名]  [DB名]
    • -F:Format(出力形式)
      • -Fp:plane(平文):デフォルト
      • -Fc:custom(カスタム)
      • -Ft:tar(tar)
  • 書式:pg_restore  [-d DB名]  [ファイル名]

 

2.3 Table

  • 1つのDB には、複数のテーブルが存在
  • テーブルに格納されているデータのみファイルにバックアップ
  • COPY文(SQL)
    • 書式:copy テーブル名  to       { ‘ファイル名’  |  stdout }
    • 書式:copy テーブル名  from  { ‘ファイル名’  |  stdin }

 

=# copy  table1  to    ‘/tmp/table1.txt’;      // table1.txt:サーバー側ファイル
=# copy  table1  from  ‘/tmp/table1.txt’;

 

  • \copy(psql のメタコマンド)
    • 書式:\copy  テーブル名  to       { ファイル名  |  stdout }
    • 書式:\copy  テーブル名  from  { ファイル名  |  stdin }

 

=> \copy  table1  to    table1.txt      // table1.txt:クライアント側ファイル
=> \copy  table1  from  table1.txt

 

 

3. オフラインバックアップ(リストア)

 

  • DBC をコピーする

backup

$ pg_ctl stop
$ cd /home/postgres/data/..
$ tar cvf backup.tar data

 

restore

$ cd /home/postgres
$ tar xvf backup.tar
$ pg_ctl start

 

 

4. PITR(Point In Time Recovery)

 

4.1 postgresql.conf

  • wal_level(enum:replica):WALの情報度合い
    • minimal, replica, logical
    • 設定反映:PostgreSQL起動時
  • archive_mode(boolean:off):WALの有効/無効
    • 設定反映:PostgreSQL起動時
  • archive_command(string):シェルコマンド
    • WALファイル → WALアーカイブ

 

4.2 オンラインバックアップ

  • 書式:pg_start_backup( ‘ラベル名’ )
  • 書式:pg_stop_backup( )

 

$ cd  $PGDATA/..
$ psql  -c  “select pg_start_backup(‘label1’);”
$ tar czvf /mnt/backup.tar.gz data
$ psql  -c  “select pg_stop_backup();”

 

 

4.3 オフラインリストア

 

  • PostgreSQL停止

 

$ psql stop				// PostgreSQL停止
$ mv $PGDATA /mnt			// DBC移動
$ tar xzvf /mnt/backup.tar.gz		// base backup を展開
$ rm -rf $PGDATA/pg_wal			// 古いWALを削除
$ cp -r /mnt/data/pg_wal $PGDATA	// 未アーカイブWALをコピー

 

 

  • recovery.conf 作成
  • PostgreSQL起動

 

$ cat $PGDATA/recovery.conf			// シェルコマンド
restore_command = ‘cp /mnt/archivedir/%f %p’	// OS の cpコマンド
$ pg_ctl start					// PostgreSQL起動

 

 

 

 

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。