mysqlctl

mysqlctl is a command-line client used for managing mysqld instances. It is responsible for bootstrapping tasks such as generating a configuration file for mysqld and initializing the instance and its data directory.

The mysqld_safe watchdog is utilized when present. This helps ensure that mysqld is automatically restarted after failures.

Commands #

init [--wait_time=5m] [--init_db_sql_file=(default)] #

Bootstraps a new mysqld instance, initializes its data directory, and starts the instance. The MySQL version and flavor will be auto-detected, with a minimal configuration file applied. For example:

export VTDATAROOT=/tmp
mysqlctl \
 --alsologtostderr \
 --tablet_uid 101 \
 --mysql_port 12345 \
 init

init_config #

Bootstraps the configuration for a new mysqld instance and initializes its data directory. This command is the same as init except the mysqld server will not be started. For example:

export VTDATAROOT=/tmp
mysqlctl \
 --alsologtostderr \
 --tablet_uid 101 \
 --mysql_port 12345 \
 init_config

reinit_config #

Regenerate new configuration files for an existing mysqld instance (generating new server_id and server_uuid values). This could be helpful to revert configuration changes, or to pick up changes made to the bundled config in newer Vitess versions. For example:

export VTDATAROOT=/tmp
mysqlctl \
 --alsologtostderr \
 --tablet_uid 101 \
 --mysql_port 12345 \
 reinit_config

teardown [--wait_time=5m] [--force] #

This is a destructive operation.

Shuts down a mysqld instance and removes its data directory. For example:

export VTDATAROOT=/tmp
mysqlctl --tablet_uid 101 --alsologtostderr teardown

start [--wait_time=5m] #

Resume an existing mysqld instance that was previously bootstrapped with init or init_config:

export VTDATAROOT=/tmp
mysqlctl --tablet_uid 101 --alsologtostderr start

shutdown [--wait_time=5m] #

Stop a mysqld instance that was previously started with init or start.

For large mysqld instances, you may need to extend the wait_time to shutdown cleanly.

export VTDATAROOT=/tmp
mysqlctl --tablet_uid 101 --alsologtostderr shutdown

Options #

The following global parameters apply to mysqlctl:

