Windows에서 PostgreSQL 서버 시작

Bilal Shahid 2023년6월20일
  1. Windows의 기본 PG_CTL 초기화 명령
  2. SERVICES.MSC를 사용하여 Windows에서 PostgreSQL 세션을 START/STOP
Windows에서 PostgreSQL 서버 시작

오늘은 Windows에서 PostgreSQL 서버를 시작하는 방법을 배우겠습니다. Windows에서 PostgreSQL 다운로드 및 설치에 대한 이전 기사에서 우리는 이미 세션 시작, USER 생성, 쿼리 실행 및 다양한 데이터베이스 개체 작업 방법을 배웠습니다.

우리의 주제는 이제 로컬 시스템의 다른 사용자가 연결할 수 있는 PostgreSQL 서버 세션을 실행하는 데 중점을 둡니다.

Windows의 기본 PG_CTL 초기화 명령

PG_CTL은 PostgreSQL 서버를 시작하고 제어하는 데 사용되는 유틸리티입니다. PG_CTL은 제어된 종료를 제공하고 다양한 작업을 캡슐화하며 데이터베이스와 관련된 다양한 작업에 사용할 수 있으므로 PostgreSQL 세션을 초기화하기 위한 수동 설정입니다.

Windows에서 서버를 시작하려면 BIN 폴더에 대한 PostgreSQL 설치 내부의 명령 프롬프트로 이동합니다.

pg_ctl start -D "[\data folder directory]";

그러면 PostgreSQL 서버가 시작됩니다. 다른 사용자가 듣게 하려는 컴퓨터의 다른 포트에서 이 작업을 수행하려면 다음과 같이 쿼리를 사용하십시오.

pg_ctl -o "-F -p [post_number]" start

대괄호 없이 정의된 port_numberPORT NUMBER를 입력합니다. 이렇게 하면 서버를 시작하고 다른 사용자가 다른 시스템에서 서버에 연결할 수 있습니다.

그러나 이유나 약간의 오작동으로 인해 PostgreSQL 서버가 중지된 경우 다음 명령 중 하나를 사용하여 작동시키는 것이 좋습니다.

pg_ctl restart -D "[\data folder];
pg_ctl start company; --may or may not work / may produce errors
...

여러 번 이러한 작업을 수행할 필요가 없습니다. 예를 들어 PGADMIN을 시작하면 PC의 미리 정의된 포트에서 이미 PostgreSQL 세션을 생성하여 다른 사용자가 쉽게 찾을 수 있습니다.

PostgreSQL 서버를 부팅하기 위해 위에 제공된 명령을 작성할 필요가 없을 수도 있습니다.

Windows에서 PG_CTL START/RESTART를 실행하는 동안 경로 지정

때로는 간단한 PG_CTL START/RESTART를 호출하는 것이 좋은 방법이 아닙니다. PostgreSQL 설치 내에서 DATA 폴더 경로를 지정한 다음 부팅 명령을 실행해야 할 수도 있습니다.

위에 주어진 쿼리를 호출하면 OUTPUT이 표시됩니다.

출력:

pg_ctl: another server might be running; trying to start server anyway
waiting for server to start....2022-04-28 19:28:38.766 PKT [3228] LOG:  redirecting log output to logging collector process
2022-04-28 19:28:38.766 PKT [3228] HINT:  Future log output will appear in directory "log".
 stopped waiting
pg_ctl: could not start server
Examine the log output.

위에 주어진 출력은 PostgreSQL 서버가 이미 실행 중일 때 발생합니다. 이미 PGADMIN이 부팅되어 백그라운드에서 실행 중이기 때문에 위의 쿼리를 호출하면 이미 사용 중인 포트에서 서버를 초기화할 수 없습니다.

그러나 아래 작업을 수행하면 동일한 PC에서 별도의 서버가 실행됩니다.

pg_ctl -o "-F -p 5656" start -D "C:\Program Files\PostgreSQL\14\data"

출력:

waiting for server to start....2022-04-28 19:34:04.588 PKT [11784] LOG:  redirecting log output to logging collector process
2022-04-28 19:34:04.588 PKT [11784] HINT:  Future log output will appear in directory "log".
 done
server started

마찬가지로 RESTART에 대해 동일한 명령을 실행할 수도 있습니다.

pg_ctl restart -D "C:\Program Files\PostgreSQL\14\data"

or

pg_ctl -o "-F -p 5656" restart -D "C:\Program Files\PostgreSQL\14\data"

출력:

waiting for server to shut down.... done
server stopped
waiting for server to start....2022-04-28 19:35:46.007 PKT [884] LOG:  redirecting log output to logging collector process
2022-04-28 19:35:46.007 PKT [884] HINT:  Future log output will appear in directory "log".
 done
server started

출력에서 서버가 이미 실행 중이기 때문에 먼저 종료된 다음 다시 시작되고 세션 동안 변경 사항에 대해 기록되는 방법을 확인할 수 있습니다.

SERVICES.MSC를 사용하여 Windows에서 PostgreSQL 세션을 START/STOP

PostgreSQL 서버는 PSQL 또는 PGADMIN에서 시작할 때 PC에서 인스턴스화된다는 것을 이미 알고 있습니다. SERVICES.MSC에서 STOPPED 또는 PAUSED 서비스인 Windows 서비스 관리자에서 몇 가지 작업을 수행할 수 있습니다.

  1. Windows+R를 누르고 SERVICES.MSC를 입력합니다.

  2. Windows 서비스 관리자가 열리면 목록에서 PostgreSQL 서버 서비스를 검색합니다. 다음과 같이 이름을 지정할 수 있습니다. postgresql-x64-14 - PostgreSQL Server 14.

    Windows 서비스 관리자

  3. 이를 마우스 오른쪽 버튼으로 클릭하여 서버 시작, 중지, 일시 중지, 재개 또는 재시작합니다. 다음에 자동으로 시작되도록 시작 시간을 AUTOMATIC으로 변경할 수도 있습니다.

서비스 관리자는 또한 특정 서비스의 실패 원인을 알려주는 경향이 있습니다. 실행 경로를 보려면 일반 탭을 열고 다음과 같이 볼 수 있습니다.

일반 탭

COMMAND PROMPT에서 NET START를 사용하여 PostgreSQL 서버를 시작합니다.

NET START 명령을 사용하여 명령 프롬프트에서 서비스를 시작할 수 있습니다. 구문은 다음과 같습니다.

NET START [service_name]

PostgreSQL 세션에 대한 SERVICE_NAME을 찾아야 할 수도 있습니다. 일반 탭에서도 언급됩니다.

일반 서비스 이름

이제 다음과 같이 명령을 내릴 수 있습니다.

net start postgresql-x64-14;

이렇게 하면 서버가 부팅되고 다음과 같이 출력이 표시됩니다.

출력:

The postgresql-x64-14 - PostgreSQL Server 14 service is starting.
The postgresql-x64-14 - PostgreSQL Server 14 service was started successfully.

그러나 COMMAND PROMPT는 일반 사용자가 아닌 ADMINISTRATOR로 시작해야 합니다.

CMD.EXE 실행 파일을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 클릭합니다. 그렇지 않으면 다음과 같은 오류가 발생합니다.

출력:

System error 5 has occurred.

Access is denied.

그래서 오늘은 다양한 방법으로 Windows에서 PostgreSQL 서버를 시작하는 방법을 배웠습니다. 이 기사를 주의 깊게 읽고 필요에 따라 사용할 수 있기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub