vttablet

A VTTablet server controls a running MySQL server. VTTablet supports two primary types of deployments:

  • Managed MySQL (most common)
  • External MySQL

In addition to these deployment types, a partially managed VTTablet is also possible by setting --disable_active_reparents.

Example Usage #

Managed MySQL #

In this mode, Vitess actively manages MySQL:

export TOPOLOGY_FLAGS="--topo_implementation etcd2 --topo_global_server_address localhost:2379 --topo_global_root /vitess/global"
export VTDATAROOT="/tmp"

vttablet \
$TOPOLOGY_FLAGS
--tablet-path $alias
--init_keyspace $keyspace
--init_shard $shard
--init_tablet_type $tablet_type
--port $port
--grpc_port $grpc_port
--service_map 'grpc-queryservice,grpc-tabletmanager,grpc-updatestream'

$alias needs to be of the form: <cell>-id, and the cell should match one of the local cells that was created in the topology. The id can be left padded with zeroes: cell-100 and cell-000000100 are synonymous.

External MySQL #

In this mode, an external MySQL can be used such as AWS RDS, AWS Aurora, Google CloudSQL; or just an existing (vanilla) MySQL installation.

See Unmanaged Tablet for the full guide.

Even if a MySQL is external, you can still make vttablet perform some management functions. They are as follows:

  • --disable_active_reparents: If this flag is set, then any reparent or replica commands will not be allowed. These are InitShardPrimary, PlannedReparentShard, EmergencyReparentShard, and ReparentTablet. In this mode, you should use the TabletExternallyReparented command to inform vitess of the current primary.
  • --replication_connect_retry: This value is give to mysql when it connects a replica to the primary as the retry duration parameter.
  • --enable_replication_reporter: If this flag is set, then vttablet will transmit replica lag related information to the vtgates, which will allow it to balance load better. Additionally, enabling this will also cause vttablet to restart replication if it was stopped. However, it will do this only if --disable_active_reparents was not turned on.
  • --heartbeat_enable and --heartbeat_interval duration: cause vttablet to write heartbeats to the sidecar database. This information is also used by the replication reporter to assess replica lag.

Options #

