18.3. 데이터베이스 서버 시작#

누구나 데이터베이스에 접근하려면 먼저 데이터베이스 토토 사이트 순위를 시작해야 합니다. 데이터베이스 토토 사이트 순위 프로그램이 호출됩니다.포스트그레스.

사전 패키지 버전을 사용하는 경우PostgreSQL, 여기에는 운영 체제 규칙에 따라 서버를 백그라운드 작업으로 실행하기 위한 조항이 포함되어 있는 것이 거의 확실합니다. 패키지의 인프라를 사용하여 서버를 시작하는 것은 직접 수행하는 방법을 알아내는 것보다 작업량이 훨씬 적습니다. 자세한 내용은 패키지 수준 문서를 참조하세요.

토토 사이트 순위를 수동으로 시작하는 기본적인 방법은 호출하는 것입니다.포스트그레스직접, 다음을 사용하여 데이터 디렉토리의 위치 지정-D옵션, 예:

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

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

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

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

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

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

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

pg_ctl start -l 로그 파일

백그라운드에서 토토 사이트 순위를 시작하고 출력을 명명된 로그 파일에 저장합니다.-D옵션은 여기서와 같은 의미를 갖습니다.포스트그레스. 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소스 배포.

    사용 시시스템, 다음 서비스 단위 파일을 사용할 수 있습니다(예:/etc/systemd/system/postgresql.service):

    [단위]
    설명=PostgreSQL 데이터베이스 서버
    문서=man:postgres(1)
    이후=network-online.target
    원하는=network-online.target
    
    [서비스]
    유형=알림
    사용자=포스트그레스
    ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
    ExecReload=/bin/kill -HUP $MAINPID
    킬모드=혼합
    KillSignal=SIGINT
    TimeoutSec=무한대
    
    [설치]
    WantedBy=다중 사용자.대상

    사용 중유형=통지토토 사이트 순위 바이너리가 빌드되어야 함구성 --with-systemd.

    시간 초과 설정을 신중하게 고려하십시오.시스템이 글을 쓰는 시점에서 기본 시간 제한은 90초이며 해당 시간 내에 준비 상태를 보고하지 않는 프로세스를 종료합니다. 하지만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데이터 디렉토리에 있습니다. 이는 여러 서버 인스턴스가 동일한 데이터 디렉터리에서 실행되는 것을 방지하는 데 사용되며 서버를 종료하는 데에도 사용할 수 있습니다.

18.3.1. 서버 시작 실패#

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

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

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

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

다음과 같은 메시지:

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

아마도 공유 메모리 크기에 대한 커널 제한이 작업 영역보다 작다는 것을 의미합니다포스트그레SQL이(이 예에서는 4011376640바이트) 생성을 시도 중입니다. 이는 다음과 같이 설정한 경우에만 발생할 수 있습니다.shared_memory_typesysv. 이 경우, 평소보다 적은 수의 버퍼로 토토 사이트 순위를 시작해 볼 수 있습니다(shared_buffers) 또는 허용되는 공유 메모리 크기를 늘리도록 커널을 재구성하세요. 요청된 총 공간이 커널 제한을 초과하는 경우 동일한 시스템에서 여러 서버를 시작하려고 할 때 이 메시지가 표시될 수도 있습니다.

다음과 같은 오류:

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

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

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

18.3.2. 클라이언트 연결 문제#

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

psql: 오류: "server.joe.com"(123.123.123.123)의 서버 연결, 포트 5432 실패: 연결이 거부되었습니다.
        서버가 해당 호스트에서 실행 중이고 TCP/IP 연결을 허용하고 있나요?

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

또는 로컬 서버에 Unix 도메인 소켓 통신을 시도할 때 다음을 얻을 수도 있습니다.

psql: 오류: "/tmp/.s.PGSQL.5432" 소켓의 서버 연결 실패: 해당 파일 또는 디렉터리가 없습니다.
        서버가 로컬에서 실행되고 해당 소켓에서 연결을 허용합니까?

토토 사이트 순위가 실제로 실행 중이라면 클라이언트의 소켓 경로 아이디어를 확인하십시오(여기/tmp)는 토토 사이트 순위의 내용에 동의합니다.unix_socket_directories설정.

연결 실패 메시지는 항상 서버 주소 또는 소켓 경로 이름을 표시하며 이는 클라이언트가 올바른 위치에 연결을 시도하고 있는지 확인하는 데 유용합니다. 실제로 수신 대기 중인 서버가 없는 경우 커널 오류 메시지는 일반적으로 다음 중 하나입니다.연결이 거부되었습니다.또는해당 파일이나 디렉터리가 없습니다, 그림과 같습니다. (이것을 깨닫는 것이 중요합니다.)연결이 거부되었습니다.이 문맥에서는 그렇습니다아님서버가 귀하의 연결 요청을 받고 거부했다는 의미입니다. 해당 경우에는 다음과 같이 다른 메시지가 생성됩니다.메이저 토토 사이트 : 문서 : 17 : 20.15. 인증 문제.) 다음과 같은 기타 오류 메시지연결 시간 초과네트워크 연결 부족이나 방화벽이 연결을 차단하는 등 보다 근본적인 문제를 나타낼 수 있습니다.

수정 사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.