Bug #84172 | The pid-file value is ignored in the /etc/my.cnf option file | ||
---|---|---|---|
Submitted: | 13 Dec 2016 6:22 | Modified: | 24 Feb 2017 2:01 |
Reporter: | monty solomon | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Packaging | Severity: | S3 (Non-critical) |
Version: | 5.7.16 | OS: | CentOS (6.7) |
Assigned to: | CPU Architecture: | Any |
[13 Dec 2016 6:22]
monty solomon
[16 Dec 2016 12:04]
MySQL Verification Team
Hi, Thanks for your report. The pid is set by the "starting" app so not by the mysqld itself so the pid-file parameter is not in the [mysqld] section but in [mysqld-safe] section as mysqld_safe is what's setting it. So this is behaving as expected really and is not a bug. If you feel strongly that our documentation is not clear enough how this works and where it goes you can create a documentation bug but with regards to this one the pid-file is not moving from [mysqld] to [mysqld-safe] Take care Bogdan
[16 Dec 2016 22:03]
monty solomon
The documentation states that the [mysqld] section is widely read but the /etc/init.d/mysqld startup script is limiting itself to just the [mysqld_safe] section when looking for the pid file. The documentation for the startup script states that the startup script reads the [mysqld] option file group but not the [mysqld_safe] group. Here are the relevant excerpts. Server Command Options https://dev.mysql.com/doc/refman/5.7/en/server-options.html mysqld reads options from the [mysqld] and [server] groups. mysqld_safe reads options from the [mysqld], [server], [mysqld_safe], and [safe_mysqld] groups. mysql.server reads options from the [mysqld] and [mysql.server] groups. MySQL Server Startup Script https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html Because mysql.server reads the [mysqld] option file group but not the [mysqld_safe] group
[16 Dec 2016 22:10]
monty solomon
The documentation states in both of those sections that the startup script does not read from the [mysqld_safe] section but we can see that it is explicitly doing so. # grep mysqld_safe /etc/init.d/mysqld get_mysql_option mysqld_safe log-error "/var/log/mysqld.log" get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
[18 Dec 2016 20:19]
MySQL Verification Team
Hi, Yes, as I said, it's documentation fault not server fault. This parameter should be in the [mysqld-safe] section and not inside [mysqld] section, and yes it will not be used with systemd nor by any other starting system other then mysqld_safe (hence it's in mysqld-safe section). I changed the bug category and verified it. When documentation team get to it they'll probably remove the problematic part of the text from our documentation take care Bogdan
[21 Dec 2016 11:47]
monty solomon
I figured out why the pid file in the [mysqld] section used to work. Oracle provides two different distributions of MySQL 5.6 for RHEL 6 and they use two different startup scripts (with different names). The mysql startup script in MySQL-server honors the pid file specified in the [mysqld] section of the /etc/my.cnf file. The mysqld startup script in the mysql-community-server does not honor the pid file specified in the [mysqld] section of the /etc/my.cnf file. MySQL-server-5.6.35-1.el6.x86_64.rpm is available from the download section of the MySQL web site. mysql-community-server-5.6.35-2.el6.x86_64.rpm is available in the yum repository. # tar xvpf MySQL-5.6.35-1.el6.x86_64.rpm-bundle.tar # rpm -ivf MySQL-*5.6.35*rpm --force # rpm -qa | grep ^MySQL MySQL-client-5.6.35-1.el6.x86_64 MySQL-shared-5.6.35-1.el6.x86_64 MySQL-devel-5.6.35-1.el6.x86_64 MySQL-test-5.6.35-1.el6.x86_64 MySQL-shared-compat-5.6.35-1.el6.x86_64 MySQL-server-5.6.35-1.el6.x86_64 MySQL-embedded-5.6.35-1.el6.x86_64 mysql Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using EditLine wrapper Server version: 5.6.35-log MySQL Community Server (GPL) mysql> select @@pid_file; +--------------------------------+ | @@pid_file | +--------------------------------+ | /opt/mysql/dbprod/monty-q0.pid | +--------------------------------+ 1 row in set (0.00 sec) root 15558 1 0 11:33 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/opt/mysql/dbdata1/monty-q0 --pid-file=/opt/mysql/dbprod/monty-q0.pid mysql 17206 15558 0 11:33 pts/1 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/opt/mysql/dbdata1/monty-q0 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/opt/mysql/dblogs1/monty-q0/gen/error.log --open-files-limit=65535 --pid-file=/opt/mysql/dbprod/monty-q0.pid --socket=/opt/mysql/dbprod/monty-q0.sock --port=3306 # yum install mysql-community-*5.6.35* # rpm -qa | grep ^mysql-community mysql-community-devel-5.6.35-2.el6.x86_64 mysql-community-libs-compat-5.6.35-2.el6.x86_64 mysql-community-libs-5.6.35-2.el6.x86_64 mysql-community-client-5.6.35-2.el6.x86_64 mysql-community-embedded-5.6.35-2.el6.x86_64 mysql-community-test-5.6.35-2.el6.x86_64 mysql-community-bench-5.6.35-2.el6.x86_64 mysql-community-common-5.6.35-2.el6.x86_64 mysql-community-server-5.6.35-2.el6.x86_64 mysql-community-embedded-devel-5.6.35-2.el6.x86_64 mysql Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using EditLine wrapper Server version: 5.6.35-log MySQL Community Server (GPL) mysql> select @@pid_file; +----------------------------+ | @@pid_file | +----------------------------+ | /var/run/mysqld/mysqld.pid | +----------------------------+ 1 row in set (0.00 sec) root 20529 1 0 11:41 pts/1 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/opt/mysql/dbdata1/monty-q0 --socket=/opt/mysql/dbprod/monty-q0.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 22221 20529 0 11:41 pts/1 00:00:01 /usr/sbin/mysqld --basedir=/usr --datadir=/opt/mysql/dbdata1/monty-q0 --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/opt/mysql/dblogs1/monty-q0/gen/error.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/opt/mysql/dbprod/monty-q0.sock --port=3306
[24 Feb 2017 2:01]
Paul DuBois
Posted by developer: Noted in 5.5.55, 5.6.36, 5.7.18, 8.0.1 changelogs. For System V init scripts for RPMs, the [mysqld] option-file section was being ignored for some options, such as pid-file.