pgsql 环境下有时需要每天同步数据或者新加一个salve时,同时又需要对master不造成影响时,可以采用如下方式。
1、暂停 stream 复制
$ psql
psql (9.1.22)
Type "help" for help.
postgres=# select * from pg_xlog_replay_pause();
pg_xlog_replay_pause
----------------------
(1 row)
2、使用 rsync 同步文件
# rsync -avp /pg_tbs/idx root@10.10.2.221:/pg_tbs/
# rsync -avp /pg_tbs/data root@10.10.2.221:/pg_tbs/
# rsync -avp /var/lib/postgresql/9.1/main --exclude=pg_xlog root@10.10.2.221:/var/lib/postgresql/9.1/
或者
# rsync -rlgovp /pg_tbs/idx root@10.10.2.221:/pg_tbs/
# rsync -rlgovp /pg_tbs/data root@10.10.2.221:/pg_tbs/
# rsync -rlgovp /var/lib/postgresql/9.1/main --exclude=pg_xlog root@10.10.2.221:/var/lib/postgresql/9.1/
# rsync -rlgocvp /pg_tbs/idx root@10.10.2.221:/pg_tbs/
# rsync -rlgocvp /pg_tbs/data root@10.10.2.221:/pg_tbs/
# rsync -rlgocvp /var/lib/postgresql/9.1/main --exclude=pg_xlog root@10.10.2.221:/var/lib/postgresql/9.1/
3、启动 stream 复制
$ psql
psql (9.1.22)
Type "help" for help.
postgres=# select * from pg_xlog_replay_resume();
pg_xlog_replay_resume
-----------------------
(1 row)