请问如何修改tidb里的参数呢,如数据库最大连接数和默认字符集

【 TiDB 使用环境】生产环境 or 测试环境 or POC
【 TiDB 版本】
【遇到的问题】
【复现路径】做过哪些操作出现的问题
【问题现象及影响】

【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

TiDB 配置文件描述 | PingCAP Docs
tidb的参数都在里面,可以用edit-config在线更改tidb集群的参数

1 个赞

能举个例子吗,我安装的是V6.0.0 第一次使用tidb

1 个赞

是刚安装,还是已经部署了集群呢

已经部署了集群,我登陆到mysql了
mysql> show variables like ‘%connect%’;
±----------------------------------------------±----------------+
| Variable_name | Value |
±----------------------------------------------±----------------+
| character_set_connection | utf8 |
| collation_connection | utf8_general_ci |
| connect_timeout | 10 |
| disconnect_on_expired_password | 1 |
| init_connect | |
| max_connect_errors | 100 |
| max_connections | 151 |
| max_user_connections | 0 |
| performance_schema_session_connect_attrs_size | 512 |
±----------------------------------------------±----------------+
9 rows in set (0.02 sec)

我想修改参数,永久生效,类似mysql里 修改my.cnf配置文件那样

有个概念需要理解一下,tidb集群中,有两种配置,一种是持久化在数据库中的,sql来设置的配置,用global可以永久生效,一种是持久化在部署集群时的拓扑文件中的,刚刚我发的就是持久化在拓扑文件中的一些配置,可以永久生效

1 个赞

参考这个max_connections = 151 的环境变量在tidb中并不准确,或者说没有意义,tidb默认是不限制最大连接数的,具体参考文档。
TiDB 配置文件描述 | PingCAP Docs

如果你要修改最大连接数,对于已经部署的,可以使用tiup cluster edit-config 去修改 tidb组件下的 max-server-connections
参考:

至于默认字符集,跟mysql是类似的,不过tidb支持的字符集并没有mysql那么多,具体参考:
字符集和排序规则 | PingCAP Docs

能给个例子吗,比如我想修改最大连接数这个参数max_connections =10000
在mysql命令模式下修改了

mysql> set global max_connections=10000;
Query OK, 0 rows affected (0.26 sec)

这种方式集群重启后会失效的吧?

