最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 8.0 systemd 服務(wù)配置指南

 更新時(shí)間:2026年03月19日 09:48:54   作者:南墻上的石頭  
本文主要介紹了MySQL 8.0 systemd 服務(wù)配置指南,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

服務(wù)創(chuàng)建概述

systemd 是現(xiàn)代 Linux 系統(tǒng)的初始化系統(tǒng)和服務(wù)管理器,用于控制服務(wù)的啟動(dòng)、停止和管理。為 MySQL 創(chuàng)建 systemd 服務(wù)可以實(shí)現(xiàn):

? 自動(dòng)啟動(dòng)和停止
? 服務(wù)狀態(tài)監(jiān)控
? 開機(jī)自啟
? 日志統(tǒng)一管理
? 資源限制控制

服務(wù)配置文件詳解

創(chuàng)建 /etc/systemd/system/mysql.service:

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
After=network.target
After=syslog.target
RequiresMountsFor=/data1/mysql/data

[Install]
WantedBy=multi-user.target

[Service]
# 服務(wù)基本信息
Type=notify
User=mysql
Group=mysql

# 環(huán)境變量
Environment="MYSQLD_OPTS=--defaults-file=/data1/mysql/my.cnf"
EnvironmentFile=-/etc/sysconfig/mysql

# 可執(zhí)行文件路徑
ExecStart=/data1/mysql/bin/mysqld $MYSQLD_OPTS
ExecStartPre=/data1/mysql/bin/mysqld_pre_systemd
ExecStop=/data1/mysql/bin/mysqladmin shutdown

# PID 管理
PIDFile=/data1/mysql/data/mysql.pid

# 資源限制
LimitNOFILE=65535
LimitNPROC=65535
LimitCORE=infinity
TimeoutSec=300

# 重啟策略
Restart=on-failure
RestartPreventExitStatus=1
RestartSec=5
StartLimitBurst=3
StartLimitIntervalSec=60

# 安全設(shè)置
NoNewPrivileges=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=strict
ReadWritePaths=/data1/mysql/data /var/log/mysql
ReadOnlyPaths=/etc
InaccessiblePaths=/boot /root

# 日志配置
StandardOutput=journal
StandardError=journal
SyslogIdentifier=mysql

安裝與配置步驟

3.1 創(chuàng)建必要的輔助腳本

ExecStartPre 腳本? /data1/mysql/bin/mysqld_pre_systemd:

#!/bin/bash
# MySQL systemd 服務(wù)預(yù)啟動(dòng)腳本

set -e

# 檢查目錄權(quán)限
if [ ! -d "/data1/mysql/data" ]; then
    echo "創(chuàng)建數(shù)據(jù)目錄..."
    mkdir -p /data1/mysql/data
    chown -R mysql:mysql /data1/mysql
fi

# 檢查配置文件
if [ ! -f "/data1/mysql/my.cnf" ]; then
    echo "錯(cuò)誤: MySQL 配置文件不存在: /data1/mysql/my.cnf"
    exit 1
fi

# 檢查 socket 文件權(quán)限
if [ -S "/tmp/mysql.sock" ]; then
    echo "清理舊的 socket 文件..."
    rm -f /tmp/mysql.sock
fi

# 檢查是否已初始化
if [ ! -f "/data1/mysql/data/mysql/user.frm" ] && \
   [ ! -f "/data1/mysql/data/mysql.ibd" ]; then
    echo "警告: MySQL 數(shù)據(jù)目錄為空,如需初始化請(qǐng)執(zhí)行:"
    echo "sudo -u mysql /data1/mysql/bin/mysqld --defaults-file=/data1/mysql/my.cnf --initialize-insecure"
fi

exit 0

設(shè)置執(zhí)行權(quán)限:

chmod +x /data1/mysql/bin/mysqld_pre_systemd
chown mysql:mysql /data1/mysql/bin/mysqld_pre_systemd

3.2 創(chuàng)建環(huán)境配置文件

可選配置? /etc/sysconfig/mysql:

