目前我有两台机器,
分别已经安装了PPAS9.1,安装后建立了OS系统用户enterprisedb和数据库用户enterprisedb。
机器1:master 192.168.10.88
机器2: slave 192.168.10.99
为了可以在机器1和机器2之间方便进行访问,设置pg_hba.conf如下:
机器1和机器2都如此设置:
[root@master ~]# su - enterprisedb -bash-3.2$ pwd /opt/PostgresPlus/9.1AS -bash-3.2$ cd data -bash-3.2$ cat pg_hba.conf # PostgreSQL Client Authentication Configuration File # ===================================================. ...... # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only #local all all md5 local all all trust # IPv4 local connections: #host all all 127.0.0.1/32 md5 host all all 0.0.0.0/0 trust # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. #local replication enterprisedb md5 #host replication enterprisedb 127.0.0.1/32 md5 #host replication enterprisedb ::1/128 md5 -bash-3.2$
然后分别建立数据库:
机器1:
[root@master ~]# su - enterprisedb -bash-3.2$ pwd /opt/PostgresPlus/9.1AS -bash-3.2$ cd bin -bash-3.2$ ./createdb -d masterdb --owner=enterprisedb
机器2:
[root@slave ~]# su - enterprisedb -bash-3.2$ pwd /opt/PostgresPlus/9.1AS -bash-3.2$ cd bin -bash-3.2$ ./createdb -d slavedb --owner=enterprisedb
然后,在机器1上准备数据:
[root@master ~]# su - enterprisedb -bash-3.2$ cd bin -bash-3.2$ ./psql -d masterdb psql (9.1.2.2) Type "help" for help. masterdb=# begin; BEGIN masterdb=# create table tab01(id integer); CREATE TABLE masterdb=# insert into tab01 values(1); INSERT 0 1 masterdb=# create table tab02(id integer); CREATE TABLE masterdb=# insert into tab02 values(2); INSERT 0 1 masterdb=# end; COMMIT masterdb=# \q
然后再在机器1上,建立一个执行中的事务,不提交:
-bash-3.2$ ./psql -d masterdb psql (9.1.2.2) Type "help" for help. masterdb=# begin; BEGIN masterdb=# create table tab03(id integer); CREATE TABLE masterdb=# insert into tab03 values(3); INSERT 0 1 masterdb=#
然后开始pg_dump 动作:
我从机器2上发起命令:在此把pg_dump的输出,重定向到psql,直接完成restore的任务:
[root@slave ~]# su - enterprisedb -bash-3.2$ cd bin -bash-3.2$ ./pg_dump -h 192.168.10.88 -s masterdb | ./psql -h 192.168.10.99 slavedb SET SET SET SET SET CREATE EXTENSION COMMENT CREATE EXTENSION COMMENT CREATE EXTENSION COMMENT SET SET SET CREATE TABLE ALTER TABLE CREATE TABLE ALTER TABLE REVOKE REVOKE GRANT GRANT -bash-3.2$
在机器2上检验效果:
-bash-3.2$ ./psql -d slavedb psql (9.1.2.2) Type "help" for help. slavedb=# \dt List of relations Schema | Name | Type | Owner --------+---------------------------+-------+-------------- public | tab01 | table | enterprisedb public | tab02 | table | enterprisedb sys | dual | table | enterprisedb sys | edb$session_wait_history | table | enterprisedb sys | edb$session_waits | table | enterprisedb sys | edb$snap | table | enterprisedb sys | edb$stat_all_indexes | table | enterprisedb sys | edb$stat_all_tables | table | enterprisedb sys | edb$stat_database | table | enterprisedb sys | edb$statio_all_indexes | table | enterprisedb sys | edb$statio_all_tables | table | enterprisedb sys | edb$system_waits | table | enterprisedb sys | plsql_profiler_rawdata | table | enterprisedb sys | plsql_profiler_runs | table | enterprisedb sys | plsql_profiler_units | table | enterprisedb sys | product_component_version | table | enterprisedb (16 rows) slavedb=# select * from tab01; id ---- (0 rows) slavedb=# select * from tab02; id ---- (0 rows) slavedb=#