- EDB
- PostgreSQL
PostgreSQLの拡張機能「system_stats」のご紹介
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
|
|
当記事は EnterpriseDB 社のナレッジベース記事の翻訳の紹介です。
基本的に引用元の原文そのままで和訳していますが、文中のマニュアルへのリンクは、日本語版が公開されている場合、日本語版マニュアルへのリンクに置き換えています。
著者:Matthew Gwillam-Kelly
2024年5月21日
https://knowledge.enterprisedb.com/hc/en-us/articles/13523417119132-WAL-Archiving-Best-practices
この記事は以下を前提としています。
|
注意事項:WindowsやLinuxのディストリビューションによっては、そのまま同じコマンドが使えない場合があります。実際の環境で必ずテストした上で稼働環境に適用してください。
以下の各段落ではそれぞれの手法について詳しく解説します。
Barmanは推奨される物理バックアップ・ツールの一つです。barman cron機能は特にバックアップ・プロセスの運用に有効です。また、以下のような多彩な機能を含みます。
Barmanの利用方法はこちらのウェブページにまとまっています。
設定例:
archive_command = 'barman-wal-archive barmanserver db01 %p'
archive_command = test ! -f /archive_location/%f && cp %p /archive_location/%f && barman-wal-archive barmanserver db01 %p
rsync、cp、scpと併用すると、barman-wal-archiveによる耐久性が損なわれます。この例では、cpの失敗によってbarman-wal-archiveも実行されません。
「&&」を「;」に置き換えたとしても、有効になるアーカイブはcpで作成されたアーカイブのみになってしまい、Barmanのカスケード・アーカイブを利用したほうが安心です。
Barmanでは内部的なpg_receivewal実行によるWALストリーミングをサポートしています。
これは目標復旧時点(以下、RPO)をできるだけ直近にすることに役立ちます。pg_receivewal自体については後続の 4) で詳しく述べます。
pgBackRestについての基礎知識
pgBackRestもまた推奨される物理バックアップ・ツールの一つです。Barmanと同じく、ファイルやディレクトリ単位のfsyncによって確実にデータを保持します。
また、以下のような多彩な機能を含みます。
詳細な使用方法は開発元ウェブページか、EDBドキュメントをご参照ください。
archive_commandおよびpgBackRest
アーカイブを行うためには、archive_commandパラメータにarchive-pushを設定します。
設定例:
archive_command = 'pgbackrest --stanza=demo archive-push %p'
この手順はクイック・スタートのページで示されています。
設定手順例(EDBの手順ですがPostgreSQLにも利用できます):
edb=# show shared_preload_libraries;
shared_preload_libraries
$libdir/dbms_pipe,$libdir/edb_gen,$libdir/dbms_aq,$libdir/basic_archive
edb=# alter system set shared_preload_libraries='$libdir/dbms_pipe','$libdir/edb_gen','$libdir/dbms_aq','$libdir/basic_archive';
$ /usr/local/enterprisedb/bin/pg_ctl -D /var/lib/edb/as15 -l /var/lib/edb/as15/log/logfile restart
edb=# show archive_library;
edb=# show basic_archive.archive_directory
edb=# alter system set archive_library = 'basic_archive';
edb=# alter system set basic_archive.archive_directory = '/var/lib/edb/archive_test';
edb=# SELECT pg_reload_conf();
edb=# show archive_library;
basic_archive
edb=# show basic_archive.archive_directory
/var/lib/edb/archive_test
edb=# create table test( i int);
edb=# insert into test generate_series(1,1000);
edb=# select pg_switch_wal();
edb=# insert into test generate_series(1,1000);
edb=# select pg_switch_wal();
edb=# select * from pg_stat_archiver;
archived_count|last_archived_wal|last_archived_time| failed_count|last_failed_wal|last_failed_time|stats_reset
23|000000010000000000000019|09-FEB-23 17:26:38.722981 +00:00|0 ||| 07-FEB-23 16:28:15.290586 +00:00
$ ls -l /var/lib/edb/archive_test
-rw_______ 1 enterprisedb enterprisedb 16777216 Feb 9 17:26 000000010000000000000018
-rw_______ 1 enterprisedb enterprisedb 16777216 Feb 9 17:26 000000010000000000000019
$ ps waux | grep archive
postgres: archiver last was 000000010000000000000019
pg_receivewalについての基礎知識
pg_receivewal利用の複雑さ(スタンドアロン、Barman無しの場合)
select * from pg_stat_replication, select * from pg_replication_slots;systemctl status systemd_name
バックアップ・ツールを採用することが難しい場合、archive_commandにrsyncを記載するのも方法の一つです。rsyncを用いた手法には以下の特徴があります。
設定例:
archive_command = 'test ! -f enter_backup_location/%f && rsync -a %p enter_backup_location/%f'
scpを用いたアーカイブもまた、barman-wal-archiveやrsyncに劣るだけでなく、廃止される見込みのため推奨されません。
(以上、EDB社ブログ記事より翻訳)
いかがでしたでしょうか?初めてPostgreSQLに触れるお客様や、データベースのバージョンアップに際して、バックアップを見直すお客様にとって、RPOに直結するアーカイブの考え方は設計において重要な一要素です。
この記事を通して、アーカイブ手法や考え方の一助になれば幸いです。
\ PostgreSQLとEDBの違いについて知りたい方はこちらへ! /
\ EDBとは?について知りたい方はこちらへ! /
|
|
|---|
2018年に中途入社。Oracle Database、EDB Postgres/PostgreSQLの支援経験を積み、2024年からEDB/PostgreSQLサポートを担当。趣味は競馬・麻雀。...show more
■本記事の内容について
本記事に記載されている製品およびサービス、定義及び条件は、特段の記載のない限り本記事執筆時点のものであり、予告なく変更になる可能性があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
PostgreSQLのオプティマイザがインデックスを適切に使用できない理由は様々ですが、本記事ではJDBC⇔PostgreSQL間でデータ型の不一致がインデックスの使用にどういった悪影響を及ぼすかを見ていきます
EDB Postgres Workload Reportsは、Postgresデータベースのパフォーマンス診断とトラブルシューティングを強化する新しいツールです。OracleのAWRに似た詳細なレポートを提供し、データベースの問題を迅速に特定・解決できるようサポートします。本記事では概要と利用手順をご紹介します。