SlideShare ist ein Scribd-Unternehmen logo
1 von 18
© 2020 NTT DATA Corporation 1 © 2020 NTT DATA Corporation
第15回 PostgreSQLアンカンファレンス@オンライン
オンライン物理バックアップの
排他モードと非排他モードについて
2020年7月30日
株式会社NTTデータ 藤井雅雄 @fujii_masao
© 2020 NTT DATA Corporation 2
藤井 雅雄 @fujii_masao
Database Technical Lead @ NTTデータ
データベース研究開発、PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション(非同期 / 同期 / カスケード / クォーラムコミット)
WAL圧縮、バックアップ進捗
pg_bigm(全文検索モジュール)コミッタ
自己紹介
© 2020 NTT DATA Corporation 3
本講演について
講演資料は、後日、NTTデータのSlideShareアカウント上で公開予定です。
https://www.slideshare.net/nttdata-tech
以前のアンカンファレンスの講演資料は公開済です。
PostgreSQL 13 での pg_stat_statements の改善について
PostgreSQL 13 での pg_basebackup の改善について
PostgreSQL 13 での レプリケーション関連 の改善について
© 2020 NTT DATA Corporation 4
オンライン物理バックアップの
排他モードと非排他モードについて
© 2020 NTT DATA Corporation 5
PostgreSQLで利用できるバックアップ手法
バックアップ
論理バックアップ
(SQLダンプ)
pg_dump /
pg_dumpall
物理バックアップ
オフラインバックアップ
(コールドバックアップ)
独自スクリプト(pg_ctl
stop + rsyncなど)
オンラインバックアップ
(ホットバックアップ)
pg_basebackup
外部ツール(pg_rman、
Barmanなど)
独自スクリプト
(pg_start_backup +
pg_stop_backup)
排他モード
非排他モード
© 2020 NTT DATA Corporation 6
PostgreSQLで利用できるバックアップ手法
バックアップ
論理バックアップ
(SQLダンプ)
pg_dump /
pg_dumpall
物理バックアップ
オフラインバックアップ
(コールドバックアップ)
独自スクリプト(pg_ctl
stop + rsyncなど)
オンラインバックアップ
(ホットバックアップ)
pg_basebackup
外部ツール(pg_rman、
Barmanなど)
独自スクリプト
(pg_start_backup +
pg_stop_backup)
排他モード
非排他モード
今日取り上げるバックアップ手法
© 2020 NTT DATA Corporation 7
ご存じでしょうか?
非排他的な手法が推奨され、
排他的な手法は推奨されず、将来的に削除されます。
https://www.postgresql.jp/document/current/html/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
© 2020 NTT DATA Corporation 8
排他モード
① バックアップモードの開始
$ psql -c "SELECT pg_start_backup('mybackup')"
② DBクラスタのバックアップ
OSコマンドやスナップショットなどを使って、DBクラスタと全テーブルスペースを物理的にバックアップ
$ cp -a $PGDATA /tblspc1 /tblspc2 /backup
③ バックアップモードの終了
$ psql -c "SELECT pg_stop_backup()"
© 2020 NTT DATA Corporation 9
非排他モード
① バックアップモードの開始
$ psql
=# SELECT pg_start_backup('mybackup', false, false)
② DBクラスタのバックアップ
OSコマンドやスナップショットなどを使って、DBクラスタと全テーブルスペースを物理的にバックアップ
$ cp -a $PGDATA /tblspc1 /tblspc2 /backup
③ バックアップモードの終了
=# SELECT pg_stop_backup(false);
④ backup_labelとtablespace_mapのバックアップ
pg_stop_backup()の戻り値の内容から
backup_labelとtablespace_mapの2つのファイルを作成して、バックアップに含める
・第3引数にfalseを指定
・pg_start_backupを実行したセッションを
pg_stop_backupまで維持
・第1引数にfalseを指定
・pg_start_backupを実行したセッションで
pg_stop_backupを実行
© 2020 NTT DATA Corporation 10
非排他モード
=# SELECT * FROM pg_stop_backup(false);
lsn | labelfile | spcmapfile
-----------+---------------------------------------------------------------+-------------------------------
0/3000138 | START WAL LOCATION: 0/3000028 (file 000000010000000000000003)+| 16386 /dav/head-pgsql/tblspc2+
| CHECKPOINT LOCATION: 0/3000060 +| 16385 /dav/head-pgsql/tblspc1+
| BACKUP METHOD: streamed +|
| BACKUP FROM: master +|
| START TIME: 2020-07-06 23:55:11 JST +|
| LABEL: mybackup +|
| START TIMELINE: 1 +|
| |
(1 row)
backup_label tablespace_map
④-2 backup_labelとtablespace_mapをバックアップに格納
$ mv backup_label tablespace_map /backup
④-1 pg_stop_backup()の戻り値からbackup_labelとtablespace_mapのファイルを作成
© 2020 NTT DATA Corporation 11
排他モードと非排他モードの比較
排他モード 非排他モード
利用可能なバージョン 8.0以降 9.6以降
バックアップの
同時実行可能数
1 複数
pg_start_backupと
pg_stop_backupを
実行するセッション
同じまたは異なるセッション
 バックアップ中のセッション断による影響はない
 pg_stop_backupを忘れるとバックアップ
