【MySQL Router】使用 systemd 管理 MySQL Router
创始人
2024-03-14 12:15:54
0

使用 systemd 管理 MySQL Router

文章目录

  • 使用 systemd 管理 MySQL Router
    • 排错过程
      • 升级操作系统内核
      • 未修改相关文件的属主,直接用 mysqlrouter 重新引导
      • 配置操作系统 limit 相关参数
      • 用户及其权限问题
    • 结语

在之前的文章 【 InnoDB Cluster 】安装部署 MySQL Router 中介绍了如何安装、部署 MySQL Router ,当时遇到一个问题,MySQL Router 部署好后无法使用 systemd 来启动,会报如下错误:
图1 systemd 启动 mysqlrouter 报错
图1 systemd 启动 mysqlrouter 报错

当时我以为是 systemd 版本过低的问题,升级了还是报错,就怀疑是操作系统内核太低的问题。今天验证了一下,其实是引导 MySQL Router 所用的操作系统用户及其权限的问题。后面我在 MySQL Router 的文档里找到了相关介绍——配置文件选项 user 。所以,有时间的话,还是应先看书学习理论(对于 MySQL 也可说是先看说明书),再实践操作。

排错过程

升级操作系统内核

使用 Yum 仓库包升级操作系统内核至 kernel-3.10.0-1160.80.1.el7.x86_64 版本,并删除旧的内核和 RPM 包,最后重启。

yum upgrade -y kernel*
#查看已安装的内核 RPM 包
rpm -qa|grep kernel
#移除旧的内核
kernel-install remove 旧的内核名称
rpm -e 旧的内核名称

然后重启。如想了解详细信息,请关注我后面的文章。

图2 最终效果
最终效果
重启后发现还是报错,证明不是它的问题。

未修改相关文件的属主,直接用 mysqlrouter 重新引导

然后我立即想到是引导时使用的操作系统账户的问题,因为当时提示了不能使用 superuser root 来引导,如果非要这么做,请指定--user=root,然后我当时就这么做了。

但重新引导后查看systemctl status mysqlrouter仍然报同样的错误,这让我很困惑,所以怀疑到打开文件数的 limit 上去了。直到使用journalctl -xe查看报错消息(当时并没有想到这),才确定是用户权限问题。

journalctl 报错
然后我试着修改了一些文件的属主为mysqlrouter:myqlrouter,再次journalctl -xe发现报错不同了。
在这里插入图片描述
搜索相关报错信息并没有找到明确的解决办法,但发现有几个网页里最终发现都是权限、属主问题,再次印证了我的想法。

配置操作系统 limit 相关参数

看到报错中有 start-limit ,怀疑是配置操作系统 limit 相关参数中 openfiles 导致的。

ulimit -n -u
ulimit -n 1024000

ulimit -n -u

vim /etc/security/limits.conf
#末尾添加
# “-”表示soft和hard都配置为相同值
*       -       nofile  1024000
*       -       nproc   1024000

limits.conf

结果还是不行,也不是它的问题。

用户及其权限问题

查询包含 mysqlrouter 关键字的文件:

find / -name mysqlrouter

find
分别查看各文件及文件夹的属主、权限后,发现属主有些为 mysqlrouter ,有些为 root ,而我并没有手动创建 mysqlrouter 账户,故应该是安装它时自动创建的。

那么我们看一下服务程序是否有问题,这里是/usr/lib/systemd/system/mysqlrouter.service

vim /usr/lib/systemd/system/mysqlrouter.service

发现默认是 mysqlrouter,问题原因找到了!

注意
此处注释中的 root 是我后加的,而非原来就有的。

默认是 mysqlrouter

此时,有两种解决方案:

  1. 重新使用选项--user=mysqlrouter引导 MySQL Router 。这是推荐的方案。
    重新引导前,必须先将 mysqlrouter 相关的文件属主修改为 mysqlrouter 才行。建议使用上面的find命令查找出的结果,结合经验和文件名称、作用,对怀疑的文件或文件夹逐个尝试修改属主。

    mysqlrouter --bootstrap ic_admin@ic-source:3306 --account=myRouter1 --user=mysqlrouter
    

    使用 mysqlrouter 重新引导
    然后修改/etc/mysqlrouter目录的属主。

    chown -R mysqlrouter:mysqlrouter /etc/mysqlrouter
    

    启动 mysqlrouter

  2. mysqlrouter 替换为 root ,改完保存后执行systemctl daemon-reload,再使用systemctl start mysqlrouter即可成功启动。

    vim /usr/lib/systemd/system/mysqlrouter.service
    

    vim mysqlrouter.service 改完mysqlrouter.service 后重载、启动 mysqlrouter

结语

造成此问题的原因是我不听劝强制使用 root 引导 MySQL Router ,但也是因为我看到有提示信息显示支持--user=root的方式强制用 root 引导才做的。而提示信息和报错信息并没有说明这么做的隐患和错在哪里,mysqlrouter -?也找不到相应信息。

解决问题后,我想找到问题产生的原因,于是在 MySQL 官网的 《MySQL Router 8.0》文档三次跳转页面才找到了相关信息的!这也是我觉得 MySQL 官网文档难于学习的一点——写的太乱,还有就是措辞偏外国人,文化习惯差异导致不利于快速学习。他们可以将一个知识点的相关内容放在多个章节里,甚至多个文档里,更可气的是标题还都差不多,很多只有时态、词性方面的差异,内容有些也有很高的重复率,关键差异信息只有一点,而这恰恰是你需要的呀!这就很烦!

我时间紧张,近期任务是快速学习搭建 MySQL InnoDB ClusterSet ,没那么多时间去先看文档再操作。这在如今的社会很正常吧,你买来一个诸如手机的电子产品,纵使它说明再全,你一开始也不会去先看说明再去摆弄,而是在遇到摆弄不明白的地方时才想着去看说明书,查资料。IT 技术的官方文档也是如此,本质上就是说明书,而 MySQL 这样的产品本质上就是个工具,很多人的需求只是会用就行,不关心内部设计细节,只有 DBA 这类人员才需要关注更多。

生活就是这样,任何事情只要肯琢磨,门道都挺深的。职场工作也分两条发展路线,一种是 ,即精益求精的资深专家路线;一种是 ,即博学多才的全面型人才。是不是感觉架构里的 Scale-UpScale-Out 很像?两者也都有缺陷:专家路线容易把路子走窄了,尤其是所学的知识将要被淘汰了时,专家的待遇将直线下滑;全面型人才容易样样都通样样不精,中国人叫他们“一瓶子不满半瓶子晃荡”、“鼯鼠”,美国人叫他们“Jack of all trades”。在当今社会分工如此细化的社会,一般来讲,做专家的待遇要优于做全能型人才,至少票子上的表现是如此;而如果脱离社会或遇到荒野迷路、战争动荡、末世求生,全能型人才的优势将是巨大的。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...