# MySQL 系統(tǒng)環(huán)境配置
# 可以通過此文件設(shè)置額外的 mysqld 參數(shù)

# 字符集設(shè)置
export LANG=en_US.UTF-8

# 性能優(yōu)化參數(shù)
# MYSQLD_OPTS="$MYSQLD_OPTS --innodb_buffer_pool_size=2G"

# 調(diào)試參數(shù)
# MYSQLD_OPTS="$MYSQLD_OPTS --log-error-verbosity=3"

3.3 目錄結(jié)構(gòu)與權(quán)限設(shè)置

# 創(chuàng)建必要的目錄
sudo mkdir -p /var/log/mysql
sudo mkdir -p /var/run/mysql

# 設(shè)置正確的權(quán)限
sudo chown -R mysql:mysql /data1/mysql
sudo chown -R mysql:mysql /var/log/mysql
sudo chown -R mysql:mysql /var/run/mysql

# 設(shè)置目錄權(quán)限
sudo chmod 750 /data1/mysql/data
sudo chmod 755 /data1/mysql/bin

服務(wù)管理命令

4.1 基本服務(wù)操作

# 重新加載 systemd 配置
sudo systemctl daemon-reload

# 啟用開機(jī)自啟
sudo systemctl enable mysql

# 啟動(dòng) MySQL 服務(wù)
sudo systemctl start mysql

# 查看服務(wù)狀態(tài)
sudo systemctl status mysql

# 停止服務(wù)
sudo systemctl stop mysql

# 重啟服務(wù)
sudo systemctl restart mysql

# 重新加載配置(不重啟)
sudo systemctl reload mysql

# 查看服務(wù)日志
sudo journalctl -u mysql
sudo journalctl -u mysql -f  # 實(shí)時(shí)跟蹤日志

4.2 高級(jí)狀態(tài)檢查

# 檢查服務(wù)是否活躍
sudo systemctl is-active mysql

# 檢查是否啟用開機(jī)自啟
sudo systemctl is-enabled mysql

# 檢查服務(wù)啟動(dòng)失敗詳情
sudo systemctl status mysql -l

# 查看完整的服務(wù)信息
sudo systemctl show mysql

4.3 日志管理命令

# 查看最近 100 行日志
sudo journalctl -u mysql -n 100

# 查看特定時(shí)間段的日志
sudo journalctl -u mysql --since "2026-02-10 10:00:00" --until "2026-02-10 12:00:00"

# 查看錯(cuò)誤級(jí)別的日志
sudo journalctl -u mysql -p err

# 導(dǎo)出日志到文件
sudo journalctl -u mysql --since today > /tmp/mysql-today.log

高級(jí)配置選項(xiàng)

5.1 資源限制配置

在服務(wù)文件的 [Service]部分添加資源限制:

# CPU 和內(nèi)存限制
CPUQuota=200%
MemoryLimit=4G
MemorySwapMax=2G

# I/O 限制
IOWeight=default
CPUShares=1024

# 進(jìn)程限制
TasksMax=infinity

5.2 多實(shí)例配置

如果有多個(gè) MySQL 實(shí)例,可以創(chuàng)建模板服務(wù):

創(chuàng)建模板文件? /etc/systemd/system/mysql@.service:

[Unit]
Description=MySQL Server Instance %i
After=network.target

