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/refman/8.0/en/using-systemd.html