2022年7月19日 星期二

PostgreSQL WAL 交易量大小查詢

        資料庫在進行相關的效能調教評估,像是 checkpoint_timeout max_wal_size 的大小設定,就會需要了解資料庫的一段時間內的交易量大小。

        一般來說最簡單查看的方式會是對實際的交易檔案 WAL 產出時間/大小來判斷,但這樣的方式會受到 Archive 狀況影響,也不是很好查看。

        在 PostgreSQL 內建相關的 WAL 操作語法可以很簡單的查看交易量,透過 pg_wal_lsn_diff (pg_xlog_location_diff) 這個 Function 去比對不同時段 lsn 位置差異即可以得出交易量大小,平常僅需要定期透過排程去收集 pg_current_wal_lsn(pg_current_xlog_location) 的紀錄,就可以根據需要查看的時間區間進行比對查看。

edb=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 20/3B000148
(1 row)

edb=# – 一些交易
edb=# create table ta (id int);
CREATE TABLE

edb=# select pg_current_wal_lsn();
 pg_current_wal_lsn
--------------------
 20/3B014C40
(1 row)

edb=# select pg_size_pretty(pg_wal_lsn_diff('20/3B014C40','20/3B000148'));
 pg_size_pretty
----------------
 83 kB
(1 row)

2022年7月11日 星期一

PostgreSQL 跨 OS (Rhel) 版本 Streaming Replication 同步測試

近期在研究 Postgresql 升版的手段,在沒有升級 OS 需求下可以很簡單透過 pg_upgrade 完成升版作業,本處主要討論跨 OS 版本升版的可能性,一般小型資料庫如果使用 pg_dump/pg_restore 或是採用 Logical Replication 的手法做升級就算是跨 OS 版本也可以很簡單的進行升級,但採用內建同步機制時則會需要注意跨 OS 版本的影響

(考量整體執行速度、執行步驟等因素,pg_upgrade 為當前最穩定建議的升級手法)