モードは終了しない(次回のバックアップ取得
が失敗する)
同じセッション
 セッション断によりバックアップが失敗する
(pg_start_backupからやり直し)
 セッションが切れればバックアップモードは終了
する
backup_labelと
tablespace_mapの
作成
pg_start_backupがDBクラスタ内に作成
 DBクラスタをバックアップすれば、各ファイルは
自動的にバックアップに含まれる
 バックアップ中にPostgreSQLがクラッシュす
ると、クラッシュリカバリが失敗する可能性があ
る(backup_labelがDBクラスタ内にある状
態でクラッシュリカバリが始まるため)
pg_stop_backupからユーザが作成
 ユーザが各ファイルをバックアップに含める必要
がある
 左記のリカバリ失敗の可能性はない(DBクラ
スタ内にbackup_labelは存在しないため)
© 2020 NTT DATA Corporation 12
排他モードでバックアップ中にクラッシュした場合のリカバリ失敗について
pg_start_backup
CHECKPOINT
1
2
3
4
5
? WALファイル
凡例
クラッシュ
CHECKPOINT
pg_stop_backup
各操作とWAL生成の流れ
クラッシュリカバリでは
最新CHECKPOINT
以降のWALを適用
backup_labelがある状態で
クラッシュリカバリが始まると、
pg_start_backup以降の
WALを適用
• backup_labelが
pg_start_backup以降
のWAL適用を指示
 ②~④のWALが削除済だと
リカバリ失敗
 未削除の場合もリカバリ時間
