Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)

870 views

Published on

「PostgreSQL13でのpg_basebackupの改善について」
第13回PostgreSQLアンカンファレンス@オンライン

2020年5月21日

株式会社NTTデータ
Masao Fujii, 藤井 雅雄
@fujii_masao

Published in: Technology
  • Be the first to comment

PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)

  1. 1. © 2020 NTT DATA Corporation 1 © 2020 NTT DATA Corporation 第13回 PostgreSQLアンカンファレンス@オンライン PostgreSQL13での pg_basebackupの改善について 2020年5月21日 株式会社NTTデータ 藤井雅雄 @fujii_masao
  2. 2. © 2020 NTT DATA Corporation 2 藤井 雅雄 @fujii_masao Database Technical Lead @ NTTデータ データベース研究開発、PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション(非同期 / 同期 / カスケード / クォーラムコミット) WAL圧縮 pg_bigm(全文検索モジュール)コミッタ 自己紹介
  3. 3. © 2020 NTT DATA Corporation 3 本講演について 講演資料は、後日、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech
  4. 4. © 2020 NTT DATA Corporation 4 PostgreSQL13 での pg_basebackup の改善について
  5. 5. © 2020 NTT DATA Corporation 5 PostgreSQL 13 • 現在コミュニティで開発中の最新バージョン • Feature Freeze済。機能一覧はリリースノートから https://postgresql.org/docs/devel/release-13.html • 5月にβ1、10~11月に正式リリースの予定 今日紹介する内容は、正式リリースまでの間に 変更となる可能性があることにご注意ください!!
  6. 6. © 2020 NTT DATA Corporation 6 pg_basebackupとは PostgreSQLのベースバックアップを取得するコマンド $ pg_basebackup -h 192.168.0.x -D /bkp/data バックアップDBデータ
  7. 7. © 2020 NTT DATA Corporation 7 新機能(1) バックアップ取得の進捗状況の確認
  8. 8. © 2020 NTT DATA Corporation 8 クライアント側でのバックアップ取得の進捗状況 以前のバージョンから、--progressオプションを指定することで、 バックアップ取得の進捗状況をクライアント側で確認することは可能 $ pg_basebackup -h 192.168.0.x -D /bkp/data --progress 1339087/2894148 kB (46%), 2/4 tablespaces バックアップDBデータ
  9. 9. © 2020 NTT DATA Corporation 9 サーバ側でのバックアップ取得の進捗状況 (PostgreSQL13) PostgreSQL13からは、 バックアップ取得の進捗状況をサーバ側でもSQLで確認することが可能に! $ psql =# SELECT * FROM pg_stat_progress_basebackup; バックアップDBデータ
  10. 10. © 2020 NTT DATA Corporation 10 pg_stat_progress_basebackup =# SELECT * FROM pg_stat_progress_basebackup; -[ RECORD 1 ]:--------+--------------------------- pid | 58783 phase | streaming database files backup_total | 2963609088 backup_streamed | 1372009984 tablespaces_total | 4 tablespaces_streamed| 3 • バックアップを担当するサーバ側プロセスのPID • バックアップ取得の現在の処理フェーズ • バックアップ対象データのトータルサイズ • 現在転送済み(取得済み)のバックアップのサイズ • バックアップ対象のテーブルスペースの数 • 現在転送済み(取得済み)のテーブルスペースの数
  11. 11. © 2020 NTT DATA Corporation 11 バックアップ取得の処理フェーズ ① 初期準備 ③ サイズ評価 ④ バックアップ転送 バックアップ開始 バックアップ完了 ⑤ WAL転送/アーカイブ ② チェックポイント =# SELECT * FROM pg_stat_progress_basebackup; -[ RECORD 1 ]:--------+--------------------------- pid | 58783 phase | streaming database files backup_total | 2963609088 backup_streamed | 1372009984 tablespaces_total | 4 tablespaces_streamed| 3
  12. 12. © 2020 NTT DATA Corporation 12 (参考) PostgreSQLのコマンド進捗機能 9.6 • pg_stat_progress_vacuum → VACUUM や autovacuum の進捗確認 12 • pg_stat_progress_cluster → CLUSTER や VACUUM FULL の進捗確認 • pg_stat_progress_create_index → CREATE INDEX や REINDEX の進捗確認 13 • pg_stat_progress_analyze → ANALYZE や autoanalyze の進捗確認 • pg_stat_progress_basebackup → pg_basebackup の進捗確認
  13. 13. © 2020 NTT DATA Corporation 13 新機能(2) バックアップ・マニフェスト
  14. 14. © 2020 NTT DATA Corporation 14 バックアップで困るケース バックアップをリストアしてDBデータを復旧したいとき、 バックアップがリストアできる正常状態なのか、破損しているのか判断つかない!? バックアップ
  15. 15. © 2020 NTT DATA Corporation 15 バックアップ・マニフェスト (PostgreSQL13) PostgreSQL13からは、 ① バックアップ取得時に、バックアップの妥当性を検証するための情報である バックアップ・マニフェスト (backup_manifest) を取得可能に! ② pg_verifybackup コマンドを使って、バックアップ・マニフェストから バックアップの妥当性を検証可能に! backup_manifest バックアップDBデータ
  16. 16. © 2020 NTT DATA Corporation 16 バックアップ・マニフェストの取得 $ pg_basebackup -h 192.168.0.x -D /bkp/data $ ls /bkp/data PG_VERSION pg_dynshmem pg_replslot pg_tblspc backup_label pg_hba.conf pg_serial pg_twophase backup_manifest pg_ident.conf pg_snapshots pg_wal base pg_logical pg_stat pg_xact global pg_multixact pg_stat_tmp postgresql.auto.conf pg_commit_ts pg_notify pg_subtrans postgresql.conf
  17. 17. © 2020 NTT DATA Corporation 17 バックアップ・マニフェストの取得 $ cat /bkp/data/backup_manifest { "PostgreSQL-Backup-Manifest-Version": 1, "Files": [ { "Path": "backup_label", "Size": 224, "Last-Modified": "2020-05-14 15:47:21 GMT", "Checksum-Algorithm": "CRC32C", "Checksum": "0dc6dc58" }, { "Path": "pg_multixact/members/0000", "Size": 8192, "Last-Modified": "2020- 05-14 15:46:01 GMT", "Checksum-Algorithm": "CRC32C", "Checksum": "23464490" }, ... バックアップに含まれるすべてのファイルについて、 ファイルパスやサイズ、最終変更日時、チェックサム、チェックサム・アルゴリズムを JSON形式で一覧化したファイル
  18. 18. © 2020 NTT DATA Corporation 18 バックアップの妥当性の検証 $ pg_verifybackup /bkp/data バックアップの妥当性検証に成功 backup successfully verified バックアップ取得時には存在していたファイルが、現在のバックアップから消えている pg_verifybackup: error: "PG_VERSION" is present in the manifest but not on disk バックアップ取得時にはなかったファイルが、現在のバックアップに存在している pg_verifybackup: error: "hoge" is present on disk but not in the manifest バックアップ取得時と現在とでファイルのサイズが異なる pg_verifybackup: error: "PG_VERSION" has size 0 on disk but size 3 in the manifest バックアップ取得時と現在とでファイルの内容(チェックサム)が異なる pg_verifybackup: error: checksum mismatch for file "PG_VERSION"
  19. 19. © 2020 NTT DATA Corporation 19 まとめ
  20. 20. © 2020 NTT DATA Corporation 20 まとめ PostgreSQL13から、pg_basebackupで 1. バックアップ取得の進捗状況をサーバ側でもSQLで確認 2. バックアップ・マニフェストによりバックアップの妥当性を判断 できるようになります。 v13βがリリースされたら、ぜひ機能をお試しいただければ!!
  21. 21. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

×