내 노트북에서는 테스트용으로 MySQL과 PostgreSQL만 사용하고 있습니다. 프로그래밍을 시작할 때까지는 필요하지 않습니다. 프로그래밍을 시작하고 몇 시간이 지난 것 같습니다. 그러나 서비스를 수동으로 시작하고 sudo 비밀번호를 입력하는 것은 (사소한) 성가심이었습니다.
systemd는 서비스 포트에 액세스한 경우에만 서비스 시작을 지원한다는 것을 읽었습니다. 그러나 빠른 Google 검색에 따르면 PG와 MySQL은 아직 소켓 기반 활성화를 지원하지 않는 것으로 보입니다.
쉘 스크립트를 사용하여 이를 해킹하거나 관리자가 서비스를 수정할 때까지 기다릴 수 있다는 것을 알고 있지만 지금은 (교육 목적으로) 더 나은 방법을 찾고 있습니다.
질문:시스템 기능을 활용하거나 Linux "모범 사례"로 권장되는 방식으로 이러한 서비스를 요청 시 어떻게 시작할 수 있습니까?
몇 가지 생각:
- 조건(예: 실행 중인 특정 프로세스)에 따라 자동 시작 및 자동 중지 서비스를 처리하는 서비스를 설치할 수 있습니까?
- 소켓에 의해 활성화되고 대상 서비스를 차례로 시작하는 프록시 서비스가 있습니까?
시스템 229, 쿠분투 16.04, MySQL 5.7, PostgreSQL 9.5
업데이트: 답변:
Siosm에서 제안한 대로 systemd-socket-proxyd를 사용하는 방법:
/etc/mysql/mysql.conf.d/mysqld.cnf
port = 13306
/etc/systemd/system/proxy-to-mysql.socket
[Socket]
ListenStream=0.0.0.0:3306
[Install]
WantedBy=sockets.target
/etc/systemd/system/proxy-to-mysql.service
[Unit]
Requires=mysql.service
After=mysql.service
[Service]
# note: this path may vary
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:13306
PrivateTmp=no
PrivateNetwork=no
필요에 따라 다시 로드/중지/시작:
sudo systemctl daemon-reload
sudo systemctl enable proxy-to-mysql.socket
sudo systemctl start proxy-to-mysql.socket
sudo systemctl stop mysql.service # for testing
시험:
sudo systemctl status proxy-to-mysql.socket # should be ACTIVE
sudo systemctl status proxy-to-mysql # should be INACTIVE
sudo systemctl status mysql # should be INACTIVE
telnet 127.0.0.1 3306
sudo systemctl status proxy-to-mysql # should be ACTIVE
sudo systemctl status mysql # should be ACTIVE
답변1
이 systemd-socket-proxyd
도구를 사용하면 소켓 활성화를 통해 로컬 소켓에서 MySQL 또는 PostgreSQL로 트래픽을 전달할 수 있습니다. 바라보다systemd-소켓-프록시(8)예를 들어 이 답변을 읽어보세요.--user
systemd의 구체적인 예.
답변2
PostgreSQL 및 MySQL은 아직 소켓 기반 활성화를 지원하지 않습니다.
질문은 대답입니다. 더 나은 방법을 찾아 질문에 언급한 다음 구현되지 않았다고 밝혔습니다. Oracle은 소켓 활성화(실제로는 서버 프로그램에 관한 한 자체 파일을 여는 대신 열린 청취 파일 설명자를 사용함)가 구현되었지만 실제로는 아직 구현되지 않았다고 말하며 문제를 종결했습니다. MariaDB에는 아직 해결되지 않은 문제가 있습니다. PostgreSQL의 경우 Christoph Berg와 마찬가지로 구현을 기다리고 있습니다.
추가 읽기
- 조나단 데보인 폴라드(2016).nosh를 사용하는 MariaDB 및 MySQL. 소프트웨어.
- 데이비드 스트라우스(2014-01-17).시스템 소켓 활성화 지원. MDEV-5536. 마리아 데이터베이스.
- 하랄드 레들(2011-07-21).mysql/systemd 소켓 활성화. 61948.MySQL 버그 추적기.
- 크리스토프 버그(2016-01-28).[패치] 더 나은 시스템 통합. PostgreSQL 해커.