mysqld开机自动启动怎么设置?

发布时间:2020-10-16编辑:脚本学堂
有关mysqld随linux系统开机启动的设置方法,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。