一。 内网环境测试 (192.168.8.20 192.168.8.21 2台机器安装路径均和外网保持一致)
Root
启动命令:
/mapbar/app/pgsql/bin/postgres -D /mapbar/app/pgsql/data
/mapbar/db/program/postgresql-9.2.4/bin/postgres -D /mapbar/db/data
一。 修改主机的配置文件,然后重启数据库:
1. 添加复制的用户:
su postgres
/mapbar/app/pgsql/bin/psql postgres
Create user repl superuser password '111qqq,,,';
2. 修改pg_hba.conf 文件:
vi /mapbar/app/pgsql/data/pg_hba.conf (这里8.20, 8.21 最好都加上 要不以后备机切主机也需要增加权限ip)
host replication repl 192.168.8.21/0 password
3. 修改postgresql.conf 文件:
wal_level = hot_standby
max_wal_senders = 5
listen_addresses = '*'
( 这段不用了 写的不对
archive_mode =on --开启归档
archive_command ='test ! -f /mapbar/app/pgsql/archive_log/%f && cp %p /mapbar/app/pgsql/archive_log/%f'
)
hot_standby = on
4. 重启数据库
二。 修改备机的配置文件,然后关闭备机数据库:
1. 修改 recovery.conf: (此文件是从: /mapbar/db/program/postgresql-9.2.4/share 下面的recovery.conf.sample 文件拷贝到data下 改名而得)
standby_mode = on
primary_conninfo = 'host=192.168.8.20 port=5432 user=repl password=111qqq,,,'
三。 主机执行命令:(或者到bin下面执行 ./psql)
Su postgres:
psql -c "select pg_start_backup('initial_backup');"
Su root:
rsync -cva -P --inplace --exclude=*pg_xlog* /mapbar/app/pgsql/data/ 192.168.8.21:/mapbar/db/data/
Su postgres:
psql -c "select pg_stop_backup();"
四。 启动备机的数据库:
五。 测试新加入一个user用户:
看看备机数据库有没有这个用户
========================= 备机切主机 ===================================
六。 如果想从备机切换到主机:
备机:
1. recovery.conf 增加:
trigger_file = '/mapbar/sh/trigger.kenyon'
2. 重启数据库
3. 停掉主机的数据库
4. 备机执行:
touch /mapbar/sh/trigger.kenyon (创建了一个文件,数据库可以读到就切换为主机)
这时候:recovery.conf 文件已经变成了 recovery.done
5. 切换tomcat 连接 8.21的数据库,启动。
添加一个账号: 21AAA 的数据,这时8.20 是没有这个数据的
主机:
6. 拷贝备机的recovery.done 到主机上:recovery.conf:
修改里面的内容:
primary_conninfo = 'host=192.168.8.21 port=5432 user=repl password=111qqq,,,'
( ================ 这一步应该在开始配置的时候就加上, 避免备机数据库的重启
修改备机的 pg_hba.conf 的配置,允许主机访问:
host replication repl 192.168.8.20/32 password
重启备机的数据库
)
7. 启动主机:
报错:
FATAL: timeline 1 of the primary does not match recovery target timeline 2
需要重新从备机 copy data 到主机:
cd /mapbar/db/program/postgresql-9.2.4/bin/
Su postgres:
./psql -c "select pg_start_backup('initial_backup');"
Su root:
rsync -cva -P --inplace /mapbar/db/data/ 192.168.8.20:/mapbar/app/pgsql/data/
Su postgres:
./psql -c "select pg_stop_backup();"
8. 启动主机,这时主机已变成了备用机
使用原备机的数据库创建账号,可以看见原主机也有了账号
相关资料:
http://my.oschina.net/Kenyon/blog/98217
http://www.tuicool.com/articles/rmEnUnN
http://blog.sina.com.cn/s/blog_6cd44dbc0101cbvt.html
http://www.pgsqldb.org:8079/pgdoc/tutorial-zh_cn.html
http://francs3.blog.163.com/blog/static/4057672720149285445881/