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:

  1. export VTDATAROOT=/tmp
  2. mysqlctl \
  3. --alsologtostderr \
  4. --tablet_uid 101 \
  5. --mysql_port 12345 \
  6. 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:

  1. export VTDATAROOT=/tmp
  2. mysqlctl \
  3. --alsologtostderr \
  4. --tablet_uid 101 \
  5. --mysql_port 12345 \
  6. 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:

  1. export VTDATAROOT=/tmp
  2. mysqlctl \
  3. --alsologtostderr \
  4. --tablet_uid 101 \
  5. --mysql_port 12345 \
  6. reinit_config

teardown [—wait_time=5m] [—force]

This is a destructive operation.

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

  1. export VTDATAROOT=/tmp
  2. mysqlctl --tablet_uid 101 --alsologtostderr teardown

start [—wait_time=5m]

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

  1. export VTDATAROOT=/tmp
  2. 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.

  1. export VTDATAROOT=/tmp
  2. 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