我这里怎么找不到你说的server_configs这个段落呢?
global:
user: tidb
ssh_port: 22
ssh_type: builtin
deploy_dir: /tidb-deploy
data_dir: /tidb-data
os: linux
arch: amd64
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
deploy_dir: /tidb-deploy/monitor-9100
data_dir: /tidb-data/monitor-9100
log_dir: /tidb-deploy/monitor-9100/log
tidb_servers:

  • host: 192.168.1.118
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /tidb-deploy/tidb-4000
    log_dir: /tidb-deploy/tidb-4000/log
    arch: amd64
    os: linux
  • host: 192.168.1.85
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /tidb-deploy/tidb-4000
    log_dir: /tidb-deploy/tidb-4000/log
    arch: amd64
    os: linux
  • host: 192.168.1.134
    ssh_port: 22
    port: 4000
    status_port: 10080
    deploy_dir: /tidb-deploy/tidb-4000
    log_dir: /tidb-deploy/tidb-4000/log
    arch: amd64
    os: linux
    tikv_servers:
  • host: 192.168.1.118
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /tidb-deploy/tikv-20160
    data_dir: /tidb-data/tikv-20160
    log_dir: /tidb-deploy/tikv-20160/log
    arch: amd64
    os: linux
  • host: 192.168.1.85
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /tidb-deploy/tikv-20160
    data_dir: /tidb-data/tikv-20160
    log_dir: /tidb-deploy/tikv-20160/log
    arch: amd64
    os: linux
  • host: 192.168.1.134
    ssh_port: 22
    port: 20160
    status_port: 20180
    deploy_dir: /tidb-deploy/tikv-20160
    data_dir: /tidb-data/tikv-20160
    log_dir: /tidb-deploy/tikv-20160/log
    arch: amd64
    os: linux
    tiflash_servers:
  • host: 192.168.1.118
    ssh_port: 22
    tcp_port: 9000
    http_port: 8123
    flash_service_port: 3930
    flash_proxy_port: 20170
    flash_proxy_status_port: 20292
    metrics_port: 8234
    deploy_dir: /tidb-deploy/tiflash-9000
    data_dir: /tidb-data/tiflash-9000
    log_dir: /tidb-deploy/tiflash-9000/log
    arch: amd64
    os: linux
  • host: 192.168.1.85
    ssh_port: 22
    tcp_port: 9000
    http_port: 8123
    flash_service_port: 3930
    flash_proxy_port: 20170
    flash_proxy_status_port: 20292
    metrics_port: 8234
    deploy_dir: /tidb-deploy/tiflash-9000
    data_dir: /tidb-data/tiflash-9000
    log_dir: /tidb-deploy/tiflash-9000/log
    arch: amd64
    os: linux
    pd_servers:
  • host: 192.168.1.118
    ssh_port: 22
    name: pd-192.168.1.118-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /tidb-deploy/pd-2379
    data_dir: /tidb-data/pd-2379
    log_dir: /tidb-deploy/pd-2379/log
    arch: amd64
    os: linux
  • host: 192.168.1.85
    ssh_port: 22
    name: pd-192.168.1.85-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /tidb-deploy/pd-2379
    data_dir: /tidb-data/pd-2379
    log_dir: /tidb-deploy/pd-2379/log
    arch: amd64
    os: linux
  • host: 192.168.1.134
    ssh_port: 22
    name: pd-192.168.1.134-2379
    client_port: 2379
    peer_port: 2380
    deploy_dir: /tidb-deploy/pd-2379
    data_dir: /tidb-data/pd-2379
    log_dir: /tidb-deploy/pd-2379/log
    arch: amd64
    os: linux
    monitoring_servers:
  • host: 192.168.1.118
    ssh_port: 22
    port: 9090
    ng_port: 12020
    deploy_dir: /tidb-deploy/prometheus-9090
    data_dir: /tidb-data/prometheus-9090
    log_dir: /tidb-deploy/prometheus-9090/log
    external_alertmanagers: []
    arch: amd64
    os: linux
    grafana_servers:
  • host: 192.168.1.118
    ssh_port: 22
    port: 3000
    deploy_dir: /tidb-deploy/grafana-3000
    arch: amd64
    os: linux
    username: admin
    password: admin
    anonymous_enable: false
    root_url: “”
    domain: “”
    alertmanager_servers:
  • host: 192.168.1.118
    ssh_port: 22
    web_port: 9093
    cluster_port: 9094
    deploy_dir: /tidb-deploy/alertmanager-9093
    data_dir: /tidb-data/alertmanager-9093
    log_dir: /tidb-deploy/alertmanager-9093/log
    arch: amd64
    os: linux

找不到不就说明你没写嘛,写上就好了呀。完整的配置文件段落很多的,配置文件完整参考
通过 TiUP 部署 TiDB 集群的拓扑文件配置 | PingCAP Docs

这个在tidb里面是不会生效的, 在tidb中,max_questionsmax_updatedmax_connections 以及 max_user_connections,都只是做成兼容的样子,能查也能改,只是给你看,但是并没有实际意义,具体可参考: 与 MySQL 安全特性差异 | PingCAP Docs

修改了配置,reload会自动重启动集群 是这样的吧?
tiup cluster reload mytidb_cluster

是的,改了之后,reload就可以了

感谢了:+1:,学习了

reload的时候可以注意一下,加 -N 后面接ip和端口,可以指定实例reload,加 -R 接名称,比如tidb、pd、tikv可以只reload指定的某一类实例

对于tidb-server 我记得文档里面说是单节点最大连接数是1000,测试最佳是500,那到底是看500比较准还是数据库查询出来的151比较准确呢?还有一个问题比如我现在的连接数已经达到了200超过了数据库里面查询出来的151,是否会报错

这个我在前面回复过了, 在 tidb 中, max_questionsmax_updatedmax_connections 以及 max_user_connections ,都只是做成兼容的样子,能查也能改,只是给你看,但是并没有实际意义,影响tidb最大连接的就是我说的那个参数。数据库中查出来的max_connections =151只是为了兼容mysql而存在的,没有任何实际作用,不能作为参考。

字符集建议你提前规划好,改字符集很容易改出问题。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。