提交 1546ec3b 编写于 作者: T Taylor Vesely 提交者: Jimmy Yih

Add gp_stat_replication view

In order to view the primary segments' replication stream data from
their pg_stat_replication view, we currently need to connect to the
primary segment individually via utility mode. To make life easier, we
introduce a function that will fetch each primary segment's
replication stream data and wrap it with a view named
gp_stat_replication. It will now be possible to view all the cluster
replication information from the master in a regular psql session.

Authors: Taylor Vesely and Jimmy Yih
上级 4e9da061
......@@ -407,6 +407,35 @@ CREATE VIEW pg_stat_replication AS
WHERE S.usesysid = U.oid AND
S.procpid = W.pid;
CREATE FUNCTION pg_stat_get_master_replication() RETURNS SETOF RECORD AS
$$
SELECT pg_catalog.gp_execution_segment() AS gp_segment_id, *
FROM pg_catalog.pg_stat_replication
$$
LANGUAGE SQL EXECUTE ON MASTER;
CREATE FUNCTION pg_stat_get_segment_replication() RETURNS SETOF RECORD AS
$$
SELECT pg_catalog.gp_execution_segment() AS gp_segment_id, *
FROM pg_catalog.pg_stat_replication
$$
LANGUAGE SQL EXECUTE ON ALL SEGMENTS;
CREATE VIEW gp_stat_replication AS
SELECT * FROM pg_stat_get_master_replication() AS R
(gp_segment_id integer, procpid integer, usesysid oid,
usename name, application_name text, client_addr inet,
client_port integer, backend_start timestamptz, state text,
sent_location text, write_location text, flush_location text,
replay_location text, sync_priority integer, sync_state text)
UNION ALL
SELECT * FROM pg_stat_get_segment_replication() AS R
(gp_segment_id integer, procpid integer, usesysid oid,
usename name, application_name text, client_addr inet,
client_port integer, backend_start timestamptz, state text,
sent_location text, write_location text, flush_location text,
replay_location text, sync_priority integer, sync_state text);
CREATE VIEW pg_stat_database AS
SELECT
D.oid AS datid,
......
......@@ -13,7 +13,9 @@ REGRESS = setup walreceiver
# walsender-walreceiver connection only
ifeq ($(enable_segwalrep), yes)
ifeq ($(WITH_MIRRORS), false)
REGRESS += generate_ao_xlog generate_aoco_xlog
REGRESS += generate_ao_xlog generate_aoco_xlog replication_views_mirrorless
else
REGRESS += replication_views_mirrored
endif
endif
REGRESS_OPTS = --dbname="walrep_regression"
......
-- Check how many WAL replication mirrors are up and synced
SELECT count(*) FROM gp_segment_configuration where preferred_role='m' and mode='s';
count
-------
3
(1 row)
-- Check pg_stat_replication view (this assumes standby master has not been created)
SELECT * FROM pg_stat_replication;
procpid | usesysid | usename | application_name | client_addr | client_port | backend_start | state | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state
---------+----------+---------+------------------+-------------+-------------+---------------+-------+---------------+----------------+----------------+-----------------+---------------+------------
(0 rows)
-- Check pg_stat_replication view of master and primary segments
SELECT gp_segment_id, application_name, state, sync_state FROM gp_stat_replication;
gp_segment_id | application_name | state | sync_state
---------------+------------------+-----------+------------
0 | walreceiver | streaming | sync
1 | walreceiver | streaming | sync
2 | walreceiver | streaming | sync
(3 rows)
-- Check how many WAL replication mirrors are up and synced
SELECT count(*) FROM gp_segment_configuration where preferred_role='m' and mode='s';
count
-------
0
(1 row)
-- Check pg_stat_replication view (this assumes standby master has not been created)
SELECT * FROM pg_stat_replication;
procpid | usesysid | usename | application_name | client_addr | client_port | backend_start | state | sent_location | write_location | flush_location | replay_location | sync_priority | sync_state
---------+----------+---------+------------------+-------------+-------------+---------------+-------+---------------+----------------+----------------+-----------------+---------------+------------
(0 rows)
-- Check pg_stat_replication view of master and primary segments
SELECT gp_segment_id, application_name, state, sync_state FROM gp_stat_replication;
gp_segment_id | application_name | state | sync_state
---------------+------------------+-------+------------
(0 rows)
-- Check how many WAL replication mirrors are up and synced
SELECT count(*) FROM gp_segment_configuration where preferred_role='m' and mode='s';
-- Check pg_stat_replication view (this assumes standby master has not been created)
SELECT * FROM pg_stat_replication;
-- Check pg_stat_replication view of master and primary segments
SELECT gp_segment_id, application_name, state, sync_state FROM gp_stat_replication;
-- Check how many WAL replication mirrors are up and synced
SELECT count(*) FROM gp_segment_configuration where preferred_role='m' and mode='s';
-- Check pg_stat_replication view (this assumes standby master has not been created)
SELECT * FROM pg_stat_replication;
-- Check pg_stat_replication view of master and primary segments
SELECT gp_segment_id, application_name, state, sync_state FROM gp_stat_replication;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册