NameTypeDefinition
--alsologtostderrbooleanlog to standard error as well as files
--app_idle_timeoutdurationIdle timeout for app connections (default 1m0s)
--app_pool_sizeintSize of the connection pool for app connections (default 40)
--catch-sigpipebooleancatch and ignore SIGPIPE on stdout and stderr if specified
--db-credentials-filestringdb credentials file; send SIGHUP to reload this file
--db-credentials-serverstringdb credentials server type (use 'file' for the file implementation) (default "file")
--db-credentials-vault-addrstringURL to Vault server
--db-credentials-vault-pathstringVault path to credentials JSON blob, e.g.: secret/data/prod/dbcreds
--db-credentials-vault-role-mountpointstringVault AppRole mountpoint; can also be passed using VAULT_MOUNTPOINT environment variable (default "approle")
--db-credentials-vault-role-secretidfilestringPath to file containing Vault AppRole secret_id; can also be passed using VAULT_SECRETID environment variable
--db-credentials-vault-roleidstringVault AppRole id; can also be passed using VAULT_ROLEID environment variable
--db-credentials-vault-timeoutdurationTimeout for vault API operations (default 10s)
--db-credentials-vault-tls-castringPath to CA PEM for validating Vault server certificate
--db-credentials-vault-tokenfilestringPath to file containing Vault auth token; token can also be passed using VAULT_TOKEN environment variable
--db-credentials-vault-ttldurationHow long to cache DB credentials from the Vault server (default 30m0s)
--db_charsetstringCharacter set. Only utf8 or latin1 based character sets are supported.
--db_conn_query_infobooleanenable parsing and processing of QUERY_OK info fields
--db_connect_timeout_msintconnection timeout to mysqld in milliseconds (0 for no timeout)
--db_dba_passwordstringdb dba password
--db_dba_use_sslbooleanSet this flag to false to make the dba connection not use ssl (default true)
--db_dba_userstringdb dba user userKey (default "vt_dba")
--db_flagsuintFlag values as defined by MySQL.
--db_flavorstringFlavor overrid. Valid value is FilePos.
--db_hoststringThe host name for the tcp connection.
--db_portinttcp port
--db_server_namestringserver name of the DB we are connecting to.
--db_socketstringThe unix socket to connect on. If this is specified, host and port will not be used.
--db_ssl_castringconnection ssl ca
--db_ssl_ca_pathstringconnection ssl ca path
--db_ssl_certstringconnection ssl certificate
--db_ssl_keystringconnection ssl key
--db_ssl_modestringSSL mode to connect with. One of disabled, preferred, required, verify_ca & verify_identity.
--db_tls_min_versionstringConfigures the minimal TLS version negotiated when SSL is enabled. Defaults to TLSv1.2. Options: TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3.
--dba_idle_timeoutdurationIdle timeout for dba connections (default 1m0s)
--dba_pool_sizeintSize of the connection pool for dba connections (default 20)
-h, --helpdisplay usage and exit
--keep_logsdurationkeep logs for this long (using ctime) (zero to keep forever)
--keep_logs_by_mtimedurationkeep logs for this long (using mtime) (zero to keep forever)
--lameduck-perioddurationkeep running at least this long after SIGTERM before stopping (default 50ms)
--log_backtrace_atvaluewhen logging hits line file:N, emit a stack trace
--log_dirstringIf non-empty, write log files in this directory
--log_err_stacksbooleanlog stack traces for errors
--log_rotate_max_sizeuintsize in bytes at which logs are rotated (glog.MaxSize) (default 1887436800)
--logtostderrbooleanlog to standard error instead of files
--max-stack-sizeintconfigure the maximum stack size in bytes (default 67108864)
--mysql_portintmysql port (default 3306)
--mysql_server_versionstringMySQL server version to advertise.
--mysql_server_flush_delaydurationDelay after which buffered response will be flushed to the client. (default 100ms)
--mysql_socketstringpath to the mysql socket
--mysqlctl_client_protocolstringthe protocol to use to talk to the mysqlctl server (default "grpc")
--mysqlctl_mycnf_templatestringtemplate file to use for generating the my.cnf file during server init
--mysqlctl_socketstringsocket file to use for remote mysqlctl actions (empty for local actions)
--mysqlctl_client_protocolstringthe protocol to use to talk to the mysqlctl server (default "grpc")
--mysqlctl_mycnf_templatestringtemplate file to use for generating the my.cnf file during server init
--mysqlctl_socketstringsocket file to use for remote mysqlctl actions (empty for local actions)
--onterm_timeoutdurationwait no more than this for OnTermSync handlers before stopping (default 10s)
--pid_filestringIf set, the process will write its pid to the named file, and delete it on graceful shutdown.
--pool_hostname_resolve_intervaldurationif set force an update to all hostnames and reconnect if changed, defaults to 0 (disabled)
--pprofstringsenable profiling
--purge_logs_intervaldurationhow often try to remove old logs (default 1h0m0s)
--replication_connect_retrydurationhow long to wait in between replica reconnect attempts. Only precise to the second. (default 10s)
--security_policystringthe name of a registered security policy to use for controlling access to URLs - empty means allow all for anyone (built-in policies: deny-all, read-only)
--service_mapvaluecomma separated list of services to enable (or disable if prefixed with '-') Example: grpc-queryservice
--socket_filestringLocal unix socket file to listen on
--stderrthresholdvaluelogs at or above this threshold go to stderr (default 1)
--tablet_dirstringThe directory within the vtdataroot to store vttablet/mysql files. Defaults to being generated by the tablet uid.
--tablet_uiduintTablet UID (default 41983)
--vvaluelog level for V logs
-v, --versionbooleanprint binary version
--vmodulestringcomma-separated list of pattern=N settings for file-filtered logging