The following global options apply to vttablet:

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)
--azblob_backup_account_key_filestringPath to a file containing the Azure Storage account key; if this flag is unset, the environment variable VT_AZBLOB_ACCOUNT_KEY will be used as the key itself (NOT a file path).
--azblob_backup_account_namestringAzure Storage Account name for backups; if this flag is unset, the environment variable VT_AZBLOB_ACCOUNT_NAME will be used.
--azblob_backup_container_namestringAzure Blob Container Name.
--azblob_backup_parallelismintAzure Blob operation parallelism (requires extra memory when increased). (default 1)
--azblob_backup_storage_rootstringRoot prefix for all backup-related Azure Blobs; this should exclude both initial and trailing '/' (e.g. just 'a/b' not '/a/b/').
--backup_engine_implementationstringSpecifies which implementation to use for creating new backups (builtin or xtrabackup). Restores will always be done with whichever engine created a given backup. (default "builtin")
--backup_storage_block_sizeintif backup_storage_compress is true, backup_storage_block_size sets the byte size for each block while compressing (default is 250000). (default 250000)
--backup_storage_compressbooleanif set, the backup files will be compressed. (default true)
--backup_storage_implementationstringWhich backup storage implementation to use for creating and restoring backups.
--backup_storage_number_blocksintif backup_storage_compress is true, backup_storage_number_blocks sets the number of blocks that can be processed, at once, before the writer blocks, during compression (default is 2). It should be equal to the number of CPUs available for compression. (default 2)
--binlog_hoststringPITR restore parameter: hostname/IP of binlog server.
--binlog_passwordstringPITR restore parameter: password of binlog server.
--binlog_player_grpc_castringthe server ca to use to validate servers when connecting
--binlog_player_grpc_certstringthe cert to use to connect
--binlog_player_grpc_crlstringthe server crl to use to validate server certificates when connecting
--binlog_player_grpc_keystringthe key to use to connect
--binlog_player_grpc_server_namestringthe server name to use to validate server certificate
--binlog_player_protocolstringthe protocol to download binlogs from a vttablet (default "grpc")
--binlog_portintPITR restore parameter: port of binlog server.
--binlog_ssl_castringPITR restore parameter: Filename containing TLS CA certificate to verify binlog server TLS certificate against.
--binlog_ssl_certstringPITR restore parameter: Filename containing mTLS client certificate to present to binlog server as authentication.
--binlog_ssl_keystringPITR restore parameter: Filename containing mTLS client private key for use in binlog server authentication.
--binlog_ssl_server_namestringPITR restore parameter: TLS server name (common name) to verify against for the binlog server we are connecting to (If not set: use the hostname or IP supplied in --binlog_host).
--binlog_userstringPITR restore parameter: username of binlog server.
--builtinbackup-file-read-buffer-sizeuintread files using an IO buffer of this many bytes. Golang defaults are used when set to 0.
--builtinbackup-file-write-buffer-sizeuintwrite files using an IO buffer of this many bytes. Golang defaults are used when set to 0. (default 2097152)
--builtinbackup_mysqld_timeoutdurationhow long to wait for mysqld to shutdown at the start of the backup. (default 10m0s)
--builtinbackup_progressdurationhow often to send progress updates when backing up large files. (default 5s)
--catch-sigpipecatch and ignore SIGPIPE on stdout and stderr if specified
--ceph_backup_storage_configstringPath to JSON config file for ceph backup storage. (default "ceph_backup_config.json")
--compression-engine-namestringcompressor engine used for compression. (default "pargzip")
--compression-levelintwhat level to pass to the compressor. (default 1)
--consolidator-stream-query-sizeintConfigure the stream consolidator query size in bytes. Setting to 0 disables the stream consolidator. (default 2097152)
--consolidator-stream-total-sizeintConfigure the stream consolidator total size in bytes. Setting to 0 disables the stream consolidator. (default 134217728)
--consul_auth_static_filestringJSON File to read the topos/tokens from.
--datadog-agent-hoststringhost to send spans to. if empty, no tracing will be done
--datadog-agent-portstringport to send spans to. if empty, no tracing will be done
--db-credentials-filestringdb credentials file; send SIGHUP to reload this file
--db-credentials-serverstringdb credentials server type ('file' - file implementation; 'vault' - HashiCorp Vault 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_allprivs_passwordstringdb allprivs password
--db_allprivs_use_sslbooleanSet this flag to false to make the allprivs connection to not use ssl (default true)
--db_allprivs_userstringdb allprivs user userKey (default "vt_allprivs")
--db_app_passwordstringdb app password
--db_app_use_sslbooleanSet this flag to false to make the app connection to not use ssl (default true)
--db_app_userstringdb app user userKey (default "vt_app")
--db_appdebug_passwordstringdb appdebug password
--db_appdebug_use_sslbooleanSet this flag to false to make the appdebug connection to not use ssl (default true)
--db_appdebug_userstringdb appdebug user userKey (default "vt_appdebug")
--db_charsetstringCharacter set used for this tablet. (default "utf8mb4")
--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 to not use ssl (default true)
--db_dba_userstringdb dba user userKey (default "vt_dba")
--db_erepl_passwordstringdb erepl password
--db_erepl_use_sslbooleanSet this flag to false to make the erepl connection to not use ssl (default true)
--db_erepl_userstringdb erepl user userKey (default "vt_erepl")
--db_filtered_passwordstringdb filtered password
--db_filtered_use_sslbooleanSet this flag to false to make the filtered connection to not use ssl (default true)
--db_filtered_userstringdb filtered user userKey (default "vt_filtered")
--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_repl_passwordstringdb repl password
--db_repl_use_sslbooleanSet this flag to false to make the repl connection to not use ssl (default true)
--db_repl_userstringdb repl user userKey (default "vt_repl")
--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_modeSslModeSSL 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)
--degraded_thresholddurationreplication lag after which a replica is considered degraded (default 30s)
--disable-replication-managerbooleanDisable replication manager to prevent replication repairs.
--disable_active_reparentsbooleanif set, do not allow active reparents. Use this to protect a cluster using external reparents.
--emit_statsbooleanIf set, emit stats to push-based monitoring and stats backends
--enable-consolidatorbooleanSynonym to -enable_consolidator (default true)
--enable-consolidator-replicasbooleanSynonym to -enable_consolidator_replicas
--enable-lag-throttlerbooleanSynonym to -enable_lag_throttler
--enable-tx-throttlerbooleanSynonym to -enable_tx_throttler
--enable-per-workload-table-metricsbooleanSynonym to --enable_per_workload_table_metrics
--enable_consolidatorbooleanThis option enables the query consolidator. (default true)
--enable_consolidator_replicasbooleanThis option enables the query consolidator only on replicas.
--enable_hot_row_protectionbooleanIf true, incoming transactions for the same row (range) will be queued and cannot consume all txpool slots.
--enable_hot_row_protection_dry_runbooleanIf true, hot row protection is not enforced but logs if transactions would have been queued.
--enable_lag_throttlerbooleanIf true, vttablet will run a throttler service, and will implicitly enable heartbeats
--enable_replication_reporterbooleanUse polling to track replication lag.
--enable_transaction_limitbooleanIf true, limit on number of transactions open at the same time will be enforced for all users. User trying to open a new transaction after exhausting their limit will receive an error immediately, regardless of whether there are available slots or not.
--enable_transaction_limit_dry_runbooleanIf true, limit on number of transactions open at the same time will be tracked for all users, but not enforced.
--enable_tx_throttlerbooleanIf true replication-lag-based throttling on transactions will be enabled.
--enable_per_workload_table_metricsbooleanIf true, query counts and query error metrics include a label that identifies the workload.
--enforce-tableacl-configif this flag is true, vttablet will fail to start if a valid tableacl config does not exist
--enforce_strict_trans_tablesbooleanIf true, vttablet requires MySQL to run with STRICT_TRANS_TABLES or STRICT_ALL_TABLES on. It is recommended to not turn this flag off. Otherwise MySQL may alter your supplied values before saving them to the database. (default true)
--external-compressorstringcommand with arguments to use when compressing a backup.
--external-compressor-extensionstringextension to use when using an external compressor.
--external-decompressorstringcommand with arguments to use when decompressing a backup.
--file_backup_storage_rootstringRoot directory for the file backup storage.
--filecustomrulesstringfile based custom rule path
--filecustomrules_watchbooleanset up a watch on the target file and reload query rules when it changes
--gc_check_intervaldurationInterval between garbage collection checks (default 1h0m0s)
--gc_purge_check_intervaldurationInterval between purge discovery checks (default 1m0s)
--gcs_backup_storage_bucketstringGoogle Cloud Storage bucket to use for backups.
--gcs_backup_storage_rootstringRoot prefix for all backup-related object names.
--gh-ost-pathstringoverride default gh-ost binary full path
--grpc_auth_modestringWhich auth plugin implementation to use (eg: static)
--grpc_auth_mtls_allowed_substringsstringList of substrings of at least one of the client certificate names (separated by colon).
--grpc_auth_static_client_credsstringWhen using grpc_static_auth in the server, this file provides the credentials to use to authenticate with server.
--grpc_auth_static_password_filestringJSON File to read the users/passwords from.
--grpc_castringserver CA to use for gRPC connections, requires TLS, and enforces client certificate check
--grpc_certstringserver certificate to use for gRPC connections, requires grpc_key, enables TLS
--grpc_compressionstringWhich protocol to use for compressing gRPC. Default: nothing. Supported: snappy
--grpc_crlstringpath to a certificate revocation list in PEM format, client certificates will be further verified against this file during TLS handshake
--grpc_enable_optional_tlsbooleanenable optional TLS mode when a server accepts both TLS and plain-text connections on the same port
--grpc_enable_tracingbooleanEnable gRPC tracing.
--grpc_initial_conn_window_sizeintgRPC initial connection window size
--grpc_initial_window_sizeintgRPC initial window size
--grpc_keepalive_timedurationAfter a duration of this time, if the client doesn't see any activity, it pings the server to see if the transport is still alive. (default 10s)
--grpc_keepalive_timeoutdurationAfter having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that the connection is closed. (default 10s)
--grpc_keystringserver private key to use for gRPC connections, requires grpc_cert, enables TLS
--grpc_max_connection_agedurationMaximum age of a client connection before GoAway is sent. (default 2562047h47m16.854775807s)
--grpc_max_connection_age_gracedurationAdditional grace period after grpc_max_connection_age, after which connections are forcibly closed. (default 2562047h47m16.854775807s)
--grpc_max_message_sizeintMaximum allowed RPC message size. Larger messages will be rejected by gRPC with the error 'exceeding the max size'. (default 16777216)
--grpc_portintPort to listen on for gRPC calls. If zero, do not listen.
--grpc_prometheusbooleanEnable gRPC monitoring with Prometheus.
--grpc_server_castringpath to server CA in PEM format, which will be combine with server cert, return full certificate chain to clients
--grpc_server_initial_conn_window_sizeintgRPC server initial connection window size
--grpc_server_initial_window_sizeintgRPC server initial window size
--grpc_server_keepalive_enforcement_policy_min_timedurationgRPC server minimum keepalive time (default 10s)
--grpc_server_keepalive_enforcement_policy_permit_without_streambooleangRPC server permit client keepalive pings even when there are no active streams (RPCs)
--health_check_intervaldurationInterval between health checks (default 20s)
--heartbeat_enablebooleanIf true, vttablet records (if master) or checks (if replica) the current time of a replication heartbeat in the table _vt.heartbeat. The result is used to inform the serving state of the vttablet via healthchecks.
--heartbeat_intervaldurationHow frequently to read and write replication heartbeat. (default 1s)
--heartbeat_on_demand_durationdurationIf non-zero, heartbeats are only written upon consumer request, and only run for up to given duration following the request. Frequent requests can keep the heartbeat running consistently; when requests are infrequent heartbeat may completely stop between requests
-h, --helpbooleandisplay usage and exit
--hot_row_protection_concurrent_transactionsintNumber of concurrent transactions let through to the txpool/MySQL for the same hot row. Should be > 1 to have enough 'ready' transactions in MySQL and benefit from a pipelining effect. (default 5)
--hot_row_protection_max_global_queue_sizeintGlobal queue limit across all row (ranges). Useful to prevent that the queue can grow unbounded. (default 1000)
--hot_row_protection_max_queue_sizeintMaximum number of BeginExecute RPCs which will be queued for the same row (range). (default 20)
--init_db_name_overridestring(init parameter) override the name of the db used by vttablet. Without this flag, the db name defaults to vt_
--init_keyspacestring(init parameter) keyspace to use for this tablet
--init_populate_metadataboolean(init parameter) populate metadata tables even if restore_from_backup is disabled. If restore_from_backup is enabled, metadata tables are always populated regardless of this flag.
--init_shardstring(init parameter) shard to use for this tablet
--init_tablet_typestring(init parameter) the tablet type to use for this tablet.
--init_tagsStringMap(init parameter) comma separated list of key:value pairs used to tag the tablet
--init_timeoutduration(init parameter) timeout to use for the init phase. (default 1m0s)
--jaeger-agent-hoststringhost and port to send spans to. if empty, no tracing will be done
--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)
--lock-timeoutdurationMaximum time for which a shard/keyspace lock can be acquired for (default 45s)
--lock_tables_timeoutdurationHow long to keep the table locked before timing out (default 1m0s)
--log_backtrace_attraceLocationwhen logging hits line file:N, emit a stack trace (default :0)
--log_dirstringIf non-empty, write log files in this directory
--log_err_stacksbooleanlog stack traces for errors
--log_queriesbooleanEnable query logging to syslog.
--log_queries_to_filestringEnable query logging to the specified file
--log_rotate_max_sizeuintsize in bytes at which logs are rotated (glog.MaxSize) (default 1887436800)
--logtostderrbooleanlog to standard error instead of files
--manifest-external-decompressorstringcommand with arguments to store in the backup manifest when compressing a backup with an external compression engine.
--max-stack-sizeintconfigure the maximum stack size in bytes (default 67108864)
--max_concurrent_online_ddlintMaximum number of online DDL changes that may run concurrently (default 256)
--migration_check_intervaldurationInterval between migration checks (default 1m0s)
--mycnf-filestringpath to my.cnf, if reading all config params from there
--mycnf_bin_log_pathstringmysql binlog path
--mycnf_data_dirstringdata directory for mysql
--mycnf_error_log_pathstringmysql error log path
--mycnf_general_log_pathstringmysql general log path
--mycnf_innodb_data_home_dirstringInnodb data home directory
--mycnf_innodb_log_group_home_dirstringInnodb log group home directory
--mycnf_master_info_filestringmysql master.info file
--mycnf_mysql_portintport mysql is listening on
--mycnf_pid_filestringmysql pid file
--mycnf_relay_log_index_pathstringmysql relay log index path
--mycnf_relay_log_info_pathstringmysql relay log info path
--mycnf_relay_log_pathstringmysql relay log path
--mycnf_secure_file_privstringmysql path for loading secure files
--mycnf_server_idintmysql server id of the server (if specified, mycnf-file will be ignored)
--mycnf_slow_log_pathstringmysql slow query log path
--mycnf_socket_filestringmysql socket file
--mycnf_tmp_dirstringmysql tmp directory
--mysql_server_versionstringMySQL server version to advertise.
--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)
--onclose_timeoutdurationwait no more than this for OnClose handlers before stopping (default 10s)
--onterm_timeoutdurationwait no more than this for OnTermSync handlers before stopping (default 10s)
--opentsdb_uristringURI of opentsdb /api/put method
--pid_filestringIf set, the process will write its pid to the named file, and delete it on graceful shutdown.
--pitr_gtid_lookup_timeoutdurationPITR restore parameter: timeout for fetching gtid from timestamp. (default 1m0s)
--pool_hostname_resolve_intervaldurationif set force an update to all hostnames and reconnect if changed, defaults to 0 (disabled)
--portintport for the server
--pprofstringsenable profiling
--pt-osc-pathstringoverride default pt-online-schema-change binary full path
--publish_retry_intervaldurationhow long vttablet waits to retry publishing the tablet record (default 30s)
--purge_logs_intervaldurationhow often try to remove old logs (default 1h0m0s)
--query-log-stream-handlerstringURL handler for streaming queries log (default "/debug/querylog")
--querylog-filter-tagstringstring that must be present in the query for it to be logged; if using a value as the tag, you need to disable query normalization
--querylog-formatstringformat for query logs ("text" or "json") (default "text")
--querylog-row-thresholduintNumber of rows a query has to return or affect before being logged; not useful for streaming queries. 0 means all queries will be logged.
--queryserver-config-acl-exempt-aclstringan acl that exempt from table acl checking (this acl is free to access any vitess tables).
--queryserver-config-annotate-queriesbooleanprefix queries to MySQL backend with comment indicating vtgate principal (user) and target tablet type
--queryserver-config-enable-table-acl-dry-runbooleanIf this flag is enabled, tabletserver will emit monitoring metrics and let the request pass regardless of table acl check results
--queryserver-config-idle-timeoutfloatquery server idle timeout (in seconds), vttablet manages various mysql connection pools. This config means if a connection has not been used in given idle timeout, this connection will be removed from pool. This effectively manages number of connection objects and optimize the pool performance. (default 1800)
--queryserver-config-max-result-sizeintquery server max result size, maximum number of rows allowed to return from vttablet for non-streaming queries. (default 10000)
--queryserver-config-message-postpone-capintquery server message postpone cap is the maximum number of messages that can be postponed at any given time. Set this number to substantially lower than transaction cap, so that the transaction pool isn't exhausted by the message subsystem. (default 4)
--queryserver-config-olap-transaction-timeoutfloatquery server transaction timeout (in seconds), after which a transaction in an OLAP session will be killed (default 30)
--queryserver-config-passthrough-dmlsbooleanquery server pass through all dml statements without rewriting
--queryserver-config-pool-conn-max-lifetimefloatquery server connection max lifetime (in seconds), vttablet manages various mysql connection pools. This config means if a connection has lived at least this long, it connection will be removed from pool upon the next time it is returned to the pool.
--queryserver-config-pool-sizeintquery server read pool size, connection pool is used by regular queries (non streaming, not in a transaction) (default 16)
--queryserver-config-query-cache-lfubooleanquery server cache algorithm. when set to true, a new cache algorithm based on a TinyLFU admission policy will be used to improve cache behavior and prevent pollution from sparse queries (default true)
--queryserver-config-query-cache-memoryintquery server query cache size in bytes, maximum amount of memory to be used for caching. vttablet analyzes every incoming query and generate a query plan, these plans are being cached in a lru cache. This config controls the capacity of the lru cache. (default 33554432)
--queryserver-config-query-cache-sizeintquery server query cache size, maximum number of queries to be cached. vttablet analyzes every incoming query and generate a query plan, these plans are being cached in a lru cache. This config controls the capacity of the lru cache. (default 5000)
--queryserver-config-query-pool-timeoutfloatquery server query pool timeout (in seconds), it is how long vttablet waits for a connection from the query pool. If set to 0 (default) then the overall query timeout is used instead.
--queryserver-config-query-pool-waiter-capintquery server query pool waiter limit, this is the maximum number of queries that can be queued waiting to get a connection (default 5000)
--queryserver-config-query-timeoutfloatquery server query timeout (in seconds), this is the query timeout in vttablet side. If a query takes more than this timeout, it will be killed. (default 30)
--queryserver-config-schema-change-signalbooleanquery server schema signal, will signal connected vtgates that schema has changed whenever this is detected. VTGates will need to have -schema_change_signal enabled for this to work (default true)
--queryserver-config-schema-reload-timefloatquery server schema reload time, how often vttablet reloads schemas from underlying MySQL instance in seconds. vttablet keeps table schemas in its own memory and periodically refreshes it from MySQL. This config controls the reload time. (default 1800)
--queryserver-config-stream-buffer-sizeintquery server stream buffer size, the maximum number of bytes sent from vttablet for each stream call. It's recommended to keep this value in sync with vtgate's stream_buffer_size. (default 32768)
--queryserver-config-stream-pool-sizeintquery server stream connection pool size, stream pool is used by stream queries: queries that return results to client in a streaming fashion (default 200)
--queryserver-config-stream-pool-timeoutfloatquery server stream pool timeout (in seconds), it is how long vttablet waits for a connection from the stream pool. If set to 0 (default) then there is no timeout.
--queryserver-config-stream-pool-waiter-capintquery server stream pool waiter limit, this is the maximum number of streaming queries that can be queued waiting to get a connection
--queryserver-config-strict-table-aclonly allow queries that pass table acl checks
--queryserver-config-terse-errorsbooleanprevent bind vars from escaping in client error messages
--queryserver-config-transaction-capintquery server transaction cap is the maximum number of transactions allowed to happen at any given point of a time for a single vttablet. E.g. by setting transaction cap to 100, there are at most 100 transactions will be processed by a vttablet and the 101th transaction will be blocked (and fail if it cannot get connection within specified timeout) (default 20)
--queryserver-config-transaction-timeoutfloatquery server transaction timeout (in seconds), a transaction will be killed if it takes longer than this value (default 30)
--queryserver-config-truncate-error-leninttruncate errors sent to client if they are longer than this value (0 means do not truncate)
--queryserver-config-txpool-timeoutfloatquery server transaction pool timeout, it is how long vttablet waits if tx pool is full (default 1)
--queryserver-config-txpool-waiter-capintquery server transaction pool waiter limit, this is the maximum number of transactions that can be queued waiting to get a connection (default 5000)
--queryserver-config-warn-result-sizeintquery server result size warning threshold, warn if number of rows returned from vttablet for non-streaming queries exceeds this
--queryserver-enable-settings-poolbooleanEnable pooling of connections with modified system settings (default true)
--queryserver-enable-viewsbooleanEnable views support in vttablet.
--queryserver_enable_online_ddlbooleanEnable online DDL. (default true)
--redact-debug-ui-queriesbooleanredact full queries and bind variables from debug UI
--relay_log_max_itemsintMaximum number of rows for VReplication target buffering. (default 5000)
--relay_log_max_sizeintMaximum buffer size (in bytes) for VReplication target buffering. If single rows are larger than this, a single row is buffered at a time. (default 250000)
--remote_operation_timeoutdurationtime to wait for a remote operation (default 15s)
--replication_connect_retrydurationhow long to wait in between replica reconnect attempts. Only precise to the second. (default 10s)
--restore_concurrencyint(init restore parameter) how many concurrent files to restore at once (default 4)
--restore_from_backupboolean(init restore parameter) will check BackupStorage for a recent backup at startup and start there
--restore_from_backup_tsstring(init restore parameter) if set, restore the latest backup taken at or before this timestamp. Example: '2021-04-29.133050'
--retain_online_ddl_tablesdurationHow long should vttablet keep an old migrated table before purging it (default 24h0m0s)
--s3_backup_aws_endpointstringendpoint of the S3 backend (region must be provided).
--s3_backup_aws_regionstringAWS region to use. (default "us-east-1")
--s3_backup_aws_retriesintAWS request retries. (default -1)
--s3_backup_force_path_stylebooleanforce the s3 path style.
--s3_backup_log_levelstringdetermine the S3 loglevel to use from LogOff, LogDebug, LogDebugWithSigning, LogDebugWithHTTPBody, LogDebugWithRequestRetries, LogDebugWithRequestErrors. (default "LogOff")
--s3_backup_server_side_encryptionstringserver-side encryption algorithm (e.g., AES256, aws:kms, sse_c:/path/to/key/file).
--s3_backup_storage_bucketstringS3 bucket to use for backups.
--s3_backup_storage_rootstringroot prefix for all backup-related object names.
--s3_backup_tls_skip_verify_certbooleanskip the 'certificate is valid' check for SSL connections.
--sanitize_log_messagesbooleanRemove potentially sensitive information in tablet INFO, WARNING, and ERROR log messages such as query parameters.
--schema-change-reload-timeoutdurationquery server schema change reload timeout, this is how long to wait for the signaled schema reload operation to complete before giving up (default 30s)
--schema-version-max-age-secondsintMax age of schema version records to kept in memory by the vreplication historian
--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_mapstringscomma separated list of services to enable (or disable if prefixed with '-') Example: grpc-queryservice
--serving_state_grace_perioddurationhow long to pause after broadcasting health to vtgate, before enforcing a new serving state
--shard_sync_retry_delaydurationdelay between retries of updates to keep the tablet and its shard record in sync (default 30s)
--shutdown_grace_periodfloathow long to wait (in seconds) for queries and transactions to complete during graceful shutdown.
--sql-max-length-errorsinttruncate queries in error logs to the given length (default unlimited)
--sql-max-length-uiinttruncate queries in debug UIs to the given length (default 512) (default 512)
--srv_topo_cache_refreshdurationhow frequently to refresh the topology for cached entries (default 1s)
--srv_topo_cache_ttldurationhow long to use cached entries for topology (default 1s)
--srv_topo_timeoutdurationtopo server timeout (default 5s)
--stats_backendstringThe name of the registered push-based monitoring/stats backend to use
--stats_combine_dimensionsstringList of dimensions to be combined into a single "all" value in exported stats vars
--stats_common_tagsstringsComma-separated list of common tags for the stats backend. It provides both label and values. Example: label1:value1,label2:value2
--stats_drop_variablesstringVariables to be dropped from the list of exported variables.
--stats_emit_perioddurationInterval between emitting stats to all registered backends (default 1m0s)
--statsd_addressstringAddress for statsd client
--statsd_sample_ratefloatSample rate for statsd metrics (default 1)
--stderrthresholdseveritylogs at or above this threshold go to stderr (default 1)
--stream_health_buffer_sizeuintmax streaming health entries to buffer per streaming health client (default 20)
--table-acl-configstringpath to table access checker config file; send SIGHUP to reload this file
--table-acl-config-reload-intervaldurationTicker to reload ACLs. Duration flag, format e.g.: 30s. Default: do not reload
--table_gc_lifecyclestringStates for a DROP TABLE garbage collection cycle. Default is 'hold,purge,evac,drop', use any subset ('drop' implcitly always included) (default "hold,purge,evac,drop")
--tablet-pathstringtablet alias
--tablet_configstringYAML file config for tablet
--tablet_dirstringThe directory within the vtdataroot to store vttablet/mysql files. Defaults to being generated by the tablet uid.
--tablet_grpc_castringthe server ca to use to validate servers when connecting
--tablet_grpc_certstringthe cert to use to connect
--tablet_grpc_crlstringthe server crl to use to validate server certificates when connecting
--tablet_grpc_keystringthe key to use to connect
--tablet_grpc_server_namestringthe server name to use to validate server certificate
--tablet_hostnamestringif not empty, this hostname will be assumed instead of trying to resolve it
--tablet_manager_grpc_castringthe server ca to use to validate servers when connecting
--tablet_manager_grpc_certstringthe cert to use to connect
--tablet_manager_grpc_concurrencyintconcurrency to use to talk to a vttablet server for performance-sensitive RPCs (like ExecuteFetchAs{Dba,AllPrivs,App}) (default 8)
--tablet_manager_grpc_connpool_sizeintnumber of tablets to keep tmclient connections open to (default 100)
--tablet_manager_grpc_crlstringthe server crl to use to validate server certificates when connecting
--tablet_manager_grpc_keystringthe key to use to connect
--tablet_manager_grpc_server_namestringthe server name to use to validate server certificate
--tablet_manager_protocolstringProtocol to use to make tabletmanager RPCs to vttablets. (default "grpc")
--tablet_protocolstringProtocol to use to make queryservice RPCs to vttablets. (default "grpc")
--throttle_check_as_check_selfbooleanShould throttler/check return a throttler/check-self result (changes throttler behavior for writes)
--throttle_metrics_querySELECTOverride default heartbeat/lag metric. Use either SELECT (must return single row, single value) or SHOW GLOBAL ... LIKE ... queries. Set -throttle_metrics_threshold respectively.
--throttle_metrics_thresholdfloatOverride default throttle threshold, respective to -throttle_metrics_query (default 1.7976931348623157e+308)
--throttle_tablet_typesstringComma separated VTTablet types to be considered by the throttler. default: 'replica'. example: 'replica,rdonly'. 'replica' aways implicitly included (default "replica")
--throttle_thresholddurationReplication lag threshold for default lag throttling (default 1s)
--throttler-config-via-topobooleanWhen 'true', read config from topo service and ignore throttle_threshold, throttle_metrics_threshold, throttle_metrics_query, throttle_check_as_check_self
--topo_consul_lock_delaydurationLockDelay for consul session. (default 15s)
--topo_consul_lock_session_checksstringList of checks for consul session. (default "serfHealth")
--topo_consul_lock_session_ttlstringTTL for consul session.
--topo_consul_watch_poll_durationdurationtime of the long poll for watch queries. (default 30s)
--topo_etcd_lease_ttlintLease TTL for locks and leader election. The client will use KeepAlive to keep the lease going. (default 30)
--topo_etcd_tls_castringpath to the ca to use to validate the server cert when connecting to the etcd topo server
--topo_etcd_tls_certstringpath to the client cert to use to connect to the etcd topo server, requires topo_etcd_tls_key, enables TLS
--topo_etcd_tls_keystringpath to the client key to use to connect to the etcd topo server, enables TLS
--topo_global_rootstringthe path of the global topology data in the global topology server
--topo_global_server_addressstringthe address of the global topology server
--topo_implementationstringthe topology implementation to use
--topo_k8s_contextstringThe kubeconfig context to use, overrides the 'current-context' from the config
--topo_k8s_kubeconfigstringPath to a valid kubeconfig file. When running as a k8s pod inside the same cluster you wish to use as the topo, you may omit this and the below arguments, and Vitess is capable of auto-discovering the correct values. https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod
--topo_k8s_namespacestringThe kubernetes namespace to use for all objects. Default comes from the context or in-cluster config
--topo_zk_auth_filestringauth to use when connecting to the zk topo server, file contents should be :, e.g., digest:user:pass
--topo_zk_base_timeoutdurationzk base timeout (see zk.Connect) (default 30s)
--topo_zk_max_concurrencyintmaximum number of pending requests to send to a Zookeeper server. (default 64)
--topo_zk_tls_castringthe server ca to use to validate servers when connecting to the zk topo server
--topo_zk_tls_certstringthe cert to use to connect to the zk topo server, requires topo_zk_tls_key, enables TLS
--topo_zk_tls_keystringthe key to use to connect to the zk topo server, enables TLS
--topocustomrule_cellstringtopo cell for customrules file. (default "global")
--topocustomrule_pathstringpath for customrules file. Disabled if empty.
--tracerstringtracing service to use (default "noop")
--tracing-enable-loggingbooleanwhether to enable logging in the tracing service
--tracing-sampling-ratefloatsampling rate for the probabilistic jaeger sampler (default 0.1)
--tracing-sampling-typestringsampling strategy to use for jaeger. possible values are 'const', 'probabilistic', 'rateLimiting', or 'remote' (default "const")
--track_schema_versionsbooleanWhen enabled, vttablet will store versions of schemas at each position that a DDL is applied and allow retrieval of the schema corresponding to a position
--transaction-log-stream-handlerstringURL handler for streaming transactions log (default "/debug/txlog")
--transaction_limit_by_componentbooleanInclude CallerID.component when considering who the user is for the purpose of transaction limit.
--transaction_limit_by_principalbooleanInclude CallerID.principal when considering who the user is for the purpose of transaction limit. (default true)
--transaction_limit_by_subcomponentbooleanInclude CallerID.subcomponent when considering who the user is for the purpose of transaction limit.
--transaction_limit_by_usernamebooleanInclude VTGateCallerID.username when considering who the user is for the purpose of transaction limit. (default true)
--transaction_limit_per_userfloatMaximum number of transactions a single user is allowed to use at any time, represented as fraction of -transaction_cap. (default 0.4)
--twopc_abandon_agefloattime in seconds. Any unresolved transaction older than this time will be sent to the coordinator to be resolved.
--twopc_coordinator_addressstringaddress of the (VTGate) process(es) that will be used to notify of abandoned transactions.
--twopc_enablebooleanif the flag is on, 2pc is enabled. Other 2pc flags must be supplied.
--tx-throttler-configstringSynonym to -tx_throttler_config (default "target_replication_lag_sec: 2\nmax_replication_lag_sec: 10\ninitial_rate: 100\nmax_increase: 1\nemergency_decrease: 0.5\nmin_duration_between_increases_sec: 40\nmax_duration_between_increases_sec: 62\nmin_duration_between_decreases_sec: 20\nspread_backlog_across_sec: 20\nage_bad_rate_after_sec: 180\nbad_rate_increase: 0.1\nmax_rate_approach_threshold: 0.9\n")
--tx-throttler-healthcheck-cellsstringsSynonym to -tx_throttler_healthcheck_cells
--tx-throttler-tablet-typesstringsA comma-separated list of tablet types. Only tablets of this type are monitored for replication lag by the transaction throttler. Supported types are replica and/or rdonly. (default replica)
--tx_throttler_configstringThe configuration of the transaction throttler as a text formatted throttlerdata.Configuration protocol buffer message (default "target_replication_lag_sec: 2\nmax_replication_lag_sec: 10\ninitial_rate: 100\nmax_increase: 1\nemergency_decrease: 0.5\nmin_duration_between_increases_sec: 40\nmax_duration_between_increases_sec: 62\nmin_duration_between_decreases_sec: 20\nspread_backlog_across_sec: 20\nage_bad_rate_after_sec: 180\nbad_rate_increase: 0.1\nmax_rate_approach_threshold: 0.9\n")
--tx_throttler_healthcheck_cellsstringsA comma-separated list of cells. Only tabletservers running in these cells will be monitored for replication lag by the transaction throttler.
--unhealthy_thresholddurationreplication lag after which a replica is considered unhealthy (default 2h0m0s)
--vLevellog level for V logs
-v, --versionbooleanprint binary version
--vmodulemoduleSpeccomma-separated list of pattern=N settings for file-filtered logging
--vreplication-parallel-insert-workersintNumber of parallel insertion workers to use during copy phase. Set <= 1 to disable parallelism, or > 1 to enable concurrent insertion during copy phase. (default 1)
--vreplication_copy_phase_durationdurationDuration for each copy phase loop (before running the next catchup: default 1h) (default 1h0m0s)
--vreplication_copy_phase_max_innodb_history_list_lengthintThe maximum InnoDB transaction history that can exist on a vstreamer (source) before starting another round of copying rows. This helps to limit the impact on the source tablet. (default 1000000)
--vreplication_copy_phase_max_mysql_replication_lagintThe maximum MySQL replication lag (in seconds) that can exist on a vstreamer (source) before starting another round of copying rows. This helps to limit the impact on the source tablet. (default 43200)
--vreplication_experimental_flagsint(Bitmask) of experimental features in vreplication to enable (default 1)
--vreplication_healthcheck_retry_delaydurationhealthcheck retry delay (default 5s)
--vreplication_healthcheck_timeoutdurationhealthcheck retry delay (default 1m0s)
--vreplication_healthcheck_topology_refreshdurationrefresh interval for re-reading the topology (default 30s)
--vreplication_heartbeat_update_intervalintFrequency (in seconds, default 1, max 60) at which the time_updated column of a vreplication stream when idling (default 1)
--vreplication_max_time_to_retry_on_errordurationstop automatically retrying when we've had consecutive failures with the same error for this long after the first occurrence
--vreplication_replica_lag_tolerancedurationReplica lag threshold duration: once lag is below this we switch from copy phase to the replication (streaming) phase (default 1m0s)
--vreplication_retry_delaydurationdelay before retrying a failed workflow event in the replication phase (default 5s)
--vreplication_store_compressed_gtidbooleanStore compressed gtids in the pos column of _vt.vreplication
--vreplication_tablet_typestringcomma separated list of tablet types used as a source (default "in_order:REPLICA,PRIMARY")
--vstream-binlog-rotation-thresholdintByte size at which a VStreamer will attempt to rotate the source's open binary log before starting a GTID snapshot based stream (e.g. a ResultStreamer or RowStreamer) (default 67108864)
--vstream_dynamic_packet_sizebooleanEnable dynamic packet sizing for VReplication. This will adjust the packet size during replication to improve performance. (default true)
--vstream_packet_sizeintSuggested packet size for VReplication streamer. This is used only as a recommendation. The actual packet size may be more or less than this amount. (default 250000)
--vtgate_protocolstringhow to talk to vtgate (default "grpc")
--vttablet_skip_buildinfo_tagsstringcomma-separated list of buildinfo tags to skip from merging with --init_tags. each tag is either an exact match or a regular expression of the form '/regexp/'. (default "/.*/")
--wait_for_backup_intervalduration(init restore parameter) if this is greater than 0, instead of starting up empty when no backups are found, keep checking at this interval for a backup to appear
--watch_replication_streambooleanWhen enabled, vttablet will stream the MySQL replication stream from the local server, and use it to update schema when it sees a DDL.
--xbstream_restore_flagsstringFlags to pass to xbstream command during restore. These should be space separated and will be added to the end of the command. These need to match the ones used for backup e.g. --compress / --decompress, --encrypt / --decrypt
--xtrabackup_backup_flagsstringFlags to pass to backup command. These should be space separated and will be added to the end of the command
--xtrabackup_prepare_flagsstringFlags to pass to prepare command. These should be space separated and will be added to the end of the command
--xtrabackup_root_pathstringDirectory location of the xtrabackup and xbstream executables, e.g., /usr/bin
--xtrabackup_stream_modestringWhich mode to use if streaming, valid values are tar and xbstream. Please note that tar is not supported in XtraBackup 8.0 (default "tar")
--xtrabackup_stripe_block_sizeuintSize in bytes of each block that gets sent to a given stripe before rotating to the next stripe (default 102400)
--xtrabackup_stripesuintIf greater than 0, use data striping across this many destination files to parallelize data transfer and decompression
--xtrabackup_userstringUser that xtrabackup will use to connect to the database server. This user must have all necessary privileges. For details, please refer to xtrabackup documentation.

Key Options #

  • --restore_from_backup: The default value for this flag is false. If set to true, and the my.cnf file was successfully loaded, then vttablet can perform automatic restores as follows:

    • If started against a mysql instance that has no data files, it will search the list of backups for the latest one, and initiate a restore. After this, it will point the mysql to the current primary and wait for replication to catch up. Once replication is caught up to the specified tolerance limit, it will advertise itself as serving. This will cause the vtgates to add it to the list of healthy tablets to serve queries from.
    • If this flag is true, but my.cnf was not loaded, then vttablet will fatally exit with an error message.
    • You can additionally control the level of concurrency for a restore with the --restore_concurrency flag. This is typically useful in cloud environments to prevent the restore process from becoming a 'noisy' neighbor by consuming all available disk IOPS.