[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/data1/mysql/bin/mysqld --defaults-file=/data1/mysql/my-%i.cnf
PIDFile=/data1/mysql/data-%i/mysql.pid
Restart=on-failure

[Install]
WantedBy=multi-user.target

啟動(dòng)不同實(shí)例:

sudo systemctl start mysql@3306
sudo systemctl start mysql@3307

5.3 自定義啟動(dòng)腳本

創(chuàng)建啟動(dòng)腳本? /usr/local/bin/mysql-wrapper:

#!/bin/bash
# MySQL 啟動(dòng)包裝腳本

set -e

CONFIG_FILE="/data1/mysql/my.cnf"
MYSQLD="/data1/mysql/bin/mysqld"
MYSQLADMIN="/data1/mysql/bin/mysqladmin"

# 加載自定義配置
if [ -f "/etc/sysconfig/mysql-extra" ]; then
    . /etc/sysconfig/mysql-extra
fi

# 檢查配置文件
if [ ! -f "$CONFIG_FILE" ]; then
    echo "錯(cuò)誤: 配置文件不存在: $CONFIG_FILE" >&2
    exit 1
fi

# 執(zhí)行 MySQL
exec "$MYSQLD" --defaults-file="$CONFIG_FILE" "$@"

故障排除

6.1 常見問題解決

問題1:服務(wù)啟動(dòng)失敗

# 查看詳細(xì)錯(cuò)誤信息
sudo systemctl status mysql
sudo journalctl -xe

# 手動(dòng)測(cè)試啟動(dòng)
sudo -u mysql /data1/mysql/bin/mysqld --defaults-file=/data1/mysql/my.cnf --console

問題2:權(quán)限錯(cuò)誤

# 檢查文件所有權(quán)
sudo ls -la /data1/mysql/

# 修復(fù)權(quán)限
sudo chown -R mysql:mysql /data1/mysql
sudo chmod 750 /data1/mysql/data

問題3:端口沖突

# 檢查端口占用
sudo netstat -tlnp | grep 3306
sudo ss -tlnp | grep 3306

# 殺死占用進(jìn)程
sudo fuser -k 3306/tcp

6.2 診斷命令

# 檢查 systemd 配置
sudo systemd-analyze verify /etc/systemd/system/mysql.service

# 檢查依賴關(guān)系
sudo systemctl list-dependencies mysql

# 檢查啟動(dòng)時(shí)間
sudo systemd-analyze critical-chain mysql

# 檢查服務(wù)啟動(dòng)日志
sudo journalctl -u mysql -o cat | head -50

6.3 恢復(fù)默認(rèn)配置

# 停止服務(wù)
sudo systemctl stop mysql

# 禁用服務(wù)
sudo systemctl disable mysql

# 刪除服務(wù)文件
sudo rm /etc/systemd/system/mysql.service

# 重新加載 systemd
sudo systemctl daemon-reload
sudo systemctl reset-failed

安全最佳實(shí)踐

7.1 最小權(quán)限原則

# 創(chuàng)建專用用戶和組
sudo groupadd -r mysql
sudo useradd -r -g mysql -s /bin/false -d /data1/mysql mysql

# 設(shè)置目錄權(quán)限
sudo chmod 750 /data1/mysql
sudo chmod 700 /data1/mysql/data
sudo chmod 600 /data1/mysql/my.cnf

7.2 SELinux/AppArmor 配置

SELinux 策略:

# 檢查 SELinux 狀態(tài)
sudo sestatus

# 設(shè)置 MySQL 目錄上下文
sudo semanage fcontext -a -t mysqld_db_t "/data1/mysql(/.*)?"
sudo restorecon -Rv /data1/mysql

# 創(chuàng)建自定義 SELinux 模塊(如果需要)

AppArmor 配置(Ubuntu/Debian):

bash
復(fù)制
# 創(chuàng)建 AppArmor 配置文件
sudo vim /etc/apparmor.d/usr.sbin.mysqld

# 重新加載配置
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

7.3 防火墻配置

# 開放 MySQL 端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

# 或使用 firewalld 服務(wù)
sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload

7.4 監(jiān)控和告警

創(chuàng)建監(jiān)控腳本? /usr/local/bin/mysql-monitor.sh:

#!/bin/bash
# MySQL 服務(wù)監(jiān)控腳本

SERVICE="mysql"
MAX_RESTARTS=3
RESTART_COUNT_FILE="/var/run/mysql-restart-count"

# 檢查服務(wù)狀態(tài)
if ! systemctl is-active --quiet $SERVICE; then
    echo "$(date): MySQL 服務(wù)停止,嘗試重啟..." >> /var/log/mysql-monitor.log
    
    # 記錄重啟次數(shù)
    if [ -f "$RESTART_COUNT_FILE" ]; then
        COUNT=$(cat $RESTART_COUNT_FILE)
    else
        COUNT=0
    fi
    
    if [ $COUNT -lt $MAX_RESTARTS ]; then
        systemctl restart $SERVICE
        echo $((COUNT + 1)) > $RESTART_COUNT_FILE
    else
        echo "$(date): 警告: MySQL 重啟次數(shù)超過 $MAX_RESTARTS 次" >> /var/log/mysql-monitor.log
        # 發(fā)送告警
        # mail -s "MySQL 服務(wù)異常" admin@example.com
    fi
else
    # 重置重啟計(jì)數(shù)
    echo 0 > $RESTART_COUNT_FILE
fi

添加到 cron:

# 每分鐘檢查一次
echo "* * * * * root /usr/local/bin/mysql-monitor.sh" | sudo tee /etc/cron.d/mysql-monitor

?? 配置文件完整示例

最終服務(wù)文件? /etc/systemd/system/mysql.service:

[Unit]
Description=MySQL 8.0 Database Server
Documentation=https://dev.mysql.com/doc/refman/8.0/en/
After=network.target
After=syslog.target
Wants=network.target

[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/data1/mysql/bin/mysqld --defaults-file=/data1/mysql/my.cnf
ExecStartPre=/data1/mysql/bin/mysqld_pre_systemd
ExecStop=/data1/mysql/bin/mysqladmin -u root -p shutdown
LimitNOFILE=65535
Restart=on-failure
RestartPreventExitStatus=1
RestartSec=5
TimeoutSec=300
PrivateTmp=true

[Install]
WantedBy=multi-user.target

?? 快速部署腳本

創(chuàng)建一鍵部署腳本 /tmp/deploy-mysql-service.sh:

#!/bin/bash
# MySQL systemd 服務(wù)一鍵部署腳本

set -e

echo "=== MySQL systemd 服務(wù)部署開始 ==="

# 1. 檢查權(quán)限
if [ "$EUID" -ne 0 ]; then
    echo "請(qǐng)使用 root 用戶運(yùn)行此腳本"
    exit 1
fi

# 2. 創(chuàng)建 systemd 服務(wù)文件
cat > /etc/systemd/system/mysql.service << 'EOF'
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/data1/mysql/bin/mysqld --defaults-file=/data1/mysql/my.cnf
PIDFile=/data1/mysql/data/mysql.pid
TimeoutSec=300
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

echo "? 服務(wù)文件創(chuàng)建完成"

# 3. 重載 systemd
systemctl daemon-reload
echo "? systemd 配置重載完成"

# 4. 啟用服務(wù)
systemctl enable mysql
echo "? MySQL 服務(wù)已啟用開機(jī)自啟"

# 5. 啟動(dòng)服務(wù)
if systemctl start mysql; then
    echo "? MySQL 服務(wù)啟動(dòng)成功"
    echo "服務(wù)狀態(tài):"
    systemctl status mysql --no-pager -l
else
    echo "? MySQL 服務(wù)啟動(dòng)失敗"
    journalctl -u mysql -n 20 --no-pager
    exit 1
fi

echo ""
echo "=== 部署完成 ==="
echo "常用命令:"
echo "  sudo systemctl status mysql   # 查看狀態(tài)"
echo "  sudo systemctl stop mysql     # 停止服務(wù)"
echo "  sudo systemctl restart mysql  # 重啟服務(wù)"
echo "  sudo journalctl -u mysql -f   # 查看日志"

賦予執(zhí)行權(quán)限并運(yùn)行:

chmod +x /tmp/deploy-mysql-service.sh
sudo /tmp/deploy-mysql-service.sh

通過以上配置,您可以獲得一個(gè)穩(wěn)定、安全且易于管理的 MySQL 服務(wù)。systemd 提供了豐富的監(jiān)控和管理功能,配合適當(dāng)?shù)臋?quán)限和安全配置,可以確保 MySQL 數(shù)據(jù)庫(kù)在 Linux 系統(tǒng)上穩(wěn)定運(yùn)行。

