이 문서는 지원되지 않는 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.1 : 토토 사이트 추천 파일 유지 관리더 많은 정보를 원하시면 로그 파일 처리에 대해 자세히 논의합니다.)

포스트그레스프로그램은 또한 다른 명령줄 옵션의 수. 자세한 내용은 다음을 참조하세요.포스트그레스참조 페이지 및18장아래.

이 쉘 구문은 금방 지루해질 수 있습니다. 그러므로 래퍼 프로그램pg_ctl일부 단순화를 위해 제공됩니다. 작업. 예를 들면:

pg_ctl start -l 로그 파일

백그라운드에서 토토 캔를 시작하고 출력을 넣습니다. 명명된 로그 파일에 넣습니다.-D옵션 여기서는 for와 같은 의미입니다.포스트그레. pg_ctl또한 토토 캔를 중지할 수 있습니다.

일반적으로 다음과 같은 경우 데이터베이스 서버를 시작하려고 합니다. 컴퓨터 부츠. 자동 시작 스크립트는 운영 체제별로 다릅니다. 몇 가지가 함께 배포되었습니다.PostgreSQL에서contrib/start-scripts디렉토리. 하나 설치 루트 권한이 필요합니다.

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

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

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

  • FreeBSD, 좀 봐 파일contrib/start-scripts/freebsd에서PostgreSQL출처 배포.

  • 켜짐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에서PostgreSQL출처 배포.

  • 켜짐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), 하지만 결국에는 커널 제한을 늘리고 싶을 것입니다.

당신이 다음을 얻는다면"불법 시스템 전화해"오류, 공유 메모리 또는 세마포어는 커널에서 전혀 지원되지 않습니다. 그 안에 유일한 옵션은 커널을 재구성하여 활성화하는 것입니다. 이러한 기능을 제공합니다.

구성에 대한 세부정보시스템 뷔 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"의 연결?

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