'\" t .\" Title: ndb_waiter .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 03/11/2024 .\" Manual: MySQL Database System .\" Source: MySQL 8.4 .\" Language: English .\" .TH "NDB_WAITER" "1" "03/11/2024" "MySQL 8\&.4" "MySQL Database System" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" ndb_waiter \- wait for NDB Cluster to reach a given status .SH "SYNOPSIS" .HP \w'\fBndb_waiter\ \fR\fB\fIoptions\fR\fR\ 'u \fBndb_waiter \fR\fB\fIoptions\fR\fR .SH "DESCRIPTION" .PP \fBndb_waiter\fR repeatedly (each 100 milliseconds) prints out the status of all cluster data nodes until either the cluster reaches a given status or the \fB\-\-timeout\fR limit is exceeded, then exits\&. By default, it waits for the cluster to achieve STARTED status, in which all nodes have started and connected to the cluster\&. This can be overridden using the \fB\-\-no\-contact\fR and \fB\-\-not\-started\fR options\&. .PP The node states reported by this utility are as follows: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} NO_CONTACT: The node cannot be contacted\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} UNKNOWN: The node can be contacted, but its status is not yet known\&. Usually, this means that the node has received a START or RESTART command from the management server, but has not yet acted on it\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} NOT_STARTED: The node has stopped, but remains in contact with the cluster\&. This is seen when restarting the node using the management client\*(Aqs RESTART command\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} STARTING: The node\*(Aqs \fBndbd\fR process has started, but the node has not yet joined the cluster\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} STARTED: The node is operational, and has joined the cluster\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} SHUTTING_DOWN: The node is shutting down\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} SINGLE USER MODE: This is shown for all cluster data nodes when the cluster is in single user mode\&. .RE .PP Options that can be used with \fBndb_waiter\fR are shown in the following table\&. Additional descriptions follow the table\&. .PP Usage .sp .if n \{\ .RS 4 .\} .nf ndb_waiter [\-c \fIconnection_string\fR] .fi .if n \{\ .RE .\} Additional Options .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-character\-sets\-dir\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --character-sets-dir=path T} .TE .sp 1 Directory containing character sets\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-connect\-retries\fR .TS allbox tab(:); lB l lB l lB l lB l lB l. T{ Command-Line Format T}:T{ --connect-retries=# T} T{ Type T}:T{ Integer T} T{ Default Value T}:T{ 12 T} T{ Minimum Value T}:T{ 0 T} T{ Maximum Value T}:T{ 12 T} .TE .sp 1 Number of times to retry connection before giving up\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-connect\-retry\-delay\fR .TS allbox tab(:); lB l lB l lB l lB l lB l. T{ Command-Line Format T}:T{ --connect-retry-delay=# T} T{ Type T}:T{ Integer T} T{ Default Value T}:T{ 5 T} T{ Minimum Value T}:T{ 0 T} T{ Maximum Value T}:T{ 5 T} .TE .sp 1 Number of seconds to wait between attempts to contact management server\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-connect\-string\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --connect-string=connection_string T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Same as \fB\-\-ndb\-connectstring\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-core\-file\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --core-file T} .TE .sp 1 Write core file on error; used in debugging\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-defaults\-extra\-file\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --defaults-extra-file=path T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Read given file after global files are read\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-defaults\-file\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --defaults-file=path T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Read default options from given file only\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-defaults\-group\-suffix\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --defaults-group-suffix=string T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Also read groups with concat(group, suffix)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-login\-path\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --login-path=path T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Read given path from login file\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-no\-login\-paths\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --no-login-paths T} .TE .sp 1 Skips reading options from the login path file\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-help\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --help T} .TE .sp 1 Display help text and exit\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-connectstring\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --ndb-connectstring=connection_string T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Set connection string for connecting to \fBndb_mgmd\fR\&. Syntax: [nodeid=\fIid\fR;][host=]\fIhostname\fR[:\fIport\fR]\&. Overrides entries in NDB_CONNECTSTRING and my\&.cnf\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-mgm\-tls\fR .TS allbox tab(:); lB l lB l lB l lB l. T{ Command-Line Format T}:T{ --ndb-mgm-tls=level T} T{ Type T}:T{ Enumeration T} T{ Default Value T}:T{ relaxed T} T{ Valid Values T}:T{ .PP relaxed .PP strict T} .TE .sp 1 Sets the level of TLS support required to connect to the management server; one of relaxed or strict\&. relaxed (the default) means that a TLS connection is attempted, but success is not required; strict means that TLS is required to connect\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-mgmd\-host\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --ndb-mgmd-host=connection_string T} T{ Type T}:T{ String T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Same as \-\-\fBndb\-connectstring\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-nodeid\fR .TS allbox tab(:); lB l lB l lB l. T{ Command-Line Format T}:T{ --ndb-nodeid=# T} T{ Type T}:T{ Integer T} T{ Default Value T}:T{ [none] T} .TE .sp 1 Set node ID for this node, overriding any ID set by \fB\-\-ndb\-connectstring\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-optimized\-node\-selection\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --ndb-optimized-node-selection T} .TE .sp 1 Enable optimizations for selection of nodes for transactions\&. Enabled by default; use \fB\-\-skip\-ndb\-optimized\-node\-selection\fR to disable\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-ndb\-tls\-search\-path\fR .TS allbox tab(:); lB l lB l lB l lB l. T{ Command-Line Format T}:T{ --ndb-tls-search-path=list T} T{ Type T}:T{ Path name T} T{ Default Value (Unix) T}:T{ $HOME/ndb-tls T} T{ Default Value (Windows) T}:T{ $HOMEDIR/ndb-tls T} .TE .sp 1 Specify a list of directories to search for a CA file\&. On Unix platforms, the directory names are separated by colons (:); on Windows systems, the semicolon character (;) is used as the separator\&. A directory reference may be relative or absolute; it may contain one or more environment variables, each denoted by a prefixed dollar sign ($), and expanded prior to use\&. .sp Searching begins with the leftmost named directory and proceeds from left to right until a file is found\&. An empty string denotes an empty search path, which causes all searches to fail\&. A string consisting of a single dot (\&.) indicates that the search path limited to the current working directory\&. .sp If no search path is supplied, the compiled\-in default value is used\&. This value depends on the platform used: On Windows, this is \endb\-tls; on other platforms (including Linux), it is $HOME/ndb\-tls\&. This can be overridden by compiling NDB Cluster using \fB\-DWITH_NDB_TLS_SEARCH_PATH\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-no\-contact\fR, \fB\-n\fR Instead of waiting for the STARTED state, \fBndb_waiter\fR continues running until the cluster reaches NO_CONTACT status before exiting\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-no\-defaults\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --no-defaults T} .TE .sp 1 Do not read default options from any option file other than login file\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-not\-started\fR Instead of waiting for the STARTED state, \fBndb_waiter\fR continues running until the cluster reaches NOT_STARTED status before exiting\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-nowait\-nodes=\fR\fB\fIlist\fR\fR When this option is used, \fBndb_waiter\fR does not wait for the nodes whose IDs are listed\&. The list is comma\-delimited; ranges can be indicated by dashes, as shown here: .sp .if n \{\ .RS 4 .\} .nf $> \fBndb_waiter \-\-nowait\-nodes=1,3,7\-9\fR .fi .if n \{\ .RE .\} .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBImportant\fR .ps -1 .br Do \fInot\fR use this option together with the \fB\-\-wait\-nodes\fR option\&. .sp .5v .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-print\-defaults\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --print-defaults T} .TE .sp 1 Print program argument list and exit\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-timeout=\fR\fB\fIseconds\fR\fR, \fB\-t \fR\fB\fIseconds\fR\fR Time to wait\&. The program exits if the desired state is not achieved within this number of seconds\&. The default is 120 seconds (1200 reporting cycles)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-single\-user\fR The program waits for the cluster to enter single user mode\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-usage\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --usage T} .TE .sp 1 Display help text and exit; same as \fB\-\-help\fR\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-verbose\fR .TS allbox tab(:); lB l lB l lB l lB l lB l. T{ Command-Line Format T}:T{ --verbose=# T} T{ Type T}:T{ Integer T} T{ Default Value T}:T{ 2 T} T{ Minimum Value T}:T{ 0 T} T{ Maximum Value T}:T{ 2 T} .TE .sp 1 Controls verbosity level of printout\&. Possible levels and their effects are listed here: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 0: Do not print (return exit code only; see following for exit codes)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 1: Print final connection status only\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 2: Print status each time it is checked\&. .sp This is the same behavior as in versions of NDB Cluster previous to 8\&.4\&. .RE .sp Exit codes returned by \fBndb_waiter\fR are listed here, with their meanings: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 0: Success\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 1: Wait timed out\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 2: Parameter error, such as an invalid node ID\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} 3: Failed to connect to the management server\&. .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-version\fR .TS allbox tab(:); lB l. T{ Command-Line Format T}:T{ --version T} .TE .sp 1 Display version information and exit\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB\-\-wait\-nodes=\fR\fB\fIlist\fR\fR, \fB\-w \fR\fB\fIlist\fR\fR When this option is used, \fBndb_waiter\fR waits only for the nodes whose IDs are listed\&. The list is comma\-delimited; ranges can be indicated by dashes, as shown here: .sp .if n \{\ .RS 4 .\} .nf $> \fBndb_waiter \-\-wait\-nodes=2,4\-6,10\fR .fi .if n \{\ .RE .\} .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBImportant\fR .ps -1 .br Do \fInot\fR use this option together with the \fB\-\-nowait\-nodes\fR option\&. .sp .5v .RE .RE .PP \fBSample Output\fR. Shown here is the output from \fBndb_waiter\fR when run against a 4\-node cluster in which two nodes have been shut down and then started again manually\&. Duplicate reports (indicated by \&.\&.\&.) are omitted\&. .sp .if n \{\ .RS 4 .\} .nf $> \fB\&./ndb_waiter \-c localhost\fR Connecting to mgmsrv at (localhost) State node 1 STARTED State node 2 NO_CONTACT State node 3 STARTED State node 4 NO_CONTACT Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 UNKNOWN State node 3 STARTED State node 4 NO_CONTACT Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 STARTING State node 3 STARTED State node 4 NO_CONTACT Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 STARTING State node 3 STARTED State node 4 UNKNOWN Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 STARTING State node 3 STARTED State node 4 STARTING Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 STARTED State node 3 STARTED State node 4 STARTING Waiting for cluster enter state STARTED \&.\&.\&. State node 1 STARTED State node 2 STARTED State node 3 STARTED State node 4 STARTED Waiting for cluster enter state STARTED .fi .if n \{\ .RE .\} .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBNote\fR .ps -1 .br .PP If no connection string is specified, then \fBndb_waiter\fR tries to connect to a management on localhost, and reports Connecting to mgmsrv at (null)\&. .sp .5v .RE .SH "COPYRIGHT" .br .PP Copyright \(co 1997, 2024, Oracle and/or its affiliates. .PP This documentation is free software; you can redistribute it and/or modify it only under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. .PP This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. .PP You should have received a copy of the GNU General Public License along with the program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or see http://www.gnu.org/licenses/. .sp .SH "SEE ALSO" For more information, please refer to the MySQL Reference Manual, which may already be installed locally and which is also available online at http://dev.mysql.com/doc/. .SH AUTHOR Oracle Corporation (http://dev.mysql.com/).