在集群中使用MySQL
MySQL在集群上运行的阻碍
集群目前的架构决定了,各节点之间仅有/home目录的数据维持同步,仍然是彼此独立的计算机。
MySQL由后台程序mysqld与前端命令mysql组成,mysqld作为进程,无法像数据一样同步于各节点之间,同样的,不仅仅是MySQL,docker、redis、clash等凡是作为后台服务的程序,都只能运行在一个节点上,需要由其他节点在指定主机名与端口后使用,在不同节点用同样的mysqld开出来的后台程序,也是彼此独立的mysqld。MySQL更特殊的一点在于其也是存储数据的工具,但其存储的数据由于不位于/home目录,也没有同步。因此就会存在byzhao在ln01节点上用mysql命令创建了名为orthomcl的表,在提交一个读取orthomcl表数据的任务后,发现诸如mysqld未启动或者orthomcl表不存在之类的报错这样反直觉的问题。
命令
考虑到MySQL也偶尔需要较大的CPU开销,目前集群的mysqld运行在high队列的cu07节点上,考虑到目前仅有orthomcl需要用到数据库,已经创建好了MySQL的ortho用户,同学们可以在任意节点通过这条命令访问MySQL,并自行创建database与table:
mysql -uortho -portho^2022 -h cu07
(理想状况下,可以专门设立一台服务器作为数据库软件专用服务器,在为同学们创建集群账户的同时,创建对应的数据库账户,给予充分的权限,目前并不理想~)