[
    {
        "key": "lightning.table-concurrency",
        "type": "int"
    },
    {
        "key": "lightning.index-concurrency",
        "type": "int"
    },
    {
        "key": "lightning.region-concurrency",
        "type": "int"
    },
    {
        "key": "lightning.io-concurrency",
        "type": "int"
    },
    {
        "key": "lightning.check-requirements",
        "type": "bool"
    },
    {
        "key": "lightning.meta-schema-name",
        "type": "string"
    },
    {
        "key": "lightning.max-error.syntax",
        "type": "number",
        "comment": "Syntax is the maximum number of syntax errors accepted.\nWhen tolerated, the file chunk causing syntax error will be skipped, and adds 1 to the counter.\nTODO Currently this is hard-coded to zero."
    },
    {
        "key": "lightning.max-error.charset",
        "type": "number",
        "comment": "Charset is the maximum number of character-set conversion errors accepted.\nWhen tolerated, and `data-invalid-char-replace` is not changed from \"\\ufffd\",\nevery invalid byte in the source file will be converted to U+FFFD and adds 1 to the counter.\nNote that a failed conversion a column's character set (e.g. UTF8-to-GBK conversion)\nis counted as a type error, not a charset error.\nTODO character-set conversion is not yet implemented."
    },
    {
        "key": "lightning.max-error.type",
        "type": "number",
        "comment": "Type is the maximum number of type errors accepted.\nThis includes strict-mode errors such as zero in dates, integer overflow, character string too long, etc.\nIn TiDB backend, this also includes all possible SQL errors raised from INSERT,\nsuch as unique key conflict when `on-duplicate` is set to `error`.\nWhen tolerated, the row causing the error will be skipped, and adds 1 to the counter.\nThe default value is zero, which means that such errors are not tolerated."
    },
    {
        "key": "lightning.max-error.conflict",
        "type": "number",
        "comment": "deprecated, use `conflict.threshold` instead.\nConflict is the maximum number of unique key conflicts in local backend accepted.\nWhen tolerated, every pair of conflict adds 1 to the counter.\nThose pairs will NOT be deleted from the target. Conflict resolution is performed separately.\nThe default value is max int64, which means conflict errors will be recorded as much as possible.\nSometime the actual number of conflict record logged will be greater than the value configured here,\nbecause conflict error data are recorded batch by batch.\nIf the limit is reached in a single batch, the entire batch of records will be persisted before an error is reported."
    },
    {
        "key": "lightning.max-error-records",
        "type": "int",
        "comment": "deprecated, use Conflict.MaxRecordRows instead"
    },
    {
        "key": "lightning.task-info-schema-name",
        "type": "string"
    },
    {
        "key": "tidb.host",
        "type": "string"
    },
    {
        "key": "tidb.port",
        "type": "int"
    },
    {
        "key": "tidb.user",
        "type": "string"
    },
    {
        "key": "tidb.password",
        "type": "string"
    },
    {
        "key": "tidb.status-port",
        "type": "int"
    },
    {
        "key": "tidb.pd-addr",
        "type": "string"
    },
    {
        "key": "tidb.sql-mode",
        "type": "string"
    },
    {
        "key": "tidb.tls",
        "type": "string"
    },
    {
        "key": "tidb.security.ca-path",
        "type": "string"
    },
    {
        "key": "tidb.security.cert-path",
        "type": "string"
    },
    {
        "key": "tidb.security.key-path",
        "type": "string"
    },
    {
        "key": "tidb.security.redact-info-log",
        "type": "bool",
        "comment": "RedactInfoLog indicates that whether enabling redact log"
    },
    {
        "key": "tidb.max-allowed-packet",
        "type": "int"
    },
    {
        "key": "tidb.distsql-scan-concurrency",
        "type": "int"
    },
    {
        "key": "tidb.build-stats-concurrency",
        "type": "int"
    },
    {
        "key": "tidb.index-serial-scan-concurrency",
        "type": "int"
    },
    {
        "key": "tidb.checksum-table-concurrency",
        "type": "int"
    },
    {
        "key": "tidb.session-vars",
        "type": "json"
    },
    {
        "key": "checkpoint.schema",
        "type": "string"
    },
    {
        "key": "checkpoint.dsn",
        "type": "string",
        "comment": "DSN may contain password, don't expose this to JSON."
    },
    {
        "key": "checkpoint.driver",
        "type": "string"
    },
    {
        "key": "checkpoint.enable",
        "type": "bool"
    },
    {
        "key": "checkpoint.keep-after-success",
        "type": "unknown"
    },
    {
        "key": "mydumper.read-block-size",
        "type": "string"
    },
    {
        "key": "mydumper.batch-size",
        "type": "string"
    },
    {
        "key": "mydumper.batch-import-ratio",
        "type": "float"
    },
    {
        "key": "mydumper.source-id",
        "type": "string"
    },
    {
        "key": "mydumper.data-source-dir",
        "type": "string"
    },
    {
        "key": "mydumper.character-set",
        "type": "string"
    },
    {
        "key": "mydumper.csv.separator",
        "type": "string",
        "comment": "Separator, Delimiter and Terminator should all be in utf8mb4 encoding."
    },
    {
        "key": "mydumper.csv.delimiter",
        "type": "string"
    },
    {
        "key": "mydumper.csv.terminator",
        "type": "string"
    },
    {
        "key": "mydumper.csv.null",
        "type": "json"
    },
    {
        "key": "mydumper.csv.header",
        "type": "bool"
    },
    {
        "key": "mydumper.csv.header-schema-match",
        "type": "bool"
    },
    {
        "key": "mydumper.csv.trim-last-separator",
        "type": "bool"
    },
    {
        "key": "mydumper.csv.not-null",
        "type": "bool"
    },
    {
        "key": "mydumper.csv.backslash-escape",
        "type": "bool",
        "comment": "deprecated, use `escaped-by` instead."
    },
    {
        "key": "mydumper.csv.escaped-by",
        "type": "string",
        "comment": "EscapedBy has higher priority than BackslashEscape, currently it must be a single character if set."
    },
    {
        "key": "mydumper.max-region-size",
        "type": "string"
    },
    {
        "key": "mydumper.filter",
        "type": "json"
    },
    {
        "key": "mydumper.files",
        "type": "json"
    },
    {
        "key": "mydumper.no-schema",
        "type": "bool",
        "comment": "Deprecated: only used to keep the compatibility."
    },
    {
        "key": "mydumper.case-sensitive",
        "type": "bool"
    },
    {
        "key": "mydumper.strict-format",
        "type": "bool"
    },
    {
        "key": "mydumper.default-file-rules",
        "type": "bool"
    },
    {
        "key": "mydumper.ignore-data-columns",
        "type": "json"
    },
    {
        "key": "mydumper.data-character-set",
        "type": "string",
        "comment": "DataCharacterSet is the character set of the source file. Only CSV files are supported now. The following options are supported.\n  - utf8mb4\n  - GB18030\n  - GBK: an extension of the GB2312 character set and is also known as Code Page 936.\n  - latin1: IANA Windows1252\n  - binary: no attempt to convert the encoding.\nLeave DataCharacterSet empty will make it use `binary` by default."
    },
    {
        "key": "mydumper.data-invalid-char-replace",
        "type": "string",
        "comment": "DataInvalidCharReplace is the replacement characters for non-compatible characters, which shouldn't duplicate with the separators or line breaks.\nChanging the default value will result in increased parsing time. Non-compatible characters do not cause an increase in error."
    },
    {
        "key": "tikv-importer.addr",
        "type": "string",
        "comment": "Deprecated: only used to keep the compatibility."
    },
    {
        "key": "tikv-importer.backend",
        "type": "string"
    },
    {
        "key": "tikv-importer.on-duplicate",
        "type": "string",
        "comment": "deprecated, use Conflict.Strategy instead."
    },
    {
        "key": "tikv-importer.max-kv-pairs",
        "type": "int"
    },
    {
        "key": "tikv-importer.send-kv-pairs",
        "type": "int",
        "comment": "deprecated"
    },
    {
        "key": "tikv-importer.send-kv-size",
        "type": "string"
    },
    {
        "key": "tikv-importer.compress-kv-pairs",
        "type": "string"
    },
    {
        "key": "tikv-importer.region-split-size",
        "type": "string"
    },
    {
        "key": "tikv-importer.region-split-keys",
        "type": "int"
    },
    {
        "key": "tikv-importer.region-split-batch-size",
        "type": "int"
    },
    {
        "key": "tikv-importer.region-split-concurrency",
        "type": "int"
    },
    {
        "key": "tikv-importer.region-check-backoff-limit",
        "type": "int"
    },
    {
        "key": "tikv-importer.sorted-kv-dir",
        "type": "string"
    },
    {
        "key": "tikv-importer.disk-quota",
        "type": "string"
    },
    {
        "key": "tikv-importer.range-concurrency",
        "type": "int"
    },
    {
        "key": "tikv-importer.duplicate-resolution",
        "type": "string",
        "comment": "deprecated, use Conflict.Strategy instead."
    },
    {
        "key": "tikv-importer.incremental-import",
        "type": "bool",
        "comment": "deprecated, use ParallelImport instead."
    },
    {
        "key": "tikv-importer.parallel-import",
        "type": "bool"
    },
    {
        "key": "tikv-importer.keyspace-name",
        "type": "string"
    },
    {
        "key": "tikv-importer.add-index-by-sql",
        "type": "bool"
    },
    {
        "key": "tikv-importer.engine-mem-cache-size",
        "type": "string"
    },
    {
        "key": "tikv-importer.local-writer-mem-cache-size",
        "type": "string"
    },
    {
        "key": "tikv-importer.store-write-bwlimit",
        "type": "string"
    },
    {
        "key": "tikv-importer.logical-import-batch-size",
        "type": "string"
    },
    {
        "key": "tikv-importer.logical-import-batch-rows",
        "type": "int"
    },
    {
        "key": "tikv-importer.pause-pd-scheduler-scope",
        "type": "string",
        "comment": "default is PausePDSchedulerScopeTable to compatible with previous version(\u003e= 6.1)"
    },
    {
        "key": "tikv-importer.block-size",
        "type": "string"
    },
    {
        "key": "post-restore.checksum",
        "type": "unknown"
    },
    {
        "key": "post-restore.analyze",
        "type": "unknown"
    },
    {
        "key": "post-restore.level-1-compact",
        "type": "bool"
    },
    {
        "key": "post-restore.post-process-at-last",
        "type": "bool"
    },
    {
        "key": "post-restore.compact",
        "type": "bool"
    },
    {
        "key": "post-restore.checksum-via-sql",
        "type": "bool"
    },
    {
        "key": "cron.switch-mode",
        "type": "string"
    },
    {
        "key": "cron.log-progress",
        "type": "string"
    },
    {
        "key": "cron.check-disk-quota",
        "type": "string"
    },
    {
        "key": "routes",
        "type": "json"
    },
    {
        "key": "security.ca-path",
        "type": "string"
    },
    {
        "key": "security.cert-path",
        "type": "string"
    },
    {
        "key": "security.key-path",
        "type": "string"
    },
    {
        "key": "security.redact-info-log",
        "type": "bool",
        "comment": "RedactInfoLog indicates that whether enabling redact log"
    },
    {
        "key": "conflict.strategy",
        "type": "string"
    },
    {
        "key": "conflict.precheck-conflict-before-import",
        "type": "bool"
    },
    {
        "key": "conflict.threshold",
        "type": "int"
    },
    {
        "key": "conflict.max-record-rows",
        "type": "int"
    }
]