bobpxp 发表于 2016-11-19 10:48:39

Postgresql 主从数据库备份

一。   内网环境测试(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. 添加复制的用户:
supostgres
/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');"
Suroot:
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');"
Suroot:
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/
页: [1]
查看完整版本: Postgresql 主从数据库备份