Skip to content

TDSQL 配置文件

配置文件结构

文件位置

TDSQL配置文件通常位于以下位置:

  • 默认位置/home/tdsql/conf/tdsql.conf
  • 二进制部署:安装目录下的conf子目录
  • 容器部署:通常挂载到容器内的/etc/mysql/conf.d/目录
  • 云服务部署:通过管理控制台在线配置

基本格式

TDSQL配置文件采用INI格式,由多个节(section)组成,每个节包含多个键值对:

ini
[mysqld]
# 基础配置
server_id = 1
port = 3306
basedir = /home/tdsql/installation/tdsql-5.7
datadir = /home/tdsql/data

# 二进制日志配置
enable_binary_log = 1
binlog_format = ROW
log_bin = /home/tdsql/logs/binlog

# 存储引擎配置
default_storage_engine = InnoDB
innodb_buffer_pool_size = 48G

[client]
port = 3306
socket = /home/tdsql/tdsql.sock

[mysql]
prompt = TDSQL [\d]>

主要节说明

节名称用途
[mysqld]数据库服务器核心配置
[client]客户端工具默认配置
[mysql]mysql客户端特定配置
[mysqldump]mysqldump工具配置
[mysqld_safe]mysqld_safe脚本配置
[mysqladmin]mysqladmin工具配置
[tdsql]TDSQL特有配置

核心配置参数

基础配置

参数说明建议值
server_id数据库实例唯一标识每个实例唯一,建议使用IP末段或自定义编号
port数据库监听端口默认3306,可根据需求修改
basedirTDSQL安装目录根据实际安装路径设置
datadir数据文件存储目录建议使用独立磁盘或分区
socket本地套接字文件路径默认即可
pid_filePID文件路径默认即可
character_set_server服务器默认字符集utf8mb4
collation_server服务器默认校对规则utf8mb4_general_ci
skip_name_resolve跳过主机名解析1(启用)

二进制日志配置

参数说明建议值
enable_binary_log是否启用二进制日志1(启用)
binlog_format二进制日志格式ROW
log_bin二进制日志文件路径默认即可
binlog_row_image二进制日志行记录格式FULL
expire_logs_days二进制日志保留天数7-14天
sync_binlog二进制日志同步磁盘频率1(最安全)或100-1000(性能更好)
gtid_mode是否启用GTIDON
enforce_gtid_consistency是否强制GTID一致性ON
log_slave_updates从节点是否记录复制的更新到二进制日志ON

存储引擎配置

参数说明建议值
default_storage_engine默认存储引擎InnoDB
innodb_buffer_pool_sizeInnoDB缓冲池大小物理内存的50%-70%
innodb_log_file_sizeInnoDB日志文件大小1G-4G
innodb_log_files_in_groupInnoDB日志文件组数量2
innodb_flush_log_at_trx_commit事务提交时日志刷新策略1(最安全)或2(性能更好)
innodb_flush_methodInnoDB刷新方法O_DIRECT(SSD)或fsync(HDD)
innodb_file_per_table是否每个表使用独立表空间ON
innodb_open_files允许打开的InnoDB文件数65535
innodb_io_capacityInnoDB IO处理能力根据存储设备性能调整
innodb_io_capacity_maxInnoDB最大IO处理能力通常为innodb_io_capacity的2倍
innodb_lock_wait_timeoutInnoDB锁等待超时时间50-120秒

连接配置

参数说明建议值
max_connections最大连接数根据业务需求调整,建议1000-4000
max_connect_errors允许的最大连接错误数10000
connect_timeout连接超时时间10秒
wait_timeout非活跃连接超时时间28800秒(8小时)
interactive_timeout交互式连接超时时间28800秒(8小时)
thread_cache_size线程缓存大小100-500
table_open_cache表缓存大小2000-10000
table_definition_cache表定义缓存大小1000-5000

查询优化配置

