MySQL配置通过systemctl管理

 

MySQL配置通过systemctl管理

 

参考官方文档资料,步骤不多。

创建mysqld.service文件。

touch /usr/lib/systemd/system/mysqld.service
chmod 644 /usr/lib/systemd/system/mysqld.service

 

 

官方对MySQL5和MySQL8提供的mysqld.service内容并不同。

/etc/sysconfig/mysql文件可以定义一些环境变量值,malloc,时区等,没有需求可以不用创建该文件。

MySQL5:

vi /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/mysql3306/mysql3306.pid
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize --pid-file=/data/mysql3306/mysql3306.pid $MYSQLD_OPTS 
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false

 

 

MySQL8:

vi /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=notify
TimeoutSec=0
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 65536
Restart=on-failure
RestartPreventExitStatus=1
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false

 

 

设置内存分配管理。

说明:jemalloc是一个malloc()碎片避免和可扩展的并发支持的实现。

它旨在用作系统提供的内存分配器,如FreeBSD的libc库,以及链接到C / C ++应用程序。jemalloc提供了许多超出标准分配器功能的内省,内存管理和调优功能。

jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。相对于glibc自带的lib库,jemalloc的性能有glibc的两倍以上。

另外,想启用TokuDB引擎,必须使用jemalloc。防偷防爬

安装完jemalloc后:

vi /etc/sysconfig/mysql
LD_PRELOAD=/usr/local/lib/libjemalloc.so.2

 

 

重载systemctl配置,设置mysqld服务开机自启动。

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

 

 

其他一些定制化需求,可以根据需要添加,详情可以网上查找systemctl的详细使用。

ReStartSec=1s # 重启条件满足后等多久自动重启(秒)
StartLimitInterval=300 # 五分钟内只能重启两次,第三次不重启了
StartLimitBurst=2 # 五分钟内只能重启两次,第三次不重启了
TimeoutStartSec=30 # 服务启动的超时时间,单位秒
TimeoutStopSec=30 # 服务关闭的超时时间,单位秒

 

一些其他小技巧:

systemctl cat mysqld # 查看mysqld.service文件内容
journalctl -u mysqld # 查看指定mysqld服务的信息

 

 

https://www.cnblogs.com/PiscesCanon/p/17605003.html

参考链接:

https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html#secure-deployment-systemd-startup

https://dev.mysql.com/doc/mysql-secure-deployment-guide/5.7/en/secure-deployment-post-install.html#secure-deployment-systemd-startup

https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html

我为什么不用 mysqld_safe

 

posted @ 2023-08-04 09:10  PiscesCanon  阅读(2170)  评论(0编辑  收藏  举报