我有$PGDATA = home / postgresql / 9.1 / data
和$STANDBY = home / postgresql / 9.1 / data2
>设置两个节点:
initdb -D $PGDATA
initdb -D $STANDBY
>在主节点中创建用于复制的用户.我在pgAdmin中执行此操作(它具有超级用户权限)
>在pg_hba.conf中的主节点中添加允许待机连接的部分:
主机复制repuser 127.0.0.1/0 md5
>在postgresql.conf中的主节点中设置:
max_wal_senders = 1
archive_mode = on
archive_command =’cp%p~ / postgresql / backup / archivedir /%f’
wal_level = archive
wal_keep_segments = 32
>启动主节点并执行基本备份:
psql -d dellstore2 -c“SELECT pg_start_backup(‘backup for replication’,true)”
rsync -av ${PGDATA} / $STANDBY –exclude postmaster.pid
psql -d dellstore2 -c“select pg_stop_backup()”
pg_stop_backup说一切都很好,所有的WAL文件都归档了
>在standby(data2)节点中,我使用以下命令创建recovery.conf:
standby_mode =’on’
primary_conninfo =’host = 127.0.0.1 port = 5432 user = repuser password = haslo’
trigger_file =’/ home /michau / postgresql / replication.trigger’
restore_command =’cp / home / michau / postgresql / backup / archivedir /%f“%p”’
>启动主节点,然后启动备用节点 – 复制应该启动,备用应该赶上主节点.这正是第一次发生的事情.
现在,当我启动待机时,我得到:“地址已在使用中”错误.
当然,standby和master都有相同的postgresql.conf中指定的端口(它们具有完全相同的postgresql.conf文件).如果我在待机状态下更改端口让我们说5433然后我得到:
日志:数据库系统在2012-06-12 19:48:01 CEST恢复关闭
日志:进入待机模式
cp:不能stat / home / michau / postgresql / backup / archivedir / 000000010000000000000007:没有这样的文件或目录
日志:在0/7000070达到一致的恢复状态
日志:记录零长度为0/7000070
cp:不能stat / home / michau / postgresql / backup / archivedir / 000000010000000000000007:没有这样的文件或目录
日志:流式复制成功连接到主要
日志:重做从0/7000070开始
它只是挂在这里.运行ps -ef | grep postgresql产量:
michau 2491 1898 0 19:46 pts / 0 00:00:00 postgres -D /home/michau/postgresql/9.1/data
michau 2493 2491 0 19:46? 00:00:01 postgres:作家流程
michau 2494 2491 0 19:46? 00:00:00 postgres:沃尔玛作家流程
michau 2495 2491 0 19:46? 00:00:00 postgres:autovacuum启动程序进程
michau 2496 2491 0 19:46? 00:00:00 postgres:归档进程最后是000000010000000000000008
michau 2497 2491 0 19:46? 00:00:00 postgres:stats收集器进程
michau 2571 2214 0 19:49 pts / 1 00:00:00 postgres -D /home/michau/postgresql/9.1/data2
michau 2572 2571 0 19:49? 00:00:01 postgres:启动过程恢复000000010000000000000009
michau 2575 2571 0 19:49? 00:00:01 postgres:作家流程
michau 2578 2571 0 19:49? 00:00:02 postgres:沃尔接收器进程流0 / 99782DC
michau 2579 2491 0 19:49? 00:00:00 postgres:wal sender process repuser 127.0.0.1(42142)streaming 0 / 99782DC
michau 2586 2491 0 19:51? 00:00:00 postgres:michau postgres :: 1(49941)闲置
michau 2587 2491 0 19:51? 00:00:01 postgres:michau dellstore2 :: 1(49942)闲置
恢复0000000010000009在哪里改变了一段时间,但是半小时它就不再了.
我确信我第一次必须做的事情并没有写下来或其他什么,但我完全不知道它是什么.我将不胜感激任何帮助.
解决方法
我尝试将您的步骤与此站点中发布的步骤合并
http://www.debian-administration.org/article/How_to_setup_Postgresql_9.1_Streaming_Replication_Debian_Squeeze
除了您发布的步骤之外,我还从我提供的网站添加了2个步骤.这两个步骤如下:
>在从主服务器rsync之前删除备用服务器中的所有文件和文件夹.>在master的postgresql.conf中,将wal_level设置为hot_standby而不是archive,并将hot_standby设置为on.