# TiDB Configuration. # TiDB server host. host = "0.0.0.0" # tidb server advertise IP. advertise-address = "" # TiDB server port. port = 4000 # Registered store name, [tikv, mocktikv, unistore] store = "tikv" # TiDB storage path. path = "127.0.0.1:2379" # The socket file to use for connection. socket = "" # Run ddl worker on this tidb-server. run-ddl = true # Schema lease duration, very dangerous to change only if you know what you do. lease = "45s" # When create table, split a separated region for it. It is recommended to # turn off this option if there will be a large number of tables created. split-table = true # The limit of concurrent executed sessions. token-limit = 1000 # The maximum memory available for a single SQL statement. Default: 1GB mem-quota-query = 1073741824 # Controls whether to enable the temporary storage for some operators when a single SQL statement exceeds the memory quota specified by mem-quota-query. oom-use-tmp-storage = true # Specifies the temporary storage path for some operators when a single SQL statement exceeds the memory quota specified by mem-quota-query. # It defaults to a generated directory in `/_tidb/` if it is unset. # It only takes effect when `oom-use-tmp-storage` is `true`. # tmp-storage-path = "/tmp/_tidb/MC4wLjAuMDo0MDAwLzAuMC4wLjA6MTAwODA=/tmp-storage" # Specifies the maximum use of temporary storage (bytes) for all active queries when `oom-use-tmp-storage` is enabled. # If the `tmp-storage-quota` exceeds the capacity of the temporary storage directory, tidb-server would return an error and exit. # The default value of tmp-storage-quota is under 0 which means tidb-server wouldn't check the capacity. tmp-storage-quota = -1 # Specifies what operation TiDB performs when a single SQL statement exceeds the memory quota specified by mem-quota-query and cannot be spilled over to disk. # Valid options: ["log", "cancel"] oom-action = "cancel" # Enable batch commit for the DMLs. enable-batch-dml = false # Set system variable 'lower_case_table_names' lower-case-table-names = 2 # Make "kill query" behavior compatible with MySQL. It's not recommend to # turn on this option when TiDB server is behind a proxy. compatible-kill-query = false # Make SIGTERM wait N seconds before starting the shutdown procedure. This is designed for when TiDB is behind a proxy/load balancer. # The health check will fail immediately but the server will not start shutting down until the time has elapsed. graceful-wait-before-shutdown = 0 # check mb4 value in utf8 is used to control whether to check the mb4 characters when the charset is utf8. check-mb4-value-in-utf8 = true # treat-old-version-utf8-as-utf8mb4 use for upgrade compatibility. Set to true will treat old version table/column UTF8 charset as UTF8MB4. treat-old-version-utf8-as-utf8mb4 = true # max-index-length is used to deal with compatibility issues from v3.0.7 and previous version upgrades. It can only be in [3072, 3072*4]. max-index-length = 3072 # index-limit is used to deal with compatibility issues. It can only be in [64, 64*8]. index-limit = 64 # enable-table-lock is used to control table lock feature. Default is false, indicate the table lock feature is disabled. enable-table-lock = false # delay-clean-table-lock is used to control the time (Milliseconds) of delay before unlock the table in the abnormal situation. delay-clean-table-lock = 0 # Maximum number of the splitting region, which is used by the split region statement. split-region-max-num = 1000 # alter-primary-key is used to control whether the primary keys are clustered. # Note that this config is deprecated. Only valid when @@global.tidb_enable_clustered_index = 'int_only'. # Default is false, only the integer primary keys are clustered. # If it is true, all types of primary keys are nonclustered. alter-primary-key = false # server-version is used to change the version string of TiDB in the following scenarios: # 1. the server version returned by builtin-function `VERSION()`. # 2. the server version filled in handshake packets of MySQL Connection Protocol, see https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake for more details. # if server-version = "", the default value(original TiDB version string) is used. server-version = "" # repair mode is used to repair the broken table meta in TiKV in extreme cases. repair-mode = false # Repair table list is used to list the tables in repair mode with the format like ["db.table",]. # In repair mode, repairing table which is not in repair list will get wrong database or wrong table error. repair-table-list = [] # The maximum permitted number of simultaneous client connections. When the value is 0, the number of connections is unlimited. max-server-connections = 0 # Whether new collations are enabled, as indicated by its name, this configuration entry take effect ONLY when a TiDB cluster bootstraps for the first time. new_collations_enabled_on_first_bootstrap = false # Don't register information of this TiDB to etcd, so this instance of TiDB won't appear in the services like dashboard. # This option is useful when you want to embed TiDB into your service(i.e. use TiDB as a library). # *If you want to start a TiDB service, NEVER enable this.* skip-register-to-dashboard = false # When enabled, usage data (for example, instance versions) will be reported to PingCAP periodically for user experience analytics. # If this config is set to `false` on all TiDB servers, telemetry will be always disabled regardless of the value of the global variable `tidb_enable_telemetry`. # See PingCAP privacy policy for details: https://pingcap.com/en/privacy-policy/ enable-telemetry = true # deprecate-integer-display-length is used to be compatible with MySQL 8.0 in which the integer declared with display length will be returned with # a warning like `Integer display width is deprecated and will be removed in a future release`. deprecate-integer-display-length = false # enable-enum-length-limit is used to deal with compatibility issues. When true, the enum/set element length is limited. # According to MySQL 8.0 Refman: # The maximum supported length of an individual SET element is M <= 255 and (M x w) <= 1020, # where M is the element literal length and w is the number of bytes required for the maximum-length character in the character set. # See https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html for more details. enable-enum-length-limit = true [log] # Log level: debug, info, warn, error, fatal. level = "info" # Log format, one of json, text, console. format = "text" # Enable automatic timestamps in log output, if not set, it will be defaulted to true. # enable-timestamp = true # Enable annotating logs with the full stack error message, if not set, it will be defaulted to false. # enable-error-stack = false # Whether to enable slow query log. enable-slow-log = true # Stores slow query log into separated files. slow-query-file = "tidb-slow.log" # Queries with execution time greater than this value will be logged. (Milliseconds) slow-threshold = 300 # record-plan-in-slow-log is used to enable record query plan in slow log. # 0 is disable. 1 is enable. record-plan-in-slow-log = 1 # Queries with internal result greater than this value will be logged. expensive-threshold = 10000 # Maximum query length recorded in log. query-log-max-len = 4096 # File logging. [log.file] # Log file name. filename = "" # Max log file size in MB (upper limit to 4096MB). max-size = 300 # Max log file keep days. No clean up by default. max-days = 0 # Maximum number of old log files to retain. No clean up by default. max-backups = 0 [security] # Path of file that contains list of trusted SSL CAs for connection with mysql client. ssl-ca = "" # Path of file that contains X509 certificate in PEM format for connection with mysql client. ssl-cert = "" # Path of file that contains X509 key in PEM format for connection with mysql client. ssl-key = "" # Path of file that contains list of trusted SSL CAs for connection with cluster components. cluster-ssl-ca = "" # Path of file that contains X509 certificate in PEM format for connection with cluster components. cluster-ssl-cert = "" # Path of file that contains X509 key in PEM format for connection with cluster components. cluster-ssl-key = "" # Configurations of the encryption method to use for encrypting the spilled data files. # Possible values are "plaintext", "aes128-ctr", if not set, it will be "plaintext" by default. # "plaintext" means encryption is disabled. spilled-file-encryption-method = "plaintext" [status] # If enable status report HTTP service. report-status = true # TiDB status host. status-host = "0.0.0.0" ## status-host is the HTTP address for reporting the internal status of a TiDB server, for example: ## API for prometheus: http://${status-host}:${status_port}/metrics ## API for pprof: http://${status-host}:${status_port}/debug/pprof # TiDB status port. status-port = 10080 # Prometheus pushgateway address, leaves it empty will disable push to pushgateway. metrics-addr = "" # Prometheus client push interval in second, set \"0\" to disable push to pushgateway. metrics-interval = 15 # Record statements qps by database name if it is enabled. record-db-qps = false [performance] # Max CPUs to use, 0 use number of CPUs in the machine. max-procs = 0 # Memory size quota for tidb server, 0 means unlimited server-memory-quota = 0 # The alarm threshold when memory usage of the tidb-server exceeds. The valid value range is greater than or equal to 0 # and less than or equal to 1. The default value is 0.8. # If this configuration is set to 0 or 1, it'll disable the alarm. # Otherwise, related information will be recorded in the directory `tmp-storage-path/record`. # Note: If the configuration `server-memory-quota` is set and larger than 0, the alarm threshold will be # `memory-usage-alarm-ratio * server-memory-quota`; otherwise, it'll be `memory-usage-alarm-ratio * system memory size`. memory-usage-alarm-ratio = 0.8 # StmtCountLimit limits the max count of statement inside a transaction. stmt-count-limit = 5000 # Set keep alive option for tcp connection. tcp-keep-alive = true # Whether support cartesian product. cross-join = true # Stats lease duration, which influences the time of analyze and stats load. stats-lease = "3s" # Run auto analyze worker on this tidb-server. run-auto-analyze = true # Probability to use the query feedback to update stats, 0.0 or 1.0 for always false/true. feedback-probability = 0.0 # The max number of query feedback that cache in memory. query-feedback-limit = 512 # Pseudo stats will be used if the ratio between the modify count and # row count in statistics of a table is greater than it. pseudo-estimate-ratio = 0.8 # Force the priority of all statements in a specified priority. # The value could be "NO_PRIORITY", "LOW_PRIORITY", "HIGH_PRIORITY" or "DELAYED". force-priority = "NO_PRIORITY" # Bind info lease duration, which influences the duration of loading bind info and handling invalid bind. bind-info-lease = "3s" # Whether support pushing down aggregation with distinct to cop task distinct-agg-push-down = false # The limitation of the size in byte for the entries in one transaction. # If using TiKV as the storage, the entry represents a key/value pair. # NOTE: If binlog is enabled with Kafka (e.g. arbiter cluster), # this value should be less than 1073741824(1G) because this is the maximum size that can be handled by Kafka. # If binlog is disabled or binlog is enabled without Kafka, this value should be less than 10737418240(10G). txn-total-size-limit = 104857600 # The limitation of the size in byte for each entry in one transaction. # NOTE: Increasing this limit may cause performance problems. txn-entry-size-limit = 6291456 # The max number of running concurrency two phase committer request for an SQL. committer-concurrency = 128 # max lifetime of transaction ttl manager. max-txn-ttl = 3600000 # the interval duration between two memory profile into global tracker mem-profile-interval = "1m" # The Go GC trigger factor, you can get more information about it at https://golang.org/pkg/runtime. # If you encounter OOM when executing large query, you can decrease this value to trigger GC earlier. # If you find the CPU used by GC is too high or GC is too frequent and impact your business you can increase this value. gogc = 100 [proxy-protocol] # PROXY protocol acceptable client networks. # Empty string means disable PROXY protocol, * means all networks. networks = "" # PROXY protocol header read timeout, unit is second header-timeout = 5 [prepared-plan-cache] enabled = false capacity = 100 memory-guard-ratio = 0.1 [opentracing] # Enable opentracing. enable = false # Whether to enable the rpc metrics. rpc-metrics = false [opentracing.sampler] # Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote type = "const" # Param is a value passed to the sampler. # Valid values for Param field are: # - for "const" sampler, 0 or 1 for always false/true respectively # - for "probabilistic" sampler, a probability between 0 and 1 # - for "rateLimiting" sampler, the number of spans per second # - for "remote" sampler, param is the same as for "probabilistic" # and indicates the initial sampling rate before the actual one # is received from the mothership param = 1.0 # SamplingServerURL is the address of jaeger-agent's HTTP sampling server sampling-server-url = "" # MaxOperations is the maximum number of operations that the sampler # will keep track of. If an operation is not tracked, a default probabilistic # sampler will be used rather than the per operation specific sampler. max-operations = 0 # SamplingRefreshInterval controls how often the remotely controlled sampler will poll # jaeger-agent for the appropriate sampling strategy. sampling-refresh-interval = 0 [opentracing.reporter] # QueueSize controls how many spans the reporter can keep in memory before it starts dropping # new spans. The queue is continuously drained by a background go-routine, as fast as spans # can be sent out of process. queue-size = 0 # BufferFlushInterval controls how often the buffer is force-flushed, even if it's not full. # It is generally not useful, as it only matters for very low traffic services. buffer-flush-interval = 0 # LogSpans, when true, enables LoggingReporter that runs in parallel with the main reporter # and logs all submitted spans. Main Configuration.Logger must be initialized in the code # for this option to have any effect. log-spans = false # LocalAgentHostPort instructs reporter to send spans to jaeger-agent at this address local-agent-host-port = "" [pd-client] # Max time which PD client will wait for the PD server in seconds. pd-server-timeout = 3 [tikv-client] # Max gRPC connections that will be established with each tikv-server. grpc-connection-count = 4 # After a duration of this time in seconds if the client doesn't see any activity it pings # the server to see if the transport is still alive. grpc-keepalive-time = 10 # After having pinged for keepalive check, the client waits for a duration of Timeout in seconds # and if no activity is seen even after that the connection is closed. grpc-keepalive-timeout = 3 # The compression type for gRPC channel: none or gzip. grpc-compression-type = "none" # Max time for commit command, must be twice bigger than raft election timeout. commit-timeout = "41s" # Max batch size in gRPC. max-batch-size = 128 # Overload threshold of TiKV. overload-threshold = 200 # Max batch wait time in nanosecond to avoid waiting too long. 0 means disable this feature. max-batch-wait-time = 0 # Batch wait size, to avoid waiting too long. batch-wait-size = 8 # Enable chunk encoded data for coprocessor requests. enable-chunk-rpc = true # If a Region has not been accessed for more than the given duration (in seconds), it # will be reloaded from the PD. region-cache-ttl = 600 # store-limit is used to restrain TiDB from sending request to some stores which is up to the limit. # If a store has been up to the limit, it will return error for the successive request in same store. # default 0 means shutting off store limit. store-limit = 0 # store-liveness-timeout is used to control timeout for store liveness after sending request failed. store-liveness-timeout = "1s" # ttl-refreshed-txn-size decides whether a transaction should update its lock TTL. # If the size(in byte) of a transaction is large than `ttl-refreshed-txn-size`, it update the lock TTL during the 2PC. ttl-refreshed-txn-size = 33554432 [tikv-client.copr-cache] # The capacity in MB of the cache. Zero means disable coprocessor cache. capacity-mb = 1000.0 [binlog] # enable to write binlog. # NOTE: If binlog is enabled with Kafka (e.g. arbiter cluster), # txn-total-size-limit should be less than 1073741824(1G) because this is the maximum size that can be handled by Kafka. enable = false # WriteTimeout specifies how long it will wait for writing binlog to pump. write-timeout = "15s" # If IgnoreError is true, when writing binlog meets error, TiDB would stop writing binlog, # but still provide service. ignore-error = false # use socket file to write binlog, for compatible with kafka version tidb-binlog. binlog-socket = "" # the strategy for sending binlog to pump, value can be "range" or "hash" now. strategy = "range" [pessimistic-txn] # max retry count for a statement in a pessimistic transaction. max-retry-count = 256 [stmt-summary] # enable statement summary. enable = true # enable statement summary for TiDB internal query, default is false. enable-internal-query = false # max number of statements kept in memory. max-stmt-count = 200 # max length of displayed normalized sql and sample sql. max-sql-length = 4096 # the refresh interval of statement summary, it's counted in seconds. refresh-interval = 1800 # the maximum history size of statement summary. history-size = 24 # experimental section controls the features that are still experimental: their semantics, # interfaces are subject to change, using these features in the production environment is not recommended. [experimental] # enable creating expression index. allow-expression-index = false # server level isolation read by engines and labels [isolation-read] # engines means allow the tidb server read data from which types of engines. options: "tikv", "tiflash", "tidb". engines = ["tikv", "tiflash", "tidb"]