이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 18.3. 데이터베이스 스포츠 토토 베트맨 시작버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

17.3. 데이터베이스 토토 결과 시작

누구나 데이터베이스에 접근하기 전에, 데이터베이스 토토 결과를 시작해야 합니다. 데이터베이스 토토 결과 프로그램이 호출됩니다.포스트그레.포스트그레스프로그램은 사용하려는 데이터를 어디서 찾을 수 있는지 알아야 합니다. 이는 다음과 같이 수행됩니다.-D옵션. 따라서 서버를 시작하는 가장 간단한 방법은 다음과 같습니다.

$ postgres -D /usr/local/pgsql/data

토토 결과가 포그라운드에서 실행되도록 합니다. 이 작업은 로그인된 동안 수행되어야 합니다.PostgreSQL사용자 계정. 없이-D, 토토 결과는 환경 변수로 명명된 데이터 디렉터리를 사용하려고 시도합니다.PGDATA. 해당 변수도 제공되지 않으면 실패합니다.

일반적으로 시작하는 것이 좋습니다포스트그레백그라운드에서. 이를 위해 일반적인 Unix 셸 구문을 사용합니다.

$ postgres -D /usr/local/pgsql/data 로그 파일 2&1 &

서버의 정보를 저장하는 것이 중요합니다.stdout그리고stderr위 그림과 같이 어딘가에 출력됩니다. 이는 감사 목적과 문제 진단에 도움이 됩니다. (참조PostgreSQL : 문서 : 9.5 : 토토 결과 파일 유지 관리로그 파일 처리에 대한 더 자세한 논의를 원하시면.)

포스트그레프로그램은 또한 다양한 명령줄 옵션을 사용합니다. 자세한 내용은 다음을 참조하세요.포스트그레참조 페이지 및토토 사이트 : 문서 : 9.5 : 서버 구성아래.

이 쉘 구문은 금방 지루해질 수 있습니다. 따라서 래퍼 프로그램pg_ctl11576_11627

pg_ctl start -l 로그 파일

백그라운드에서 토토 결과를 시작하고 출력을 명명된 로그 파일에 저장합니다. 그만큼-D옵션은 여기서와 같은 의미를 가집니다.포스트그레스. pg_ctl또한 토토 결과를 중지할 수 있습니다.

일반적으로 컴퓨터가 부팅될 때 데이터베이스 토토 결과를 시작하려고 합니다. 자동 시작 스크립트는 운영 체제별로 다릅니다. 몇 가지가 함께 배포되었습니다.포스트그레SQL에서contrib/start-scripts디렉토리. 설치하려면 루트 권한이 필요합니다.

시스템마다 부팅 시 데몬을 시작하는 규칙이 다릅니다. 많은 시스템에 파일이 있습니다./etc/rc.local또는/etc/rc.d/rc.local. 다른 사람들은 사용함init.d또는rc.d디렉터리. 무엇을 하든 서버는 다음에 의해 실행되어야 합니다.포스트그레SQL사용자 계정루트가 아님또는 다른 사용자. 그러므로 아마도 다음을 사용하여 명령을 작성해야 할 것입니다.su postgres -c '...'. 예를 들면:

su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'

다음은 운영 체제별 몇 가지 제안 사항입니다. (각 경우에 일반 값이 표시되는 적절한 설치 디렉터리와 사용자 이름을 사용해야 합니다.)

  • FreeBSD, 파일을 보세요contrib/start-scripts/freebsd에서포스트그레SQL소스 배포.

  • 켜짐OpenBSD, 파일에 다음 줄을 추가합니다./etc/rc.local:

    if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; 그럼
        su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data'
        에코 -n 'postgresql'
    fi
  • 켜짐리눅스시스템 추가

    /usr/local/pgsql/bin/pg_ctl start -l 로그 파일 -D /usr/local/pgsql/data

    /etc/rc.d/rc.local또는/etc/rc.local또는 파일을 보세요contrib/start-scripts/linux에서포스트그레SQL소스 배포.

  • 켜짐NetBSD, 다음 중 하나를 사용하세요.FreeBSD또는리눅스기본 설정에 따라 스크립트를 시작합니다.

  • 켜짐솔라리스,이라는 파일을 생성하세요/etc/init.d/postgresql다음 줄이 포함되어 있습니다:

    su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l 로그 파일 -D /usr/local/pgsql/data"

    그런 다음 여기에 심볼릭 링크를 생성하십시오./etc/rc3.dasS99postgresql.

토토 결과가 실행되는 동안, 그PID파일에 저장되어 있습니다postmaster.pid데이터 디렉토리에 있습니다. 이는 여러 서버 인스턴스가 동일한 데이터 디렉터리에서 실행되는 것을 방지하는 데 사용되며 서버를 종료하는 데에도 사용할 수 있습니다.

17.3.1. 토토 결과 시작 실패

서버가 시작되지 않는 데에는 몇 가지 일반적인 이유가 있습니다. 서버의 로그 파일을 확인하거나 표준 출력이나 표준 오류를 리디렉션하지 않고 직접 시작하여 어떤 오류 메시지가 나타나는지 확인하세요. 아래에서는 가장 일반적인 오류 메시지 중 일부를 자세히 설명합니다.