が長くなる
© 2020 NTT DATA Corporation 13
ご存じでしょうか?
非排他的な手法が推奨され、
排他的な手法は推奨されず、将来的に削除されます。
https://www.postgresql.jp/document/current/html/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
© 2020 NTT DATA Corporation 14
排他モードを削除するパッチ
v14で排他モードを削除するパッチが提案されている
Remove deprecated exclusive backup mode
https://commitfest.postgresql.org/28/1913/
削除についてまだ議論中だが、v14で削除となる可能性が高い(ように見える)
• リカバリ失敗のリスクを危険視する開発者が多い
• 排他モードを利用中のユーザがいるため削除に反対する意見もあるが少数
• 「排他モードは将来的に削除」とv9.6で明記してから、v14リリース時には5年経過済
排他モードが削除されても問題ないでしょうか?
© 2020 NTT DATA Corporation 15
排他モードの削除に備えて
1. pg_basebackupまたは外部ツールに移行できるのであれば移行する
2. 独自スクリプトを改修して、非排他モードに移行する
3. (排他モードの必要性を強くコミュニティで主張して、排他モードを削除させない)
© 2020 NTT DATA Corporation 16
排他モードから非排他モードへの移行例
$ psql -c "SELECT pg_start_backup('test')"
$ cp -a /pgdata/data /backup
$ psql -c "SELECT pg_stop_backup()"
$ psql -f backup.sql
SELECT pg_start_backup('test', false, false);
¥! cp -a /pgdata/data /backup
SELECT
pg_file_write('/tmp/backup_label', labelfile, false),
pg_file_write('/tmp/tablespace_map', spcmapfile, false)
FROM pg_stop_backup(false);
¥! mv /tmp/backup_label /tmp/tablespace_map /backup/data
排
他
モ
ー
ド
非
排
他
モ
ー
ド
・同一セッション内でpg_start_backupと
pg_stop_backupを簡単に実行できるように、
バックアップのすべての操作をpsql内で実行する
・OSコマンドはpsqlメタコマンドの¥!を介して実行
・pg_stop_backupからのbackup_labelと
tablespace_mapの作成には、
pg_file_write関数を使う
・pg_file_write関数を使うにはadminpackの
エクステンションをCREATE EXTENSIONする
必要がある(セキュリティ上の問題がないかは要確認)
© 2020 NTT DATA Corporation 17
まとめ
pg_start_backupとpg_stop_backupを使ったバックアップには
排他モードと非排他モードがある
排他モードは将来的に削除される予定 (v14で削除の可能性がある)
© 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Weitere ähnliche Inhalte

Was ist angesagt?

Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 

Was ist angesagt? (20)

PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラPostgreSQLの運用・監視にまつわるエトセトラ
PostgreSQLの運用・監視にまつわるエトセトラ
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのレプリケーション関連の改善について(第14回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会Inside vacuum - 第一回PostgreSQLプレ勉強会
Inside vacuum - 第一回PostgreSQLプレ勉強会
 
使いこなそうGUC
使いこなそうGUC使いこなそうGUC
使いこなそうGUC
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Ähnlich wie オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)

