Ubuntu下搭建postgresql主从服务器(方法1)


安装略


postgresql主服务器:



$ vi /etc/postgresql/9.1/main/postgresql.conf


按a或i进入编辑模式



listen_addresses = ‘*’   (默认为注释的,此处不改从postgresql同步时会报连接拒绝)


wal_level = hot_standby   (默认为注释的)


max_wal_senders = 5  (默认为注释,这个参数是控制主库最多可以有多少个并发的standby数据库)


wal_keep_segments = 32  (默认为注释,设置足够大的值,以防止主库生成wal日志太快,日志还没有来得


及传送到standby就会循环覆盖了)



log_destination = 'stderr'


logging_collector = on


log_directory = 'pg_log'   (绝对路径为:/var/lib/postgresql/9.1/main/)


log_file_name = 'postgresql-%y-%m-%d_%H%M%S.log'


log_rotation_size = 10MB



按Esc键退出编辑


:wq  (保存并退出)



$ vi /etc/postgresql/9.1/main/pg_hba.conf


按a或i进入编辑模式


host   replication   yang   10.0.0.3/32    md5   (md5是需要密码,trust是不需要密码)


按Esc键退出编辑


:wq  (保存并退出)



$ psql


postgres=# create user yang superuser password '123456';


postgres=# \q



重启postgresql


$ service postgresql restart



$ psql



postgres=# select pg_start_backup('');   让主数据库处于备份状态



可再打开个窗口


# scp -r /var/lib/postgresql/9.1/main postgres@10.0.0.3:/var/lib/postgresql/9.1/  (建议操作前先


将从服务器的main的目录改名备份下)



postgres=# select pg_stop_backup();       关闭主数据库的备份







postgresql从服务器:




$ vi /etc/postgresql/9.1/main/postgresql.conf


按a或i进入编辑模式


hot_standby = on    (默认为注释)


log_destination = 'stderr'


logging_collector = on


log_directory = 'pg_log'   (绝对路径为:/var/lib/postgresql/9.1/main/)


log_file_name = 'postgresql-%y-%m-%d_%H%M%S.log'


log_rotation_size = 10MB


按Esc键退出编辑


:wq  (保存并退出)


$ vi /var/lib/postgresql/9.1/main/recovery.conf


按a或i进入编辑模式


standby_mode = 'on'

primary_conninfo = 'host=10.0.0.2 port=5432 user=yang  password=123456'


按Esc键退出编辑


:wq  (保存并退出)


$ rm -rf /var/lib/postgresql/9.1/main/postmaster.pid


$ netstat -ntpl | grep 5432


$ kill -9 上一步的pid


$ service postgresql start


$ cat /var/lib/postgresql/9.1/main/pg_log/postgresql-2015-01-14_180349.log   (主要是看有没


有“LOG:  entering standby mode”和“consistent recovery state reached at 0/3000000”)




验证:


此时在主postgresql上新建数据库或表等,然后再到从postgresql上查看是否已经同步