--对于主从复制来说,有时候想停止从库应用主库的xlog做一些事情,此时可以用不pg提供的复制函数 --在从库查看其是否在应用xlog,返回f说明其没有暂停应用xlog日志 postgres=# select pg_is_xlog_replay_paused(); pg_is_xlog_replay_paused -------------------------- f (1 row) --在主库创建测试数据 postgres=# create table t (id int); CREATE TABLE postgres=# insert into t select n from generate_series(1,1000); postgres=# insert into t select n from generate_series(1,1000) n; INSERT 0 1000 --由于从库还在应用xlog,故可在从库查到数据的变更 postgres=# select count(*) from t; count ------- 1000 (1 row) --停止从库应用xlog日志 postgres=# select pg_xlog_replay_pause(); pg_xlog_replay_pause ---------------------- (1 row) postgres=# select pg_is_xlog_replay_paused(); pg_is_xlog_replay_paused -------------------------- t (1 row) --主库继续变量数据 postgres=# insert into t select n from generate_series(1,10000) n; INSERT 0 10000 --由于从库已停止应用xlog,所以在从库查询不到数据的变量 postgres=# select count(*) from t; count ------- 1000 (1 row) --从库继续应用xlog postgres=# select pg_xlog_replay_resume(); pg_xlog_replay_resume ----------------------- (1 row) postgres=# select pg_is_xlog_replay_paused(); pg_is_xlog_replay_paused -------------------------- f (1 row) --查看从库,可发现主库的变更已经被应用 postgres=# select count(*) from t; count ------- 11000 (1 row)