`
i_am_birdman
  • 浏览: 280745 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

PostgreSQL9.1Warm and Hot Standby Using Point-In-Time Recovery (PITR)配置

 
阅读更多

配了快一个星期吧。看的英文文档。不停的google。英文真是我的硬伤。

参考资料:http://wiki.postgresql.org/wiki/Streaming_Replication

http://michael.otacoo.com/postgresql-2/postgres-9-1-setup-a-synchronous-stand-by-server-in-5-minutes/

http://hi.baidu.com/magicgrass/blog/item/69fcdb1e297248e9e0fe0bef.html

http://brandonkonkle.com/blog/2010/oct/20/postgres-9-streaming-replication-and-django-balanc/

http://www.postgresql.org/docs/devel/static/#STANDBY-SERVER-OPERATION

 

 

---------------------------------------------------------------------------------------------------

我的主机做master/primary,ip:172.29.0.43.

slave/的ip是:172.29.0.44 ,端口都是5432.

现在我的主机上创建个角色用于Replication时slave的登录role,假设角色名为slave1

 

 

CREATE ROLE name REPLICATION LOGIN

 

然后配置主机postgresql.conf和pg_hba.conf

 

往pg_hba.conf添加如下:

 

 

host    all             all             172.29.0.44/32          trust



host     replication     slave1          172.29.0.44/32         trust

 

 

修改postgresql.conf如下:

 

wal_level = hot_standby

archive_mode = on   

archive_command = 'cp -i %p /opt/PostgreSQL/9.1/archive/%f'

archive_timeout = 600 

max_wal_senders = 10 

wal_keep_segments = 32

 

 

然后创建在archive_command中出现的目录。并给予777权限。

 

接着开始在主机上创建备份

 

 

[root@ShadowFiend data]# su postgres
bash-4.1$ pg_ctl start
bash-4.1$ psql postgres -c "select pg_start_backup('backup',true)"

 

 

然后用scp  传送到 172.29.0.44  或者 用 tar -czvf  ****.tar.gz   data;/打包 传到172.29.0.44 上的 PostgreSQL 下 的 data 下 并且覆盖 除了 postgresql.conf ,pg_hba.conf 的所有文件。删除 data/postmaster.pid。

 

然后主机执行

 

 

bash-4.1 $ psql postgres -c "select pg_stop_backup"

bash-4.1 $ pg_ctl restart

 

 

接着在172.29.0.44上 用root 用户给覆盖过的 data/目录 更改属主

 

 

chown -R postgres data

 

并且修改data下的postgresql.conf :

 

 

wal_level=hot_standby

 hot_standby=on

 

从share/postgresql/复制一个recovery.conf的sample到data/下

 

 

cp share/postgresql/recovery.conf.sample  data/recovery.conf

 

并添加

 

 

restore_command=‘cp  /opt/archive/%f%p’

archive_cleanup_command=‘pg_archivecleanup/archive%r’

standby_mode=‘on’

primary_conninfo=‘host=172.29.0.43 port=5432 user=slave1 password=’
 
trigger_file= '/opt/archive/trigger_file.172.29.0.43'

 

接着启动172.29.0.44的服务吧。

 

ok。

 

 

---------------------------------------------------------------------------------------------------------------------------------------------

有错误看data/pg_log/下的日志。

中间有次不小心吧primary上的/data/pg_xlog/删光了,数据库就启动不起来,重新拷贝了其他机器上的/data 下来覆盖。。。。。

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------

 

:-),出错了,大概是primary 和 slave 都关机后,再启动起来报错

 

 

DEBUG:  received replication command: IDENTIFY_SYSTEM
DEBUG:  received replication command: START_REPLICATION 0/18000000
2011-12-09 11:07:52 CST LOG:  streaming replication successfully connected to primary
2011-12-09 11:07:52 CST FATAL:  could not receive data from WAL stream: FATAL:  requested WAL segment 000000010000000000000018 has already been removed

 

 

 google了一下,解答如下、

 

The cause is very simple - the standby needs all WAL segments created
since the backup started, but the master removes some of them. There are
two ways to fix this:

1) increase the wal_keep_segments so that enough segments is kept

It seems that the slave asked for B110000000D when master already created
B110000000D. That's almost 4000 segments if I'm counting correctly. That
means your database is either quite busy or the backup takes very long
time.

This stores all the data on master, so you'll have to keep that in mind
when planning the capacity. For example the 4000 segments are almost 64GB.

2) Set up a WAL archive - a separate instance where the WAL segments are
kept. See how the archive_command works. And there's pg_archivecleanup for
maintenance of the archive.

Tomas

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    postgresql-9.1-901-1.jdbc4-API文档-中文版.zip

    jar包文件:postgresql-9.1-901-1.jdbc4.jar javadoc API文档文件:postgresql-9.1-901-1.jdbc4-javadoc.jar sources 源代码文件(若本来存在):postgresql-9.1-901-1.jdbc4-sources.jar 对应Maven信息: ...

    postgresql-9.1.24-1-windows-x64安装包

    postgresql9.1版本安装包64位版本

    postgresql-9.1-901.jdbc3-API文档-中文版.zip

    jar包文件:postgresql-9.1-901.jdbc3.jar javadoc API文档文件:postgresql-9.1-901.jdbc3-javadoc.jar sources 源代码文件(若本来存在):postgresql-9.1-901.jdbc3-sources.jar 对应Maven信息: groupId:...

    postgresql-9.1-901.jdbc4-API文档-中文版.zip

    jar包文件:postgresql-9.1-901.jdbc4.jar javadoc API文档文件:postgresql-9.1-901.jdbc4-javadoc.jar sources 源代码文件(若本来存在):postgresql-9.1-901.jdbc4-sources.jar 对应Maven信息: groupId:...

    postgresql-9.1.24-1-linux-binaries.tar.gz

    PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。版本为postgresql-9.1.24-1-linux-binaries.tar.gz,度盘下载

    postgresql-9.1.24-1-linux-x64-binaries.tar.gz

    PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。度盘下载

    postgresql-9.1.24-1-windows-binaries.zip

    PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。度盘下载

    postgresql-13.3-2-windows-x64 windows安装器

    postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-...

    postgresql-9.1.24-1-windows-x64-binaries.zip

    PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。度盘下载

    PostgreSQL(postgresql14-devel-14.1-1PGDG.rhel7.x86_64.rpm)

    PostgreSQL(postgresql14-devel-14.1-1PGDG.rhel7.x86_64.rpm)适用于RHEL/CentOS/Oracle Linux 7 - x86_64 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系...

    postgresql-9.1.14-1-1

    PostgreSQL主要优势:  1. PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了PostgreSQL数据库不会被其它公司控制。oracle数据库不用说了,是...

    postgresql-9.1-windows

    postgresql-9.1 PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代...

    rh-postgresql10-postgresql-server-10.3-2.el7.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    postgreSQL9.1

    postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe postgreSQL9.1 安装文件exe

    PostgreSQL(postgresql14-contrib-14.1-1PGDG.rhel7.x86_64.rpm)

    PostgreSQL(postgresql14-contrib-14.1-1PGDG.rhel7.x86_64.rpm)适用于RHEL/CentOS/Oracle Linux 7 - x86_64 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机...

    史上最新PostgreSQL15.2的帮助文档 all-in-1, chm格式,非常方便

    最新PostgreSQL15.2的帮助文档chm文件, 单个文件容易保存并且检索 , 使用起来非常方便。 自己纯手动制作。

    PostgreSQL(postgresql13-libs-13.5-1PGDG.rhel7.x86_64.rpm)

    PostgreSQL(postgresql13-libs-13.5-1PGDG.rhel7.x86_64.rpm)适用于RHEL/CentOS/Oracle Linux 7 - x86_64 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系...

    PostgreSQL(postgresql13-devel-13.5-1PGDG.rhel7.x86_64.rpm)

    PostgreSQL(postgresql13-devel-13.5-1PGDG.rhel7.x86_64.rpm)适用于RHEL/CentOS/Oracle Linux 7 - x86_64 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系...

    postgresql-9.1-903.jdbc3.jar

    postgresql-9.1-903.jdbc3.jar postgresql驱动

    postgresql-9.1.3-1-windows-x64

    例如,它可能指导用户如何运行“postgresql-9.1.3-1-windows-x64.exe”这个安装程序,包括设置数据目录、配置连接参数、创建第一个数据库超级用户等步骤。 安装过程中,用户需要注意的事项可能包括: - 确保系统...

Global site tag (gtag.js) - Google Analytics