- Starting mysql service linux
- 2.5.9 Managing MySQL Server with systemd
- Overview of systemd
- Configuring systemd for MySQL
- Configuring Multiple MySQL Instances Using systemd
- Migrating from mysqld_safe to systemd
- How to Start, Stop, and Restart MySQL Server in Linux Ubuntu
- How to Start, Stop, and Restart MySQL Server in Linux Ubuntu
- Using Service Command
- Using init/d Command
- Using systemctl Command
- Conclusion
Starting mysql service linux
MySQL 8.0 Reference Manual Including MySQL NDB Cluster 8.0
2.5.9 Managing MySQL Server with systemd
If you install MySQL using an RPM or Debian package on the following Linux platforms, server startup and shutdown is managed by systemd:
- Enterprise Linux variants version 7 and higher
- SUSE Linux Enterprise Server 12 and higher
- Fedora 29 and higher
If you install MySQL from a generic binary distribution on a platform that uses systemd, you can manually configure systemd support for MySQL following the instructions provided in the post-installation setup section of the MySQL 8.0 Secure Deployment Guide.
If you install MySQL from a source distribution on a platform that uses systemd, obtain systemd support for MySQL by configuring the distribution using the -DWITH_SYSTEMD=1 CMake option. See Section 2.8.7, “MySQL Source-Configuration Options”.
The following discussion covers these topics:
On platforms for which systemd support for MySQL is installed, scripts such as mysqld_safe and the System V initialization script are unnecessary and are not installed. For example, mysqld_safe can handle server restarts, but systemd provides the same capability, and does so in a manner consistent with management of other services rather than by using an application-specific program.
One implication of the non-use of mysqld_safe on platforms that use systemd for server management is that use of [mysqld_safe] or [safe_mysqld] sections in option files is not supported and might lead to unexpected behavior.
Because systemd has the capability of managing multiple MySQL instances on platforms for which systemd support for MySQL is installed, mysqld_multi and mysqld_multi.server are unnecessary and are not installed.
Overview of systemd
systemd provides automatic MySQL server startup and shutdown. It also enables manual server management using the systemctl command. For example:
Alternatively, use the service command (with the arguments reversed), which is compatible with System V systems:
For the systemctl command (and the alternative service command), if the MySQL service name is not mysqld then use the appropriate name. For example, use mysql rather than mysqld on Debian-based and SLES systems.
Support for systemd includes these files:
- mysqld.service (RPM platforms), mysql.service (Debian platforms): systemd service unit configuration file, with details about the MySQL service.
- mysqld@.service (RPM platforms), mysql@.service (Debian platforms): Like mysqld.service or mysql.service , but used for managing multiple MySQL instances.
- mysqld.tmpfiles.d : File containing information to support the tmpfiles feature. This file is installed under the name mysql.conf .
- mysqld_pre_systemd (RPM platforms), mysql-system-start (Debian platforms): Support script for the unit file. This script assists in creating the error log file only if the log location matches a pattern ( /var/log/mysql*.log for RPM platforms, /var/log/mysql/*.log for Debian platforms). In other cases, the error log directory must be writable or the error log must be present and writable for the user running the mysqld process.
Configuring systemd for MySQL
To add or change systemd options for MySQL, these methods are available:
- Use a localized systemd configuration file.
- Arrange for systemd to set environment variables for the MySQL server process.
- Set the MYSQLD_OPTS systemd variable.
To use a localized systemd configuration file, create the /etc/systemd/system/mysqld.service.d directory if it does not exist. In that directory, create a file that contains a [Service] section listing the desired settings. For example:
[Service] LimitNOFILE=max_open_files
Nice=nice_level
LimitCore=core_file_limit
Environment replaceable">/path/to/malloc/library
" Environment replaceable">time_zone_setting
"
The discussion here uses override.conf as the name of this file. Newer versions of systemd support the following command, which opens an editor and permits you to edit the file:
systemctl edit mysqld # RPM platforms systemctl edit mysql # Debian platforms
Whenever you create or change override.conf , reload the systemd configuration, then tell systemd to restart the MySQL service:
systemctl daemon-reload systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
With systemd, the override.conf configuration method must be used for certain parameters, rather than settings in a [mysqld] , [mysqld_safe] , or [safe_mysqld] group in a MySQL option file:
- For some parameters, override.conf must be used because systemd itself must know their values and it cannot read MySQL option files to get them.
- Parameters that specify values otherwise settable only using options known to mysqld_safe must be specified using systemd because there is no corresponding mysqld parameter.
For additional information about using systemd rather than mysqld_safe , see Migrating from mysqld_safe to systemd.
You can set the following parameters in override.conf :
- To set the number of file descriptors available to the MySQL server, use LimitNOFILE in override.conf rather than the open_files_limit system variable for mysqld or —open-files-limit option for mysqld_safe.
- To set the maximum core file size, use LimitCore in override.conf rather than the —core-file-size option for mysqld_safe.
- To set the scheduling priority for the MySQL server, use Nice in override.conf rather than the —nice option for mysqld_safe.
Some MySQL parameters are configured using environment variables:
- LD_PRELOAD : Set this variable if the MySQL server should use a specific memory-allocation library.
- NOTIFY_SOCKET : This environment variable specifies the socket that mysqld uses to communicate notification of startup completion and service status change with systemd. It is set by systemd when the mysqld service is started. The mysqld service reads the variable setting and writes to the defined location. In MySQL 8.0, mysqld uses the Type=notify process startup type. ( Type=forking was used in MySQL 5.7.) With Type=notify , systemd automatically configures a socket file and exports the path to the NOTIFY_SOCKET environment variable.
- TZ : Set this variable to specify the default time zone for the server.
There are multiple ways to specify environment variable values for use by the MySQL server process managed by systemd:
- Use Environment lines in the override.conf file. For the syntax, see the example in the preceding discussion that describes how to use this file.
- Specify the values in the /etc/sysconfig/mysql file (create the file if it does not exist). Assign values using the following syntax:
LD_PRELOAD=/path/to/malloc/library
TZ=time_zone_setting
systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
To specify options for mysqld without modifying systemd configuration files directly, set or unset the MYSQLD_OPTS systemd variable. For example:
systemctl set-environment MYSQLD_OPTS="--general_log=1" systemctl unset-environment MYSQLD_OPTS
MYSQLD_OPTS can also be set in the /etc/sysconfig/mysql file.
After modifying the systemd environment, restart the server to make the changes effective:
systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
For platforms that use systemd, the data directory is initialized if empty at server startup. This might be a problem if the data directory is a remote mount that has temporarily disappeared: The mount point would appear to be an empty data directory, which then would be initialized as a new data directory. To suppress this automatic initialization behavior, specify the following line in the /etc/sysconfig/mysql file (create the file if it does not exist):
Configuring Multiple MySQL Instances Using systemd
This section describes how to configure systemd for multiple instances of MySQL.
Because systemd has the capability of managing multiple MySQL instances on platforms for which systemd support is installed, mysqld_multi and mysqld_multi.server are unnecessary and are not installed.
To use multiple-instance capability, modify the my.cnf option file to include configuration of key options for each instance. These file locations are typical:
For example, to manage two instances named replica01 and replica02 , add something like this to the option file:
[mysqld@replica01] datadir=/var/lib/mysql-replica01 socket=/var/lib/mysql-replica01/mysql.sock port=3307 log-error=/var/log/mysqld-replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 socket=/var/lib/mysql-replica02/mysql.sock port=3308 log-error=/var/log/mysqld-replica02.log
[mysqld@replica01] datadir=/var/lib/mysql-replica01 socket=/var/lib/mysql-replica01/mysql.sock port=3307 log-error=/var/log/mysql/replica01.log [mysqld@replica02] datadir=/var/lib/mysql-replica02 socket=/var/lib/mysql-replica02/mysql.sock port=3308 log-error=/var/log/mysql/replica02.log
The replica names shown here use @ as the delimiter because that is the only delimiter supported by systemd.
Instances then are managed by normal systemd commands, such as:
systemctl start mysqld@replica01 systemctl start mysqld@replica02
To enable instances to run at boot time, do this:
systemctl enable mysqld@replica01 systemctl enable mysqld@replica02
Use of wildcards is also supported. For example, this command displays the status of all replica instances:
systemctl status 'mysqld@replica*'
For management of multiple MySQL instances on the same machine, systemd automatically uses a different unit file:
- mysqld@.service rather than mysqld.service (RPM platforms)
- mysql@.service rather than mysql.service (Debian platforms)
In the unit file, %I and %i reference the parameter passed in after the @ marker and are used to manage the specific instance. For a command such as this:
systemctl start mysqld@replica01
systemd starts the server using a command such as this:
mysqld --defaults-group-suffix=@%I .
The result is that the [server] , [mysqld] , and [mysqld@replica01] option groups are read and used for that instance of the service.
On Debian platforms, AppArmor prevents the server from reading or writing /var/lib/mysql-replica* , or anything other than the default locations. To address this, you must customize or disable the profile in /etc/apparmor.d/usr.sbin.mysqld .
On Debian platforms, the packaging scripts for MySQL uninstallation cannot currently handle mysqld@ instances. Before removing or upgrading the package, you must stop any extra instances manually first.
Migrating from mysqld_safe to systemd
Because mysqld_safe is not installed on platforms that use systemd to manage MySQL, options previously specified for that program (for example, in an [mysqld_safe] or [safe_mysqld] option group) must be specified another way:
- Some mysqld_safe options are also understood by mysqld and can be moved from the [mysqld_safe] or [safe_mysqld] option group to the [mysqld] group. This does not include —pid-file , —open-files-limit , or —nice . To specify those options, use the override.conf systemd file, described previously.
On systemd platforms, use of [mysqld_safe] and [safe_mysqld] option groups is not supported and may lead to unexpected behavior.
How to Start, Stop, and Restart MySQL Server in Linux Ubuntu
Start, stop, or restart your MySQL server; In this tutorial, you will learn three different methods to start, stop and restart mysql server on linux ubuntu using command line.
How to Start, Stop, and Restart MySQL Server in Linux Ubuntu
Using Service Command
If you are using service distribution of MySQL, so you need to run the following service command to start, stop and restart of your MySQL server on Linux ubuntu using command line:
To start MySQL server:
sudo service mysqld start
To stop MySQL server:
To restart MySQL server:
sudo service mysqld restart
Using init/d Command
If you are using init/d distribution of MySQL, so you need to run the following init/d command to start, stop and restart of your MySQL server on Linux ubuntu using command line:
To start MySQL server:
sudo /etc/init.d/mysqld start
To stop MySQL server:
To restart MySQL server:
sudo /etc/init.d/mysqld restart
Using systemctl Command
If you are using systemctl distribution of MySQL, so you need to run the following systemctl command to start, stop and restart of your MySQL server on Linux ubuntu using command line:
To start MySQL server:
sudo systemctl start mysqld
To stop MySQL server:
sudo sudo systemctl stop mysqld
To restart MySQL server:
sudo systemctl restart mysqld
Conclusion
That’s all; In this tutorial, you have learned three different methods to start, stop and restart MySQL server on Linux ubuntu using command line.