【MySQL运维技术分享】使用systemd管理MySQL(结合mysql_config_editor)

TangLu MySQL 2024-11-28 99 0

一、前言

如果使用二进制方式部署的 MySQL ,通常是通过mysqld_safe和mysqladmin这2个自带工具进行服务的启动和关闭操作,为了实现标准化管理,也可以将MySQL注册为系统服务实现开机自启等


二、配置方式

1、创建 mysql.service 服务文件

在/etc/systemd/system/下创建 MySQL 服务文件,之所以将自定义的 mysql.service 文件放在 /etc/systemd/system/ 目录下是因为该目录是专门存放自定义服务单元文件的标准位置。自定义的服务文件放在该目录下,系统更新时不会被覆盖。而且/etc/systemd/system/ 目录中的服务文件优先级最高,能够覆盖其他目录中的相同服务文件。

文件内如如下,需要注意将mysqld_safe、mysqladmin、pid等文件的路径修改为实际路径,注册user和group的设置,要和启动脚本的属主属组保持一致,比如oracle的dbstart脚本为oracle:oinstall,那么这里就要改为user=oracle,group=oinstall,否则启动脚本无法正常启动服务

vi /etc/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin --login-path=/data/mysql3306/mysql_login shutdown
PIDFile=/data/mysql3306/data/master.pid
User=mysql
Group=mysql


[Install]
WantedBy=multi-user.target


2、配置MySQL登录文件

在上面创建的服务文件中可以看到 ExecStop 中不是直接用明文传递的密码,而是通过文件读取的方式登录数据库进行关闭操作,这样更安全。而要实现这个效果则是通过MySQL自带的 mysql_config_editor 工具,通过该工具可以创建一个凭据文件,然后使用该文件就可以直接登录数据库了

  • 创建凭据文件

mysql_config_editor set --login-path=/data/mysql3306/mysql_login --socket=/tmp/mysql3306.sock --user=root --password
  • 打印凭据文件测试是否正常

mysql_config_editor print --login-path=/data/mysql3306/mysql_login
  • 使用凭据登录测试是否正常

mysql --login-path=/data/mysql3306/mysql_login


3、注册系统服务

配置完成后如果mysql已经是运行状态,先手动关闭再使用脚本启动进行测试,如果启动后执行systemctl status mysql状态是正常的就代表配置成功

systemctl daemon-reload
systemctl start mysql


评论