我有$PGDATA = home/postgresql/9.1/data和$STANDBY = home/postgresql/9.1/data2
1.设置两个节点: initdb -D $PGDATA initdb -D $STANDBY
2.在主节点中创建一个用于复制的用户。我在pgAdmin中完成(它具有超级用户特权)。 3.在主节点的pg_hba.conf中添加允许备用连接的部分: host replication repuser 127.0.0.1/0 md5
4.在主节点的postgresql.conf中设置: max_wal_senders = 1 archive_mode = on archive_command = 'cp %p ~/postgresql/backup/archivedir/%f' wal_level = archive wal_keep_segments = 32
5.启动主节点并进行基本备份: 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文件都已存档。
6.在备用(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"'
7.启动主节点,然后启动备用节点-复制应该开始,并且备用节点应该赶上主节点。这正是第一次发生的事情。 现在,当我启动备用时,我收到“地址已在使用”的错误。当然,备用和主服务器在postgresql.conf中指定了相同的端口(它们具有完全相同的postgresql.conf文件)。如果我将备用端口更改为5433,那么我会得到:
日志:数据库系统在2012-06-12 19:48:01 CEST时处于恢复状态下关闭
日志:进入热备模式
cp:无法查找/home/michau/postgresql/backup/archivedir/000000010000000000000007文件或目录
日志:一致的恢复状态已经达到0/7000070
日志:0/7000070位置上记录长度为零
cp:无法查找/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: writer process
michau 2494 2491 0 19:46 ? 00:00:00 postgres: wal writer process
michau 2495 2491 0 19:46 ? 00:00:00 postgres: autovacuum launcher process
michau 2496 2491 0 19:46 ? 00:00:00 postgres: archiver process last was 000000010000000000000008
michau 2497 2491 0 19:46 ? 00:00:00 postgres: stats collector process
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: startup process recovering 000000010000000000000009
michau 2575 2571 0 19:49 ? 00:00:01 postgres: writer process
michau 2578 2571 0 19:49 ? 00:00:02 postgres: wal receiver process streaming 0/99782DC
michau 2579 2491 0 19:49 ? 00:00:00 postgres: WAL发送进程repuser 127.0.0.1(42142) 流式传输 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一度在变化,但已经半个小时没有变化了。
我确定第一次肯定做了什么事情,但没有记录下来或者其他什么原因,我完全不知道是什么。希望能得到任何帮助。