Ähnlich wie オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_standbyの今後について(第19回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介PostgreSQL9.3新機能紹介
PostgreSQL9.3新機能紹介
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
私はここでつまづいた! Oracle database 11g から 12cへのアップグレードと Oracle Database 12c の新機能@201...
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
Quick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + αQuick Overview of Upcoming Spark 3.0 + α
Quick Overview of Upcoming Spark 3.0 + α
 
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
Apache Spark 3.0新機能紹介 - 拡張機能やWebUI関連のアップデート(Spark Meetup Tokyo #3 Online)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 

Mehr von NTT DATA Technology & Innovation

Mehr von NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2020 NTT DATA Corporation 1 © 2020 NTT DATA Corporation 第15回 PostgreSQLアンカンファレンス@オンライン オンライン物理バックアップの 排他モードと非排他モードについて 2020年7月30日 株式会社NTTデータ 藤井雅雄 @fujii_masao
  • 2. © 2020 NTT DATA Corporation 2 藤井 雅雄 @fujii_masao Database Technical Lead @ NTTデータ データベース研究開発、PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション(非同期 / 同期 / カスケード / クォーラムコミット) WAL圧縮、バックアップ進捗 pg_bigm(全文検索モジュール)コミッタ 自己紹介
  • 3. © 2020 NTT DATA Corporation 3 本講演について 講演資料は、後日、NTTデータのSlideShareアカウント上で公開予定です。 https://www.slideshare.net/nttdata-tech 以前のアンカンファレンスの講演資料は公開済です。 PostgreSQL 13 での pg_stat_statements の改善について PostgreSQL 13 での pg_basebackup の改善について PostgreSQL 13 での レプリケーション関連 の改善について
  • 4. © 2020 NTT DATA Corporation 4 オンライン物理バックアップの 排他モードと非排他モードについて
  • 5. © 2020 NTT DATA Corporation 5 PostgreSQLで利用できるバックアップ手法 バックアップ 論理バックアップ (SQLダンプ) pg_dump / pg_dumpall 物理バックアップ オフラインバックアップ (コールドバックアップ) 独自スクリプト(pg_ctl stop + rsyncなど) オンラインバックアップ (ホットバックアップ) pg_basebackup 外部ツール(pg_rman、 Barmanなど) 独自スクリプト (pg_start_backup + pg_stop_backup) 排他モード 非排他モード
  • 6. © 2020 NTT DATA Corporation 6 PostgreSQLで利用できるバックアップ手法 バックアップ 論理バックアップ (SQLダンプ) pg_dump / pg_dumpall 物理バックアップ オフラインバックアップ (コールドバックアップ) 独自スクリプト(pg_ctl stop + rsyncなど) オンラインバックアップ (ホットバックアップ) pg_basebackup 外部ツール(pg_rman、 Barmanなど) 独自スクリプト (pg_start_backup + pg_stop_backup) 排他モード 非排他モード 今日取り上げるバックアップ手法
  • 7. © 2020 NTT DATA Corporation 7 ご存じでしょうか? 非排他的な手法が推奨され、 排他的な手法は推奨されず、将来的に削除されます。 https://www.postgresql.jp/document/current/html/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
  • 8. © 2020 NTT DATA Corporation 8 排他モード ① バックアップモードの開始 $ psql -c "SELECT pg_start_backup('mybackup')" ② DBクラスタのバックアップ OSコマンドやスナップショットなどを使って、DBクラスタと全テーブルスペースを物理的にバックアップ $ cp -a $PGDATA /tblspc1 /tblspc2 /backup ③ バックアップモードの終了 $ psql -c "SELECT pg_stop_backup()"
  • 9. © 2020 NTT DATA Corporation 9 非排他モード ① バックアップモードの開始 $ psql =# SELECT pg_start_backup('mybackup', false, false) ② DBクラスタのバックアップ OSコマンドやスナップショットなどを使って、DBクラスタと全テーブルスペースを物理的にバックアップ $ cp -a $PGDATA /tblspc1 /tblspc2 /backup ③ バックアップモードの終了 =# SELECT pg_stop_backup(false); ④ backup_labelとtablespace_mapのバックアップ pg_stop_backup()の戻り値の内容から backup_labelとtablespace_mapの2つのファイルを作成して、バックアップに含める ・第3引数にfalseを指定 ・pg_start_backupを実行したセッションを pg_stop_backupまで維持 ・第1引数にfalseを指定 ・pg_start_backupを実行したセッションで pg_stop_backupを実行
  • 10. © 2020 NTT DATA Corporation 10 非排他モード =# SELECT * FROM pg_stop_backup(false); lsn | labelfile | spcmapfile -----------+---------------------------------------------------------------+------------------------------- 0/3000138 | START WAL LOCATION: 0/3000028 (file 000000010000000000000003)+| 16386 /dav/head-pgsql/tblspc2+ | CHECKPOINT LOCATION: 0/3000060 +| 16385 /dav/head-pgsql/tblspc1+ | BACKUP METHOD: streamed +| | BACKUP FROM: master +| | START TIME: 2020-07-06 23:55:11 JST +| | LABEL: mybackup +| | START TIMELINE: 1 +| | | (1 row) backup_label tablespace_map ④-2 backup_labelとtablespace_mapをバックアップに格納 $ mv backup_label tablespace_map /backup ④-1 pg_stop_backup()の戻り値からbackup_labelとtablespace_mapのファイルを作成
  • 11. © 2020 NTT DATA Corporation 11 排他モードと非排他モードの比較 排他モード 非排他モード 利用可能なバージョン 8.0以降 9.6以降 バックアップの 同時実行可能数 1 複数 pg_start_backupと pg_stop_backupを 実行するセッション 同じまたは異なるセッション  バックアップ中のセッション断による影響はない  pg_stop_backupを忘れるとバックアップ モードは終了しない(次回のバックアップ取得 が失敗する) 同じセッション  セッション断によりバックアップが失敗する (pg_start_backupからやり直し)  セッションが切れればバックアップモードは終了 する backup_labelと tablespace_mapの 作成 pg_start_backupがDBクラスタ内に作成  DBクラスタをバックアップすれば、各ファイルは 自動的にバックアップに含まれる  バックアップ中にPostgreSQLがクラッシュす ると、クラッシュリカバリが失敗する可能性があ る(backup_labelがDBクラスタ内にある状 態でクラッシュリカバリが始まるため) pg_stop_backupからユーザが作成  ユーザが各ファイルをバックアップに含める必要 がある  左記のリカバリ失敗の可能性はない(DBクラ スタ内にbackup_labelは存在しないため)
  • 12. © 2020 NTT DATA Corporation 12 排他モードでバックアップ中にクラッシュした場合のリカバリ失敗について pg_start_backup CHECKPOINT 1 2 3 4 5 ? WALファイル 凡例 クラッシュ CHECKPOINT pg_stop_backup 各操作とWAL生成の流れ クラッシュリカバリでは 最新CHECKPOINT 以降のWALを適用 backup_labelがある状態で クラッシュリカバリが始まると、 pg_start_backup以降の WALを適用 • backup_labelが pg_start_backup以降 のWAL適用を指示  ②~④のWALが削除済だと リカバリ失敗  未削除の場合もリカバリ時間 が長くなる
  • 13. © 2020 NTT DATA Corporation 13 ご存じでしょうか? 非排他的な手法が推奨され、 排他的な手法は推奨されず、将来的に削除されます。 https://www.postgresql.jp/document/current/html/continuous-archiving.html#BACKUP-LOWLEVEL-BASE-BACKUP
  • 14. © 2020 NTT DATA Corporation 14 排他モードを削除するパッチ v14で排他モードを削除するパッチが提案されている Remove deprecated exclusive backup mode https://commitfest.postgresql.org/28/1913/ 削除についてまだ議論中だが、v14で削除となる可能性が高い(ように見える) • リカバリ失敗のリスクを危険視する開発者が多い • 排他モードを利用中のユーザがいるため削除に反対する意見もあるが少数 • 「排他モードは将来的に削除」とv9.6で明記してから、v14リリース時には5年経過済 排他モードが削除されても問題ないでしょうか?
  • 15. © 2020 NTT DATA Corporation 15 排他モードの削除に備えて 1. pg_basebackupまたは外部ツールに移行できるのであれば移行する 2. 独自スクリプトを改修して、非排他モードに移行する 3. (排他モードの必要性を強くコミュニティで主張して、排他モードを削除させない)
  • 16. © 2020 NTT DATA Corporation 16 排他モードから非排他モードへの移行例 $ psql -c "SELECT pg_start_backup('test')" $ cp -a /pgdata/data /backup $ psql -c "SELECT pg_stop_backup()" $ psql -f backup.sql SELECT pg_start_backup('test', false, false); ¥! cp -a /pgdata/data /backup SELECT pg_file_write('/tmp/backup_label', labelfile, false), pg_file_write('/tmp/tablespace_map', spcmapfile, false) FROM pg_stop_backup(false); ¥! mv /tmp/backup_label /tmp/tablespace_map /backup/data 排 他 モ ー ド 非 排 他 モ ー ド ・同一セッション内でpg_start_backupと pg_stop_backupを簡単に実行できるように、 バックアップのすべての操作をpsql内で実行する ・OSコマンドはpsqlメタコマンドの¥!を介して実行 ・pg_stop_backupからのbackup_labelと tablespace_mapの作成には、 pg_file_write関数を使う ・pg_file_write関数を使うにはadminpackの エクステンションをCREATE EXTENSIONする 必要がある(セキュリティ上の問題がないかは要確認)
  • 17. © 2020 NTT DATA Corporation 17 まとめ pg_start_backupとpg_stop_backupを使ったバックアップには 排他モードと非排他モードがある 排他モードは将来的に削除される予定 (v14で削除の可能性がある)
  • 18. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。