参数说明建议值
query_cache_size查询缓存大小0(禁用,使用应用层缓存)
sort_buffer_size排序缓冲区大小2M
read_buffer_size顺序读取缓冲区大小1M
read_rnd_buffer_size随机读取缓冲区大小4M
join_buffer_size连接缓冲区大小2M
tmp_table_size临时表大小64M
max_heap_table_size内存临时表最大大小64M
max_execution_time语句最大执行时间(毫秒)根据业务需求调整
slow_query_log是否启用慢查询日志1(启用)
long_query_time慢查询阈值(秒)1-5秒
log_queries_not_using_indexes是否记录未使用索引的查询1(启用)

TDSQL特有配置

参数说明建议值
tdsql_modeTDSQL运行模式master(主节点)或slave(从节点)
az_name可用区名称根据实际部署的可用区设置
region_name地域名称根据实际部署的地域设置
rpl_semi_sync_master_enabled是否启用半同步复制(主节点)1(启用)
rpl_semi_sync_slave_enabled是否启用半同步复制(从节点)1(启用)
rpl_semi_sync_master_timeout半同步复制超时时间(毫秒)10000-30000
slave_parallel_workers从节点并行复制线程数8-16(根据CPU核数调整)
slave_parallel_type并行复制类型LOGICAL_CLOCK

配置方法

1. 直接编辑配置文件

步骤

  1. 使用文本编辑器编辑配置文件:

    bash
    vi /home/tdsql/conf/tdsql.conf
  2. 修改或添加配置参数

  3. 保存文件并重启TDSQL服务:

    bash
    sudo $TDSQL_HOME/bin/tdsqladmin -S /home/tdsql/tdsql.sock shutdown
    sudo $TDSQL_HOME/bin/tdsql_safe --defaults-file=$TDSQL_HOME/conf/tdsql.conf --user=tdsql &

2. 使用SET命令动态修改

对于支持动态修改的参数,可以使用SET命令在线修改,无需重启服务:

示例

sql
-- 修改全局参数
SET GLOBAL max_connections = 2000;

-- 修改会话参数
SET SESSION sort_buffer_size = 4194304;

-- 查看参数值
SHOW GLOBAL VARIABLES LIKE 'max_connections';
SHOW SESSION VARIABLES LIKE 'sort_buffer_size';

注意

  • 动态修改的参数在重启后会失效,如需永久生效,需同时修改配置文件
  • 并非所有参数都支持动态修改,具体请参考TDSQL文档

3. 云服务控制台配置

对于云服务版本的TDSQL,可以通过管理控制台在线配置:

步骤

  1. 登录TDSQL管理控制台
  2. 选择目标实例
  3. 进入"参数配置"页面
  4. 修改或调整参数值
  5. 点击"保存"并应用配置
  6. 等待配置生效

配置最佳实践

1. 根据硬件资源调整配置

硬件资源配置调整建议
CPU调整slave_parallel_workers、innodb_thread_concurrency等参数
内存主要调整innodb_buffer_pool_size参数,建议为物理内存的50%-70%
存储根据存储类型调整innodb_flush_method、innodb_io_capacity等参数
网络调整max_connections、back_log等参数

2. 不同部署模式的配置差异

主节点配置

ini
[mysqld]
# 主节点特有配置
tdsql_mode = master
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 30000

# 二进制日志配置
sync_binlog = 1
enforce_gtid_consistency = ON
gtid_mode = ON
log_slave_updates = ON

从节点配置

ini
[mysqld]
# 从节点特有配置
tdsql_mode = slave
rpl_semi_sync_slave_enabled = 1
read_only = 1
super_read_only = 1

# 并行复制配置
slave_parallel_workers = 16
slave_parallel_type = LOGICAL_CLOCK

3. 性能优化配置

高并发场景配置

ini
[mysqld]
max_connections = 4000
thread_cache_size = 500
table_open_cache = 10000
innodb_buffer_pool_size = 48G
innodb_log_file_size = 4G
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_log_at_trx_commit = 2

大数据场景配置

ini
[mysqld]
innodb_buffer_pool_size = 64G
innodb_log_file_size = 8G
innodb_buffer_pool_instances = 8
innodb_page_cleaners = 8
innodb_purge_threads = 4

4. 安全配置

ini
[mysqld]
# 禁用不必要的功能
skip_symbolic_links = 1
skip_external_locking = 1

