Fix of Bug#25088048 caused paths to be relative, not absolute, this
proved to be problematic.
Fix is to still ignore current working directory, however switch to
using full path of basedir, which is set to parent directory of bin/
directory where mysqld_safe is located.
References to legacy tool mysql_print_defaults are removed, only
my_print_defaults is used these days.
This will also fix:
Bug#11745176 (11192) MYSQLD_SAFE ONLY EVALUATES --DEFAULTS-FILE OPTION WHEN IT IS THE FIRST OP
Bug#23013510 (80866) MYSQLD_SAFE SHOULD NOT SEARCH $MY_BASEDIR_VERSION/VAR AS DATADIR
Bug#25244898 (84173) MYSQLD_SAFE --NO-DEFAULTS & SILENTLY DOES NOT WORK ANY MORE
Bug#25261472 (84219) INITSCRIPT ERRORS WHEN LAUCHING MYSQLD_SAFE IN NON DEFAULT BASEDIR
Bug#25319392 (84263) MYSQL.SERVER (MYSQL SERVER STARTUP SCRIPT) CAN NOT WORK,AND EXPORT SOME ERROR.
Bug#25319457 MYSQLD_SAFE MIGHT FAIL IF $DATADIR HAS TRAILING /
Bug#25341981 MYSQLD_SAFE ASSUMES INCORRECT BASEDIR WHEN EXECUTED WITH ABSOLUTE PATH
Bug#25356221 (84427) MYSQLD_SAFE FAILS TO START WHEN USING A FIFO FOR LOG-ERROR (REGRESSION)
Bug#25365194 (84447) MYSQLD_SAFE DOESN'T CHECK EXISTENCE OF GIVEN BASEDIR PARAMETER
Bug#25377815 ERRORS WHILE STARTING MYSQLD_SAFE WITH SYM LINK ENABLED
Argument to malloc-lib must be included in restricted list of
directories, symlink guards added, and mysqld and mysqld-version
options restricted to command line only. Don't redirect errors to
stderr.
isn't running
Pass the process id of the manager as a parameter to "wait_for_pid"
and if the manager isn't running, then do not continue to wait.
Also, capture the error message of our process-existence test,
"kill -0", as we expect errors and shouldn't pass them to the user.
Additionally, be a bit more descriptive of what the problem is.
For systems running MySQL through heartbeat, it is imperitive that the startup scripts
not only return correct return values, but do not return until success or failure has been
determined. This is a different behavior than is typically wanted for the startup
of a normal machine.
This patch adds support for a timeout variable for mysql.server. Read from my.cnf, this
variable defaults to 900 (the current default). A value of 0 means not to wait at all for
startup confirmation. A negative value means to wait forever.
Thirty five seconds is entirely too short of a period to wait for a server
to exit. Instead, make a valliant effort to make sure it exits, and only
give up after a very long period (arbitrarily chosen as 15 minutes).
In addition, if we're being asked to restart the server, then don't try
to start again if trying to stop the server failed.
---
Return zero by default, when the script exits.
---
Set return-/exit-value based on whether we successfully dealt with the
PID-file.
---
Don't wait that long if the program we're waiting on exits. It
should only exit if the server is not going to be started.
- WL#3158: IM: Instance configuration extensions;
- WL#3159: IM: --bootstrap and --start-default-instance modes
The following new statements have been added:
- CREATE INSTANCE;
- DROP INSTANCE;
The behaviour of the following statements have been changed:
- SET;
- UNSET;
- FLUSH INSTANCES;
- SHOW INSTANCES;
- SHOW INSTANCE OPTIONS;
Use for now safe_mysqld by default. (unless use-manager is set in the [mysql.server] option in my.cnf)
Search first for defaults files in basedir and then in datadir (like mysqld_safe)
in the 4.1.10a RPMs for SLES9/RHEL3:
- small improvement: use LSB functions to display startup success and failure, if available.
Fall back to more primitive builtin functions otherwise.
- joined two pieces of code performing the same functionality into one "wait_for_pid" function
- added a "reload" function (LSB requirement)