使用下面的命令管理两个实例:
service mysqld3306 {start|stop|status|restart} service mysqld3307 {start|stop|status|restart}第一次启动可能会失败,也可能会警告和log相关的项,这是正常的,之后都会正常。
2.3 提供systemd服务管理脚本以下是3306实例的管理脚本/usr/lib/systemd/system/mysqld3306.service。
由于我的示例中mysql是采用rpm安装,所以mysql的basedir为/usr,如果是编译安装或通用二进制安装,则对应修改下面脚本中的basedir变量。
由于rpm包安装在centos 7上,已经没有mysqld_safe命令,因此使用mysqld来启动mysql实例。
将此管理脚本复制为/usr/lib/systemd/system/mysqld3307.service,再将其内的3306修改为3307即可作为3307实例的服务管理脚本。
此脚本不会初始化mysql(我把这部分代码删了)创建实例,所以启动服务前务必先初始化好对应的mysql实例。
下面的脚本即可作为多实例服务管理脚本,也可以作为单实例服务管理脚本,只需将脚本名称改一改即可。
mysql为systemd自带了多实例服务管理脚本/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=forking PIDFile=/mydata/3306/data/mysqld.pid # Disable service start and stop timeout logic of systemd for mysqld service. TimeoutSec=0 # Execute pre and post scripts as root PermissionsStartOnly=true # Start main service ExecStart=/usr/sbin/mysqld --defaults-file=/mydata/3306/my.cnf --basedir=/usr --daemonize $MYSQLD_OPTS # Use this to switch malloc implementation EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit LimitNOFILE = 5000 Restart=on-failure RestartPreventExitStatus=1 PrivateTmp=false然后重载下systemd服务管理脚本。
systemctl daemon-reload