当由 Galera Cluster for MariaDB 作为 wsrep_notify_cmd 运行时,Shell 脚本不起作用

问题描述 投票:0回答:1

我有一个简单的 shell 脚本,我试图用它来测试 Galera Cluster 的 MariaDB 节点状态更改通知机制,该脚本在 AWS Ubuntu 20.04 LTS 实例上运行。 该脚本是基于 Galera 提供的示例脚本的精简脚本:

#!/bin/sh -eu

echo "Node Status Change:" > /home/ubuntu/Dan/Notification.txt

while [ $# -gt 0 ]
do
   case $1 in
      --status)
         echo "  STATUS=$2" > /home/ubuntu/Notification.txt
         shift
         ;;
      --uuid)
         echo "  CLUSTER_UUID=$2" > /home/ubuntu/Notification.txt
         shift
         ;;
      --primary)
         echo "  PRIMARY=$2" > /home/ubuntu/Notification.txt
         shift
         ;;
      --index)
         echo "  INDEX=$2" > /home/ubuntu/Notification.txt
         shift
         ;;
      --members)
         echo "  MEMBERS=$2" > /home/ubuntu/Notification.txt
         shift
         ;;
         esac
         shift
   done

exit 0

当我自己从命令行运行此脚本时,它会按预期工作,并且 echo 命令参数会写入

/home/ubuntu/Notification.txt
。 但是,当 Galera 通知机制执行它时,它会失败(为简洁起见,删除了日期时间标头):

 /etc/mysql/scripts/wsrep_notify.sh: 3: cannot create /home/ubuntu/Dan/Notification.txt: Directory nonexistent

我以运行 MariaDB 的同一用户身份登录,并且

/home/ubuntu/Notification.txt
的权限为
-rw-rw-rw-

我尝试将

#!/bin/sh -eu
替换为
#!/bin/bash
,它也可以从命令行正确执行。 但是当 Galera 执行时会失败并出现以下错误:

/etc/mysql/scripts/wsrep_notify.sh: line 3: /home/ubuntu/Notification.txt: No such file or directory
/etc/mysql/scripts/wsrep_notify.sh: line 9: /home/ubuntu/Notification.txt: No such file or directory
/etc/mysql/scripts/wsrep_notify.sh: line 13: /home/ubuntu/Notification.txt: No such file or directory
/etc/mysql/scripts/wsrep_notify.sh: line 17: /home/ubuntu/Notification.txt: No such file or directory
/etc/mysql/scripts/wsrep_notify.sh: line 21: /home/ubuntu/Notification.txt: No such file or directory
/etc/mysql/scripts/wsrep_notify.sh: line 25: /home/ubuntu/Notification.txt: No such file or directory

这些错误非常相似,似乎这两种情况的根本原因是相同的,但我对这个原因可能是什么感到困惑。 脚本显然正在执行,因此脚本文件的安全性不是问题。

想法?

notifications mariadb galera
1个回答
0
投票

创建目录并使用同一目录两次怎么样?

if [[ ! -d /home/ubuntu/Dan ]]; then
    mkdir -p /home/ubuntu/Dan
fi
© www.soinside.com 2019 - 2024. All rights reserved.