로그: IPv4 소켓을 바인딩할 수 없습니다: 주소가 이미 사용 중입니다.
힌트: 다른 포스트마스터가 이미 포트 5432에서 실행되고 있습니까? 그렇지 않은 경우 몇 초 정도 기다렸다가 다시 시도하십시오.
치명적: TCP/IP 청취 소켓을 생성할 수 없습니다.

이것은 일반적으로 제안된 그대로를 의미합니다: 이미 실행 중인 동일한 포트에서 다른 서버를 시작하려고 했습니다. 그러나 커널 오류 메시지가 그렇지 않은 경우이미 사용 중인 주소또는 그 변형의 경우 다른 문제가 있을 수 있습니다. 예를 들어, 예약된 포트 번호에서 서버를 시작하려고 하면 다음과 같은 결과가 나타날 수 있습니다.

$ postgres -p 666로그: IPv4 소켓을 바인딩할 수 없습니다: 권한이 거부되었습니다.
힌트: 다른 포스트마스터가 이미 포트 666에서 실행되고 있습니까? 그렇지 않은 경우 몇 초 정도 기다렸다가 다시 시도하십시오.
치명적: TCP/IP 청취 소켓을 생성할 수 없습니다.

다음과 같은 메시지:

치명적: 공유 메모리 세그먼트를 생성할 수 없음: 잘못된 인수
세부 사항: 실패한 시스템 호출은 shmget(key=5440001, size=4011376640, 03600)입니다.

아마도 공유 메모리 크기에 대한 커널 제한이 작업 영역보다 작다는 의미입니다.PostgreSQL이(이 예에서는 4011376640바이트) 생성을 시도 중입니다. 또는 커널에 System-V 스타일 공유 메모리 지원이 전혀 구성되어 있지 않음을 의미할 수도 있습니다. 임시 해결 방법으로 평소보다 적은 수의 버퍼로 서버를 시작해 볼 수 있습니다(shared_buffers). 결국에는 허용되는 공유 메모리 크기를 늘리기 위해 커널을 재구성하고 싶을 것입니다. 요청된 총 공간이 커널 제한을 초과하는 경우 동일한 시스템에서 여러 서버를 시작하려고 할 때 이 메시지가 표시될 수도 있습니다.

다음과 같은 오류:

치명적: 세마포어를 생성할 수 없음: 기기에 남은 공간이 없습니다.
세부 사항: 실패한 시스템 호출은 semget(5440126, 17, 03600)입니다.

그렇습니다아님디스크 공간이 부족하다는 의미입니다. 이는 커널의 개수 제한을 의미합니다.시스템 V세마포어가 숫자보다 작습니다.PostgreSQL생성을 원합니다. 위와 같이 허용되는 연결 수를 줄여 토토 결과를 시작하면 문제를 해결할 수 있습니다(max_connections), 하지만 결국에는 커널 제한을 늘리고 싶을 것입니다.

당신이 다음을 얻는다면"잘못된 시스템 호출"오류, 공유 메모리나 세마포어가 커널에서 전혀 지원되지 않을 가능성이 있습니다. 이 경우 유일한 옵션은 이러한 기능을 활성화하도록 커널을 재구성하는 것입니다.

구성에 대한 세부정보시스템 V IPC시설은 다음에 제공됩니다.섹션 17.4.1.

17.3.2. 클라이언트 연결 문제

클라이언트 측에서 발생할 수 있는 오류 조건은 매우 다양하고 응용 프로그램에 따라 다르지만 그 중 일부는 서버가 시작된 방법과 직접적인 관련이 있을 수 있습니다. 아래 표시된 조건 이외의 조건은 해당 클라이언트 애플리케이션에 문서화되어야 합니다.

psql: 서버에 연결할 수 없습니다: 연결이 거부되었습니다.
        서버가 "server.joe.com" 호스트에서 실행 중이고 수락합니까?
        포트 5432의 TCP/IP 연결?

이것은 일반적인 내용입니다"대화할 토토 결과를 찾을 수 없습니다"실패. TCP/IP 통신을 시도하면 위와 같습니다. 일반적인 실수는 TCP/IP 연결을 허용하도록 토토 결과를 구성하는 것을 잊어버리는 것입니다.

또는 로컬 서버에 Unix 도메인 소켓 통신을 시도할 때 다음 메시지가 표시됩니다:

psql: 서버에 연결할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.
        서버가 로컬에서 실행 중이고 수락합니까?
        Unix 도메인 소켓 "/tmp/.s.PGSQL.5432"의 연결?

마지막 줄은 클라이언트가 올바른 위치에 연결을 시도하고 있는지 확인하는 데 유용합니다. 실제로 실행 중인 서버가 없는 경우 커널 오류 메시지는 일반적으로 다음 중 하나입니다.연결이 거부되었습니다.또는해당 파일이나 디렉터리가 없습니다, 그림과 같습니다. (이것을 깨닫는 것이 중요합니다.)연결이 거부되었습니다.이 맥락에서는아님서버가 귀하의 연결 요청을 받고 거부했다는 의미입니다. 해당 경우에는 다음과 같이 다른 메시지가 생성됩니다.토토 : 문서 : 9.5 : 인증 문제.) 다음과 같은 기타 오류 메시지연결 시간 초과네트워크 연결 부족과 같은 보다 근본적인 문제를 나타낼 수 있습니다.