ソケットを介してローカルのMySQLサーバーに接続できません。

ソケットを介してローカルのMySQLサーバーに接続できません。

debian9の対話型非ログシェル(グラフィックモード)のすべてのコマンド。
mysqlを再起動または終了する前にバックアップしたいと思います。

who 
test tty7         2018-02-01 18:26 (:0)
test@world:~$ pwd
/home/test

これで、次の3つのコマンドで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'

これら3つのコマンドはtest.serviceに含まれるのではなく、端末で実行できます。再起動またはシャットダウン時にすべてのmysqlデータDBをバックアップするサービスをどのように作成できますか?

ベストアンサー1

まず、.LookのExecStop=/bin/bash /home/test/test.sh代わりに使用してください。ExecStartシャットダウンする前にsystemdを使用してスクリプトを実行する方法は?より多くの情報を知りたいです。おそらくmysqlが完全に起動する前に起動時にスクリプトを実行しているようです。

次に、After=mariadb.servicemysqlを閉じる前にスクリプトを実行するように追加することを検討してください。終了順序を考慮すると、すべてが逆であることを覚えておいてください。

おすすめ記事