주 서버PostgreSQL 핫 대기 WAL 파일 복원이 어떻게 트리거됩니까?
# postgresql.conf
wal_level = hot_standby
archive_mode = on
archive_timeout = 10
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
대기 서버
hot_standby = on
나는 대기 $PGDATA/pg_xlog
에 주 서버에 /archive/*
복사, 아무 일이 없다.
2016-11-21 17:56:09 CST [17762-3] LOG: invalid primary checkpoint record
2016-11-21 17:56:09 CST [17762-4] LOG: record with zero length at 0/6000100
2016-11-21 17:56:09 CST [17762-5] LOG: invalid secondary checkpoint record
2016-11-21 17:56:09 CST [17762-6] PANIC: could not locate a valid checkpoint record
2016-11-21 17:56:09 CST [17761-1] LOG: startup process (PID 17762) was terminated by signal 6: Aborted
2016-11-21 17:56:09 CST [17761-2] LOG: aborting startup due to startup process failure
질문 :
가 충분히 단순히에
$PGDATA/pg_xlog
에 주 서버에/archive/*
를 복사하여 대기 서버로 데이터를 동기화하는 것입니다 내가 대기 서버를 다시 시작하면, 나는 서버 로그에서 오류 메시지를 가지고 대기?상시 대기 서버에서 트리거되는 WAL 파일을 복원하는 방법과시기는 언제입니까? 대기 서버가 정기적으로 새로운 WAL 파일의
$PGDATA/pg_xlog
디렉토리를 확인합니까? 아니면 수동으로 트리거해야합니까? 나는 약 뜨거운 대기을 이야기하고하지 스트리밍 복제; 그래서 나는
conninfo
을 설정할 필요가 없다고 가정합니다. 내가 맞습니까?hot_standby = on
을 구성하고 서버를 다시 시작한 후에도 오류없이INSERT
을 계속 수행 할 수 있습니다. 정말로 읽기 전용으로 설정하려면 어떻게해야합니까?
단계 대기 모드를 만드는 단계는 다음과 같습니다. 1.'psql postgres -c "pg_start_backup ('backup')"'을 선택하십시오. 2. $ PGDATA 디렉토리를 대기 파일 시스템에 복사하십시오. 3.'psql postgres -c "pg_stop_backup()"'을 선택하십시오. 4.'postgresql.conf'에'hot_standby = on'을 설정하십시오. 5. postgresql 서버를 다시 시작하십시오. –
(fsync = on 인 경우) 좋아 보인다. 아마도 당신은 충분한 WAL 아카이브를 복사하지 않았을 것이고'backup_label'의 체크 포인트를 포함하고있는 아카이브는 존재하지 않을 것입니다. 'backup_label' 파일을 가지고 있습니까? 'START WAL LOCATION'항목을 읽고 해당 WAL 파일이 있는지 확인하십시오. –