随Linux开机自动启动mysql

运维 系统运维
在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题......

在MySQL的管理过程中,会遇到PC Server脱机或者重启,我需要在主机启动后再将MySQL服务启动。如果上百台或者更多的MySQL主机进行维护时,可能会有多台主机出现类似问题,要是每次都手动操作,是很繁琐的事情。我们可以采用随系统一起启动MySQL服务,这样就解决了频繁手动启动MySQL的问题。

要实现随开启自动启动mysqld,我们需要搞定如下几个问题:

1. Linux开机自动启动脚本放在哪儿?

一般的,作为服务器使用的Linux一般会以“完全多用户模式(Multi-User Mode with Networking)”级别来启动,这种情况下Linux在启动时会运行/etc/rc.d/rc3.d/下的全部脚本。例如我们在这个目录下会看到脚本”/etc/rc.d/rc3.d/S90crond”,意味着开机启动时会运行S90crond脚本。

2. Linux如何运行这些脚本?

既然已经知道自动启动脚本该放在哪儿了,一切就好办。我们只需要将一个启动MySQL的脚本放过去就好了。下面是我们的一个简单的启动脚本v0.1 mysqldauto

$vi mysqldauto

#!/bin/sh

# Version: 0.1 by orczhou@gmail.com

/opt/mysql/bin/mysqld_safe --user=mysql & #这里需要修改为你的mysqld_safe目录

$chmod +x mysqldauto

$mv mysqldauto /etc/rc.d/init.d/

$ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc3.d/S99mysqld

这样我们就把创建的mysqldauto脚本放到了/etc/rc.d/rc3.d/下面(注意这里使用了link的方式),mysqld可以自动启动了。

这有两个问题需要解释:

* * * * * 为什么不直接在目录/etc/rc.d/rc3.d/下创建文件,而要创建一个软连接?这并不是必须的。但是这样做是有很多好处的(后面会解释),不过这样做至少会看起来更加专业。

* * * * * 为什么文件名要用S99mysqld?这是规则,在rc3.d下面的脚本如果以字母S开头,那么执行时Linux会给它传递一个start参数(如果以字母K开头,则会传递stop参数);S后面接个数字,表示了这个脚本的启动顺序,如果目录rc3.d下还有S98*那么它会在S99之前运行。(看到这儿,你可以猜测一下前面我们为什么要创建软连接了)

好了,自此你的mysqld就已经可以随Linux开机自动启动了。

3. 怎样做更专业些?

上面这样做,已经可以解决问题了,不过写法多少有些“山寨”,下面我们看看怎样改造一下。

* * * * * 改造1:处理参数start。既然前面提到以字母S开头的脚本会自动传递一个参数start,K则会传递stop。那么我再做如下修改:

$vi mysqldauto

#!/bin/sh

# Version: 0.2 by orczhou@gmail.com

MYSQLHOME=/opt/mysql #这里需要修改为你的mysql安装目录

if [ $# -ge 1 ];then

mysqldProc=`ps -ef|grep -E "mysqld.+safe"|grep -v "grep"|wc -l`

if [ $1 = "stop" ] ;then

if [ $mysqldProc -eq 1 ];then

$MYSQLHOME/bin/mysqladmin -uroot shutdown

fi

elif [ $1 = "start" ];then

if [ $mysqldProc -eq 0 ];then

$MYSQLHOME/bin/mysqld_safe --user=mysql &

fi

fi

fi

做了如此改造后,我们脚本需要接收两个参数start stop了。如果你想让你mysqld在关闭主机的时候自动关闭,那么stop参数就可以起作用了:

$ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc0.d/K20mysqld

这里做软连接好处就体现出来了,启动和关闭只需要用一个脚本就可以了。

* * * * * 改造2:当你面临几十上百台主机的时候,MySQL的启动参数可能会不一样,例如备库启动时可能需要mysqld_safe –user=mysql –read_olny=1 &,这种情况怎么办呢?这里提供一个解决思路。

在主机上运行一个脚本,探测当前mysqld的启动参数,然后写到一个指定的文件里。最后,在你的启动脚本中,读取这个文件里面的启动参数来启动mysqld。It works。

【编辑推荐】

  1. Linux系统中Mysql 密码恢复
  2. Linux网络备份MySQL的方法
  3. 应用技术:RHEL AS设MySQL初始root密码
责任编辑:赵宁宁 来源: 比特网
相关推荐

2010-05-26 09:21:12

启动SVN

2010-09-10 09:41:53

Android

2010-01-04 10:05:18

linux挂载windows

2009-10-10 09:01:50

RHEL5启动与关闭

2009-11-25 09:16:34

SUSE Linux

2020-06-11 07:57:48

Linux脚本数据

2020-08-11 18:20:42

Linux运行脚本开机启动

2010-05-19 16:45:26

MySQL自动启动

2017-09-04 09:38:49

Linux开机启动项清理

2011-09-07 10:58:19

UbuntuMySQL

2023-03-02 23:45:23

linux开机启动Windows

2021-07-21 09:50:35

Linux脚本命令

2017-12-25 13:51:32

LinuxUbuntu LinuLXD容器

2015-10-28 17:21:37

Oracle11glinux自启动

2010-08-02 08:49:25

2009-12-15 14:36:24

2010-05-26 09:33:21

启动SVN服务

2011-08-10 13:36:30

Servlet

2014-01-06 11:24:51

Linux桌面启动程序

2018-03-02 13:28:19

Linux开机自启动
点赞
收藏

51CTO技术栈公众号