# 限制访问
bind_address = 0.0.0.0
max_connect_errors = 10000

# 日志配置
log_error = /home/tdsql/logs/error.log
log_bin = /home/tdsql/logs/binlog
slow_query_log = 1

配置验证与管理

1. 验证配置文件语法

使用mysqld --validate-config命令验证配置文件语法是否正确:

bash
$TDSQL_HOME/bin/mysqld --defaults-file=$TDSQL_HOME/conf/tdsql.conf --validate-config

2. 查看当前配置

查看所有全局配置

sql
SHOW GLOBAL VARIABLES;

查看特定配置

sql
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE '%log%';

查看配置文件路径

sql
SHOW VARIABLES LIKE 'config_file';

3. 配置变更管理

最佳实践

  1. 建立配置变更审批流程
  2. 在测试环境验证配置变更
  3. 记录配置变更历史
  4. 定期备份配置文件
  5. 配置变更后进行性能测试

配置备份

bash
# 备份当前配置
cp /home/tdsql/conf/tdsql.conf /home/tdsql/conf/tdsql.conf.$(date +%Y%m%d_%H%M%S)

4. 常见配置问题排查

问题现象可能原因解决方案
启动失败配置文件语法错误使用mysqld --validate-config验证,查看错误日志
性能下降配置参数不合理分析慢查询日志,调整相关参数
连接数不足max_connections设置过小增加max_connections参数值
内存占用过高innodb_buffer_pool_size设置过大调整为物理内存的50%-70%
主从延迟从节点配置不合理调整slave_parallel_workers等参数

常见问题(FAQ)

Q1: 配置文件中的参数大小写敏感吗?

A1: TDSQL配置文件中的参数不区分大小写,例如server_idSERVER_ID效果相同。

Q2: 如何确定哪些参数支持动态修改?

A2: 使用以下命令查看参数是否支持动态修改:

sql
SHOW GLOBAL VARIABLES WHERE Variable_name = '参数名';

如果参数可以通过SET命令修改,则支持动态修改。

Q3: 配置文件中可以使用注释吗?

A3: 可以,配置文件支持两种注释方式:

  • 使用#开头的行
  • 使用;开头的行

Q4: 如何设置多个配置文件?

A4: 可以使用!include或!includedir指令包含其他配置文件:

ini
!includedir /home/tdsql/conf.d/
!include /home/tdsql/conf/extra.conf

Q5: 容器部署时如何修改配置?

A5: 容器部署时,可以通过以下方式修改配置:

  1. 修改挂载的配置文件,然后重启容器
  2. 使用docker exec进入容器修改配置,然后重启容器内的TDSQL服务
  3. 通过环境变量传递配置参数

Q6: 如何查看配置变更历史?

A6: 可以通过以下方式查看配置变更历史:

  1. 查看配置文件的修改时间和内容差异
  2. 在云服务控制台查看配置变更记录
  3. 通过配置管理工具(如Ansible、Puppet)记录变更历史

Q7: 配置参数设置过大或过小会有什么影响?

A7: 配置参数设置不当会影响数据库性能和稳定性:

  • 设置过大:可能导致资源浪费或系统崩溃
  • 设置过小:可能导致性能瓶颈或功能受限

建议根据硬件资源、业务需求和TDSQL最佳实践进行调整。

Q8: 如何优化配置文件?

A8: 优化配置文件的方法:

  1. 分析数据库性能瓶颈
  2. 根据瓶颈调整相关参数
  3. 在测试环境验证优化效果
  4. 逐步应用到生产环境
  5. 定期回顾和调整配置

Q9: 配置文件丢失或损坏怎么办?

A9: 配置文件丢失或损坏的解决方案:

  1. 从备份中恢复配置文件
  2. 使用默认配置文件重新配置
  3. 参考相似实例的配置
  4. 联系TDSQL技术支持获取帮助

Q10: 如何查看配置参数的默认值?

A10: 可以通过以下命令查看参数的默认值:

sql
SHOW GLOBAL VARIABLES LIKE '参数名';

对于未显式配置的参数,将显示默认值。