#配置开机自启动

通过命令行方式安装的YashanDB默认不配置守护进程开机自启动,服务器因各种原因发生重启开机后需以安装用户登录数据库安装服务器,并手动执行如下命令启动数据库:

# 手动启动yasom和yasagent进程
$ yasboot process yasom start -c yashandb -t /home/yashan/install/hosts.toml
$ yasboot process yasagent start -c yashandb -t /home/yashan/install/hosts.toml

# 待yasom和yasagent进程启动后,才能启动数据库
$ yasboot cluster start -c yashandb -p sys_password

# 按需启动守护进程
$ yasboot monit start --cluster yashandb

为简化运维,建议在每台服务器上为守护进程配置开机自启动,守护进程启动后会拉起YashanDB的其他进程,间接实现数据库及相关服务的开机自启动:

进程 进程说明
monit进程 用于守护数据库相关进程,包括yasdb进程、yasom进程和yasagent进程。

# 开启自启动

# 步骤1:创建开机自启动服务脚本

  1. 创建并编写服务启动脚本。

    脚本内容仅为示例,路径、变量值等信息需根据实际情况进行改写。

    $ sudo vi /usr/local/bin/yashan_monit.sh
    
    #!/bin/bash
    MONIT_AUTOSTART="true"                  # 是否监控monit进程,true表示是,其他值表示否
    YASDB_USER=yashan                               # YashanDB的安装用户
    YASDB_HOME=/data/yashan/yasdb_home/{version_number}     # YashanDB的HOME目录
    INTERVAL=3                                # 监控间隔,单位为秒,定期根据进程名监控对应进程是否正常,若否则重新启动
    
    # 加载YashanDB环境变量
    env LD_LIBRARY_PATH=$YASDB_HOME/lib
    
    while true; do    
        if "$MONIT_AUTOSTART" = "true"; then
            if ! pgrep -a monit | grep "$YASDB_HOME" > /dev/null; then
                echo "$(date) monit abnormal, try restart..." 
                su - $YASDB_USER -c "source ~/.bashrc && $YASDB_HOME/om/bin/monit -c $YASDB_HOME/om/monit/monitrc" &
            fi
        fi
        sleep "$INTERVAL"
    done
    
  2. 赋予脚本可执行权限。

    $ sudo chmod +x /usr/local/bin/yashan_monit.sh
    

# 步骤2:使用systemd创建服务

创建并编写服务单元配置文件。

$ sudo vi /etc/systemd/system/yashan_monit.service

[Unit]
Description=Yashan Monitor
After=network.target

[Service]
ExecStart=/usr/local/bin/yashan_monit.sh
Type=simple
Restart=always
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

# 步骤3:开启服务

  1. 生效并启动服务。

    $ sudo systemctl daemon-reload
    
    $ sudo systemctl enable yashan_monit
    Created symlink from /etc/systemd/system/multi-user.target.wants/yashan_monit.service to /etc/systemd/system/yashan_monit.service.
    
    $ sudo systemctl start yashan_monit
    
  2. 检查服务状态。

    $ systemctl status yashan_monit
    yashan_monit.service - Yashan Monitor
    Loaded: loaded (/etc/systemd/system/yashan_monit.service; enabled; vendor preset: disabled)
    Active: active (running) since Thu 2025-06-12 10:41:01 CST; 4s ago
    Main PID: 3580 (yashan_monit.sh)
    CGroup: /system.slice/yashan_monit.service
           ├─3580 /bin/bash /usr/local/bin/yashan_monit.sh
           └─3589 sleep 3
    

# 关闭自启动

若后续无需开机自启动,需执行如下命令禁用服务。

$ sudo systemctl stop yashan_monit

$ sudo systemctl disable yashan_monit
Removed symlink /etc/systemd/system/multi-user.target.wants/yashan_monit.service.

$ systemctl status yashan_monit
● yashan_monit.service - Yashan Monitor
   Loaded: loaded (/etc/systemd/system/yashan_monit.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流