![소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.](https://linux55.com/image/126809/%EC%86%8C%EC%BC%93%EC%9D%84%20%ED%86%B5%ED%95%B4%20%EB%A1%9C%EC%BB%AC%20MySQL%20%EC%84%9C%EB%B2%84%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
debian9의 대화형 비로그인 셸(그래픽 모드)에 있는 모든 명령입니다.
mysql을 다시 시작하거나 종료하기 전에 백업하고 싶습니다.
who
test tty7 2018-02-01 18:26 (:0)
test@world:~$ pwd
/home/test
이제 다음 세 가지 명령으로 mysql 데이터베이스를 백업할 수 있습니다.
USERNAME="xxxx"
PASSWORD="yyyy"
mysqldump -u root -p${PASSWORD} database > /home/test/wp.sql.bak
다시 시작하거나 종료할 때까지 실행되는 서비스를 만듭니다.
vim /etc/systemd/system/test.service
[Unit]
Description=Run command at shutdown
Before=shutdown.target reboot.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/bash /home/test/test.sh
[Install]
WantedBy=multi-user.target
test.sh 파일.
cat /home/test/test.sh
USERNAME="xxxx"
PASSWORD="yyyy"
mysqldump -u root -p${PASSWORD} database > /home/test/wp.sql.bak
서비스를 활성화합니다.
sudo systemctl enable test.service
sudo reboot
이제 로그인이 아닌 대화형 셸(그래픽 모드)에 로그인합니다.
sudo systemctl enable test.service
-- Logs begin at Thu 2018-02-01 18:26:04 HKT, end at Thu 2018-02-01 18:27:23 HKT. --
Feb 01 18:26:13 world systemd[1]: Starting Run command at shutdown...
Feb 01 18:26:18 world bash[480]: mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")"
Feb 01 18:26:19 world systemd[1]: test.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Feb 01 18:26:19 world systemd[1]: Failed to start Run command at shutdown.
Feb 01 18:26:19 world systemd[1]: test.service: Unit entered failed state.
Feb 01 18:26:19 world systemd[1]: test.service: Failed with result 'exit-code'
이 세 가지 명령은 test.service에 포함되는 대신 터미널에서 실행할 수 있습니다. 다시 시작하거나 종료할 때 모든 mysql 데이터 DB를 백업하는 서비스를 어떻게 작성할 수 있습니까?
답변1
먼저 .Look ExecStop=/bin/bash /home/test/test.sh
대신 사용하세요.ExecStart
종료하기 전에 systemd를 사용하여 스크립트를 실행하는 방법은 무엇입니까?더 많은 정보를 알고 싶습니다. 아마도 mysql이 완전히 시작되기 전에 시작 시 스크립트를 실행하는 것 같습니다.
둘째, After=mariadb.service
mysql을 닫기 전에 스크립트가 실행되도록 추가하는 것을 고려하십시오. 종료 순서를 고려할 때 모든 것이 반대라는 점을 기억하십시오.
답변2
[Unit]
Description=Run command at shutdown
Before=shutdown.target reboot.target
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/bin/bash /home/test/test.sh
[Install]
WantedBy=multi-user.target
Debian9은 mysql 대신 mariadb입니다.