一。 内网环境测试 (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/
Postgresql 主从数据库备份
猜你喜欢
转载自winder-sety.iteye.com/blog/2188039
今日推荐
周排行