2026-07-28 11:05:57 +08:00
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# XINFRA MySQL 交付实例 Systemd 模板单元
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
# 这是 systemd 的模板单元(template unit),文件名中的 @ 是模板标识
|
|
|
|
|
|
# 使用方式:systemctl start mysql-delivery@{实例名}.service
|
|
|
|
|
|
# 例如:mysql-delivery@db01.service、mysql-delivery@db02.service
|
|
|
|
|
|
#
|
|
|
|
|
|
# %i 参数会被 systemd 自动替换为 @ 后面的实例名
|
|
|
|
|
|
# 这样同一台主机可以运行多个 MySQL 实例,彼此隔离
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
2026-07-23 12:05:07 +08:00
|
|
|
|
[Unit]
|
2026-07-28 11:05:57 +08:00
|
|
|
|
# 服务描述,%i 会被替换为实际实例名
|
2026-07-23 12:05:07 +08:00
|
|
|
|
Description=XINFRA MySQL delivery instance %i
|
2026-07-28 11:05:57 +08:00
|
|
|
|
# 依赖:等待网络在线后再启动(MySQL 需要绑定网络端口)
|
2026-07-23 12:05:07 +08:00
|
|
|
|
After=network-online.target
|
|
|
|
|
|
Wants=network-online.target
|
|
|
|
|
|
|
|
|
|
|
|
[Service]
|
2026-07-28 11:05:57 +08:00
|
|
|
|
# Type=notify:mysqld 启动完成后会通过 sd_notify 通知 systemd
|
|
|
|
|
|
# 比 Type=simple 更可靠,systemd 能准确知道服务何时真正就绪
|
2026-07-23 12:05:07 +08:00
|
|
|
|
Type=notify
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 以 mysql 用户/组身份运行(最小权限原则)
|
2026-07-23 12:05:07 +08:00
|
|
|
|
User=mysql
|
|
|
|
|
|
Group=mysql
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 创建运行时目录 /run/mysql-delivery-{实例名}/
|
|
|
|
|
|
# 用于存放 socket 和 pid 文件,放在 tmpfs(内存文件系统)上,重启自动清理
|
2026-07-23 12:05:07 +08:00
|
|
|
|
RuntimeDirectory=mysql-delivery-%i
|
|
|
|
|
|
RuntimeDirectoryMode=0755
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 启动命令:使用实例专属配置文件
|
|
|
|
|
|
# %i 被替换为实例名,指向 /etc/mysql/mysql-delivery/{实例名}.cnf
|
2026-07-23 12:05:07 +08:00
|
|
|
|
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/mysql/mysql-delivery/%i.cnf
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 故障自动重启:崩溃后 5 秒自动重启
|
2026-07-23 12:05:07 +08:00
|
|
|
|
Restart=on-failure
|
|
|
|
|
|
RestartSec=5s
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 启动超时:120 秒内未完成启动则判定为失败
|
2026-07-23 12:05:07 +08:00
|
|
|
|
TimeoutStartSec=120s
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# 最大打开文件数:MySQL 需要大量文件描述符(连接、临时表等)
|
2026-07-23 12:05:07 +08:00
|
|
|
|
LimitNOFILE=65535
|
2026-07-28 11:05:57 +08:00
|
|
|
|
|
|
|
|
|
|
# OOM 评分调整:-200 表示被 OOM Killer 杀掉的优先级较低
|
|
|
|
|
|
# MySQL 是数据库服务,被误杀影响较大,尽量保护
|
2026-07-23 12:05:07 +08:00
|
|
|
|
OOMScoreAdjust=-200
|
|
|
|
|
|
|
|
|
|
|
|
[Install]
|
2026-07-28 11:05:57 +08:00
|
|
|
|
# 开机自启:加入 multi-user.target(多用户模式,即正常启动完成后)
|
2026-07-23 12:05:07 +08:00
|
|
|
|
WantedBy=multi-user.target
|