无法让 Amplify 监控 MariaDB/mysql。amplify.agent.common.errors.AmplifySubprocessError

无法让 Amplify 监控 MariaDB/mysql。amplify.agent.common.errors.AmplifySubprocessError

我正在尝试让 amplify 监控在 raspberry pi 4 上运行的 ubuntu server 20.04 上的 mysql 数据库。我确信我已经正确设置了所有内容,并且已经将我的工作与许多互联网指南进行了交叉引用。但是,设置完成后,mysql 并未出现在 nginx amplify web 界面中。我的日志显示以下错误:

2022-08-08 10:32:41,134 [1824839] supervisor ps nginx output: ['   2074       1 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf', '1740162    2074 nginx: worker process', '1740163    2074 nginx: worker process', '1740165    2074 nginx: worker process', '1740166    2074 nginx: worker process', '1740168    2074 nginx: cache manager process', '']
2022-08-08 10:32:41,161 [1824839] supervisor nginx objects: ['5057a79cf47c63d99f326ae55fea2c99bc0e2dcfd6bc5cdc5492d770f0a55284']
2022-08-08 10:32:41,162 [1824839] supervisor status objects: []
2022-08-08 10:32:41,162 [1824839] supervisor api objects: []
2022-08-08 10:32:41,228 [1824839] supervisor failed to find running mysqld via "ps xao pid,ppid,command | grep -E 'mysqld( |$)'" due to AmplifySubprocessError
2022-08-08 10:32:41,228 [1824839] supervisor additional info:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/amplify/ext/mysql/managers.py", line 154, in _find_local
    ps, _ = (ps, None) if ps is not None else subp.call(PS_CMD)
  File "/usr/lib/python3/dist-packages/amplify/agent/common/util/subp.py", line 34, in call
    raise AmplifySubprocessError(message=command, payload=dict(returncode=process.returncode, error=raw_err))
amplify.agent.common.errors.AmplifySubprocessError: (message=ps xao pid,ppid,command | grep -E 'mysqld( |$)', payload={'returncode': 1, 'error': ''})
2022-08-08 10:32:41,229 [1824839] supervisor mysql objects: []

有人了解这些错误吗?你能帮助我修复它们以使 mariaDB 出现在 Nginx Amplify 上吗?

答案1

mariadb 守护进程称为“mariadbd”,而 amplify-agent 正在寻找“mysqld”。

如果你跑

systemctl status mariadb

然后以“loaded”开头的行应该包含服务文件的位置

Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)

在本例中,它是“/lib/systemd/system/mariadb.service”。在文本编辑器中打开该文件,找到以

ExecStart=

然后将路径从指向“mariadbd”更改为“mysqld”。然后您需要重新加载守护程序并重新启动服务。

systemctl daemon-reload
systemctl restart mariadb
systemctl restart amplify-agent

代理现在应该能够找到该进程。

答案2

为了解决这个问题并让 MariaDB 出现在 Amplify 中,我做了以下操作:

  1. systemctl status mariadb

    ● mariadb.service - MariaDB 10.10.3 数据库服务器已加载:已加载(/lib/systemd/system/mariadb.service;已启用;供应商预设:已启用)

这显示了服务文件的位置/lib/systemd/system/mariadb.service

  1. readlink -f /usr/sbin/mysqld显示 /usr/sbin/mysqld 是指向 的符号链接/usr/sbin/mariadbd

  2. 使用文本编辑器打开服务文件/lib/systemd/system/mariadb.service

  3. 找到以ExecStart=

ExecStart=/usr/sbin/mariadbd $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION

并将路径从 更改/usr/sbin/mariadb/usr/sbin/mysqld

所以它看起来像:

ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION

保存文件并运行:

sudo systemctl daemon-reload
sudo systemctl restart mariadb
sudo systemctl restart amplify-agent

Mariadb 现在应该出现在 Nginx Amplify 中。

相关内容