猿博园

记录生活及工作中的点点滴滴

0%

配置MySQL开机自启动

一、概述

Linux环境下配置完多实例MySQL后,每次开机都要手动启动,现配置成开机自启动模式。在多实例情况下命令chkconfig 不再起作用,所有就需要我们手动配置了。

二、Linux启动小知识

在配置MySQL 多实例启动时,首先让我们了解一下,Linux启动的知识点。正常情况下Linux的启动顺序如下:

  1. 加载内核
  2. 执行init程序
  3. /etc/rc.d/rc.sysinitinit 执行的第一个脚本
  4. /etc/rc.d/rc $RUNLEVEL $RUNLEVEL为缺省的运行模式,linux 共有7种运行模式。
  5. /etc/rc.d/rc.local 相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)
  6. /sbin/mingetty 等待用户登录

这里有好几种方法,我们选择第五条,即将执行命令加到/etc/rc.d/rc.local 中。

三、Ubuntu18.04 环境

ubuntu18.04 下不在使用initd管理系统,改为使用systemd。然而 ,systemd改变比较大,比较难用。使用systemd设置开机启动,为了像以前一样,在/etc/rc.local中设置开机启动程序。

1、实现原理

systemd默认会读取/etc/systemd/system目录下的配置文件,该目录下的文件实质是链接的/lib/systemed/system 下的文件。一般系统安装完/lib/systemed/system下会有rc-local.service文件,即我们需要配置的文件。/lib/system/system目录下的文件如下所示:

1
2
shell > cd /lib/systemd/system
shell > ll

输出结果如下所示,找到红框中标出的rc-local.service

image-20210308155726732

接下来在查看/etc/systemd/system目录下的文件。

1
2
shell > cd /etc/systemd/system
shell > ll

输出结果如下所示:

image-20210308160046546

我们看到此时/etc/systemd/system目录下是不存在rc-local.service文件的。那么接下来创建链接及配置文件。

2、创建链接

  • 执行如下命令,创建链接

    1
    shell > ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
  • 查看文件内容

    1
    2
    shell > cd /etc/systemd/system/ 
    shell > cat rc-local.service

    输出结果如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #  This file is part of systemd.
    #
    # systemd is free software; you can redistribute it and/or modify it
    # under the terms of the GNU Lesser General Public License as published by
    # the Free Software Foundation; either version 2.1 of the License, or
    # (at your option) any later version.

    # This unit gets pulled automatically into multi-user.target by
    # systemd-rc-local-generator if /etc/rc.local is executable.
    [Unit] #启动顺序与依赖关系。
    Description=/etc/rc.local Compatibility
    ConditionFileIsExecutable=/etc/rc.local #指定了执行的文件,
    After=network.target # `network.target` 这个target后面进行执行。也就是网络启动完成之后,执行` /etc/rc.local` 文件。

    [Service] # 启动行为,如何启动,启动类型。
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes
  • 添加 [Install]块

    在上述文件的末尾加上如下内容:

    1
    2
    3
    [Install] #定义如何安装这个配置文件,即怎样做到开机启动。
    WantedBy=multi-user.target
    Alias=rc-local.service

3、修改/etc/rc.local文件

/etc/rc.local文件的exit 0 之前加入如下内容:

1
2
3
4
5
6
7
8
9
# 指定 MySQL 的环境变量
MYSQL_HOME=/usr/local/mysql
export MYSQL_HOME
PATH=$PATH:$MYSQL_HOME/bin
export PATH

# 配置启动项
/usr/local/mysql/bin/mysqld_multi --defaults-file=/usr/local/mysql/etc/my.cnf start &

说明:

  1. 如果 /etc/ 目录下不存在rc.local文件可以自己创建。并赋予可执行权限
  2. 由于 /etc/rc.local文件早于/etc/profile文件执行,在/etc/profile文件中配置的环境变量还未起作用,所有再次需要配置上 MySQL 的环境变量。

4、重启系统

执行reboot命令重启系统,查看服务是否启动成功。

执行如下命令,查看是否成功启动:

1
shell >  netstat -ln | grep 330

输出如下结果表示启动成功:

image-20210308164210305

说明:

​ 如 MySQL 没有正常启动,可以查看日志文件/var/log/syslog。从中找到错误日志,进行相应的修改即可。

四、CentOS7环境下

CentOS7环境下配置相对比较简单。只需要在 /etc/rc.d/rc.local文件中添加上需要启动的命令,已经给/etc/rc.d/rc.local文件赋予可执行权限即可,具体操作如下所示:

1、查看文件

查看/etc/rc.d/rc.local文件的初始内容如下:

1
shell > cat /etc/rc.d/rc.local

输出内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

2、添加内容

/etc/rc.d/rc.local 文件的末尾加入要执行的命令,如下所示:

1
2
3
4
5
6
7
# 指定 MySQL 的环境变量
MYSQL_HOME=/usr/local/mysql
export MYSQL_HOME
PATH=$PATH:$MYSQL_HOME/bin
export PATH

/usr/local/mysql/bin/mysqld_multi --defaults-file=/etc/my.cnf start &

3、赋予可执行权限

1
shell > chmod +x /etc/rc.d/rc.local

4、重启系统

执行reboot命令重启系统,查看服务是否启动成功。

执行如下命令,查看是否成功启动:

1
shell >  netstat -ln | grep 330

输出如下结果表示启动成功:

image-20210308164210305

说明:

​ 如 MySQL 没有正常启动,可以通过 systemctl status rc-local.service 查看启动日志,从中找到错误日志,进行相应的修改即可。

五、总结

本篇内容主要介绍了 Linux 系统启动流程, UbuntucentOS 系统下配置自启动的方式。 以上方式可以配置任何应用为开机自启动,比如可以配置 redistomcatnginx 等。

--------------------------本文结束感谢您的阅读--------------------------
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!