到此這篇關(guān)于MySQL 8.0 systemd 服務(wù)配置指南的文章就介紹到這了,更多相關(guān)MySQL systemd 服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL行列轉(zhuǎn)化方式

    MySQL行列轉(zhuǎn)化方式

    文章介紹了如何將行數(shù)據(jù)轉(zhuǎn)化為列數(shù)據(jù),并展示了如何使用UNION和UNION ALL的區(qū)別,作者分享了個(gè)人經(jīng)驗(yàn),希望能對(duì)大家有所幫助
    2026-01-01
  • Ubuntu中遠(yuǎn)程連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程

    Ubuntu中遠(yuǎn)程連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程

    Ubuntu是一個(gè)以桌面應(yīng)用為主的Linux發(fā)行版操作系統(tǒng),這篇文章主要為大家詳細(xì)介紹了Ubuntu中遠(yuǎn)程連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)圖文教程,有需要的小伙伴可以參考下
    2025-04-04
  • MySql?InnoDB存儲(chǔ)引擎之Buffer?Pool運(yùn)行原理講解

    MySql?InnoDB存儲(chǔ)引擎之Buffer?Pool運(yùn)行原理講解

    緩沖池是用于存儲(chǔ)InnoDB表,索引和其他輔助緩沖區(qū)的緩存數(shù)據(jù)的內(nèi)存區(qū)域。緩沖池的大小對(duì)于系統(tǒng)性能很重要。更大的緩沖池可以減少磁盤I/O來多次訪問同一表數(shù)據(jù)。在專用數(shù)據(jù)庫(kù)服務(wù)器上,可以將緩沖池大小設(shè)置為計(jì)算機(jī)物理內(nèi)存大小的百分之80
    2023-01-01
  • 詳解MySQL實(shí)現(xiàn)主從復(fù)制過程

    詳解MySQL實(shí)現(xiàn)主從復(fù)制過程

    這篇文章主要為大家詳細(xì)介紹了MySQL主從復(fù)制的實(shí)現(xiàn)過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Win10安裝mysql8.0.15 winx64及連接服務(wù)器過程中遇到的問題

    Win10安裝mysql8.0.15 winx64及連接服務(wù)器過程中遇到的問題

    這篇文章主要介紹了Win10安裝mysql8.0.15 winx64及連接服務(wù)器過程中遇到的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 詳解mysql的備份與恢復(fù)

    詳解mysql的備份與恢復(fù)

    這篇文章主要介紹了mysql的備份與恢復(fù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • 深入探究Mysql模糊查詢是否區(qū)分大小寫

    深入探究Mysql模糊查詢是否區(qū)分大小寫

    這篇文章主要給大家介紹了關(guān)于Mysql模糊查詢是否區(qū)分大小寫的相關(guān)資料,文中給出了5種解決方法以及各個(gè)方法的建議,需要的朋友可以參考下
    2021-06-06
  • MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟

    MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟

    binlog日志是用于記錄所有修改數(shù)據(jù)庫(kù)內(nèi)容的操作,本文主要介紹了MySQL使用binlog日志恢復(fù)數(shù)據(jù)的方法步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • MySQL慢查詢的坑

    MySQL慢查詢的坑

    這篇文章主要介紹了MySQL慢查詢的坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 磁盤已滿造成的mysql啟動(dòng)失敗問題分享

    磁盤已滿造成的mysql啟動(dòng)失敗問題分享

    這篇文章主要介紹了磁盤已滿造成的mysql啟動(dòng)失敗問題分享,需要的朋友可以參考下
    2014-04-04

最新評(píng)論

沧州市| 肇州县| 广元市| 铜鼓县| 太白县| 车险| 双牌县| 绿春县| 瑞丽市| 普兰县| 洛隆县| 长宁县| 介休市| 铜山县| 大同市| 丽江市| 高州市| 蒲城县| 荆门市| 合江县| 龙海市| 关岭| 兴山县| 罗甸县| 韶山市| 阳泉市| 兖州市| 临颍县| 东平县| 密云县| 城固县| 阜阳市| 鄂托克旗| 上杭县| 绥化市| 五原县| 黄梅县| 虹口区| 思茅市| 元氏县| 德保县|