Skip to content

TDSQL 命令行工具

TDSQL 官方命令行工具 (tdsql-cli)

安装和配置

安装方法

bash
# Linux 安装
wget https://tdsql-download.tencentcloudapi.com/tdsql-cli/v1.0.0/tdsql-cli-linux-amd64.tar.gz
tar -zxvf tdsql-cli-linux-amd64.tar.gz
chmod +x tdsql-cli
mv tdsql-cli /usr/local/bin/

# macOS 安装
brew install tdsql-cli

# Windows 安装
# 从官网下载Windows版本并添加到PATH

配置文件

yaml
# ~/.tdsql/config.yaml
default_profile: "prod"
profiles:
  prod:
    endpoint: "tdsql-prod.example.com"
    port: 15830
    user: "admin"
    password: "your_password"
    instance_id: "tdsql-123456"
    ssl_ca: "/path/to/ca.pem"
  test:
    endpoint: "tdsql-test.example.com"
    port: 15830
    user: "admin"
    password: "test_password"
    instance_id: "tdsql-789012"
    ssl_ca: "/path/to/test-ca.pem"

常用命令

1. 实例管理

bash
# 查看实例列表
tdsql-cli instance list

# 查看实例详情
tdsql-cli instance describe --instance-id tdsql-123456

# 启动实例
tdsql-cli instance start --instance-id tdsql-123456

# 停止实例
tdsql-cli instance stop --instance-id tdsql-123456

# 重启实例
tdsql-cli instance restart --instance-id tdsql-123456

2. 数据库管理

bash
# 创建数据库
tdsql-cli database create --database-name mydb --instance-id tdsql-123456

# 删除数据库
tdsql-cli database drop --database-name mydb --instance-id tdsql-123456

# 查看数据库列表
tdsql-cli database list --instance-id tdsql-123456

# 查看数据库详情
tdsql-cli database describe --database-name mydb --instance-id tdsql-123456

3. 用户管理

bash
# 创建用户
tdsql-cli user create --username myuser --password mypassword --instance-id tdsql-123456

# 删除用户
tdsql-cli user drop --username myuser --instance-id tdsql-123456

# 修改用户密码
tdsql-cli user change-password --username myuser --new-password newpassword --instance-id tdsql-123456

# 授权用户
tdsql-cli user grant --username myuser --database-name mydb --privileges SELECT,INSERT,UPDATE,DELETE --instance-id tdsql-123456

# 查看用户权限
tdsql-cli user show-grants --username myuser --instance-id tdsql-123456

4. 备份管理

bash
# 创建备份
tdsql-cli backup create --database-name mydb --backup-type full --instance-id tdsql-123456

# 查看备份列表
tdsql-cli backup list --instance-id tdsql-123456

# 恢复备份
tdsql-cli backup restore --backup-id backup-123456 --target-database restoredb --instance-id tdsql-123456

# 删除备份
tdsql-cli backup delete --backup-id backup-123456 --instance-id tdsql-123456

5. 监控和诊断

bash
# 查看实例监控数据
tdsql-cli monitor metrics --instance-id tdsql-123456 --metrics CPUUsage,MemoryUsage --start-time "2026-01-18T00:00:00" --end-time "2026-01-19T00:00:00"

# 查看慢查询日志
tdsql-cli log slow --instance-id tdsql-123456 --start-time "2026-01-18T00:00:00" --end-time "2026-01-19T00:00:00"

# 查看错误日志
tdsql-cli log error --instance-id tdsql-123456 --start-time "2026-01-18T00:00:00" --end-time "2026-01-19T00:00:00"

# 执行SQL查询
tdsql-cli sql execute --instance-id tdsql-123456 --database-name mydb --sql "SELECT * FROM users LIMIT 10"

MySQL 兼容命令行工具

1. mysql 客户端

连接TDSQL实例

bash
# 基本连接
mysql -h tdsql-prod.example.com -P 15830 -u admin -p

# 指定数据库连接
mysql -h tdsql-prod.example.com -P 15830 -u admin -p mydb

# 使用SSL连接
mysql -h tdsql-prod.example.com -P 15830 -u admin -p --ssl-ca=/path/to/ca.pem --ssl-mode=REQUIRED

# 执行单条SQL
mysql -h tdsql-prod.example.com -P 15830 -u admin -p -e "SELECT * FROM users LIMIT 10" mydb

# 执行SQL文件
mysql -h tdsql-prod.example.com -P 15830 -u admin -p mydb < script.sql

常用快捷键

  • Ctrl + C:中断当前查询
  • Ctrl + D:退出客户端
  • Ctrl + R:历史命令搜索
  • \G:以垂直格式显示结果
  • \c:取消当前命令
  • \u:切换数据库
  • \s:显示服务器状态
  • \h:显示帮助信息

2. mysqldump 备份工具

全量备份

bash
# 备份单个数据库
mysqldump -h tdsql-prod.example.com -P 15830 -u admin -p --single-transaction --master-data=2 mydb > mydb_backup.sql

# 备份多个数据库
mysqldump -h tdsql-prod.example.com -P 15830 -u admin -p --databases db1 db2 db3 > multi_db_backup.sql

# 备份所有数据库
mysqldump -h tdsql-prod.example.com -P 15830 -u admin -p --all-databases > all_db_backup.sql

# 压缩备份
mysqldump -h tdsql-prod.example.com -P 15830 -u admin -p mydb | gzip > mydb_backup.sql.gz

# 备份结构但不包含数据
mysqldump -h tdsql-prod.example.com -P 15830 -u admin -p --no-data mydb > mydb_schema.sql

增量备份

bash
# 备份二进制日志
mysqlbinlog -h tdsql-prod.example.com -P 15830 -u admin -p --start-position=107 --stop-position=1000 mysql-bin.000001 > incr_backup.sql

# 备份从某个时间点开始的日志
mysqlbinlog -h tdsql-prod.example.com -P 15830 -u admin -p --start-datetime="2026-01-19 10:00:00" mysql-bin.000001 > incr_backup.sql

3. mysqladmin 管理工具

bash
# 检查服务器状态
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p status

# 查看服务器变量
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p variables

# 查看服务器进程
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p processlist

# 刷新权限
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p flush-privileges

# 关闭服务器(谨慎使用)
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p shutdown

# 查看服务器版本
mysqladmin -h tdsql-prod.example.com -P 15830 -u admin -p version

4. mysqlcheck 检查表工具

bash
# 检查单个表
mysqlcheck -h tdsql-prod.example.com -P 15830 -u admin -p mydb users

# 检查并修复表
mysqlcheck -h tdsql-prod.example.com -P 15830 -u admin -p --repair mydb users

# 优化表
mysqlcheck -h tdsql-prod.example.com -P 15830 -u admin -p --optimize mydb users

# 分析表
mysqlcheck -h tdsql-prod.example.com -P 15830 -u admin -p --analyze mydb users

# 检查所有数据库
mysqlcheck -h tdsql-prod.example.com -P 15830 -u admin -p --all-databases

高级命令行工具

1. mydumper/myloader

安装

bash
# Ubuntu/Debian
apt-get install mydumper

# CentOS/RHEL
yum install mydumper

# 源码编译
git clone https://github.com/maxbube/mydumper.git
cd mydumper
cmake .
make
make install

使用方法

bash
# 多线程备份
mydumper -h tdsql-prod.example.com -P 15830 -u admin -p -B mydb -o /backup/mydumper -t 8

# 多线程恢复
myloader -h tdsql-prod.example.com -P 15830 -u admin -p -B mydb -d /backup/mydumper -t 8

# 备份特定表
mydumper -h tdsql-prod.example.com -P 15830 -u admin -p -B mydb -T table1,table2 -o /backup/mydumper

# 备份时排除特定表
mydumper -h tdsql-prod.example.com -P 15830 -u admin -p -B mydb -x "table3|table4" -o /backup/mydumper

2. Percona Toolkit

安装

bash
# Ubuntu/Debian
apt-get install percona-toolkit

# CentOS/RHEL
yum install percona-toolkit

# 源码安装
wget https://www.percona.com/downloads/percona-toolkit/3.3.1/binary/tarball/percona-toolkit-3.3.1_x86_64.tar.gz
tar -zxvf percona-toolkit-3.3.1_x86_64.tar.gz
cd percona-toolkit-3.3.1
perl Makefile.PL
make
make install

常用工具

bash
# 检查慢查询
pt-query-digest /var/lib/mysql/slow.log

# 在线Schema变更
pt-online-schema-change --alter "ADD COLUMN new_col INT" D=test,t=users,h=tdsql-prod.example.com,P=15830,u=admin,p=password

# 检查主从复制
pt-table-checksum h=tdsql-prod.example.com,P=15830,u=admin,p=password

# 同步数据差异
pt-table-sync --execute --sync-to-master h=slave.example.com,P=15830,u=admin,p=password

# 分析表使用情况
pt-index-usage slow.log h=tdsql-prod.example.com,P=15830,u=admin,p=password

命令行工具最佳实践

1. 安全性最佳实践

密码安全

  • 避免在命令行中直接输入密码
  • 使用配置文件或环境变量存储密码
  • 定期更换密码
  • 使用强密码策略

权限控制

  • 遵循最小权限原则
  • 为不同用户分配适当的权限
  • 定期审查用户权限
  • 限制远程访问

2. 性能最佳实践

批量操作

  • 使用批量导入/导出工具
  • 优化SQL语句
  • 避免频繁的连接和断开
  • 使用连接池

资源管理

  • 限制查询的资源使用
  • 合理设置超时时间
  • 监控命令执行时间
  • 避免在高峰期执行大量操作

3. 自动化最佳实践

脚本化

  • 将常用操作编写为脚本
  • 使用配置文件管理参数
  • 实现错误处理和日志记录
  • 定期测试脚本

调度管理

  • 使用cron或其他调度工具
  • 合理安排任务执行时间
  • 设置任务依赖关系
  • 监控任务执行状态

常见问题(FAQ)

Q1: 如何在命令行中安全地输入密码?

A1: 安全输入密码的方法:

  • 不使用-p参数,等待交互式输入
  • 使用配置文件存储密码
  • 使用环境变量
  • 使用mysql_config_editor工具

Q2: 如何处理命令行工具的字符集问题?

A2: 处理字符集问题的方法:

  • 指定--default-character-set参数
  • 设置环境变量MYSQL_PWD
  • 在配置文件中设置default-character-set
  • 使用SET NAMES语句

Q3: 如何提高命令行工具的执行效率?

A3: 提高执行效率的方法:

  • 使用合适的工具(如mydumper代替mysqldump)
  • 增加并行度
  • 优化网络连接
  • 合理设置缓存大小

Q4: 如何调试命令行工具的错误?

A4: 调试命令行工具错误的方法:

  • 查看错误日志
  • 使用--verbose参数获取详细输出
  • 检查网络连接
  • 验证权限设置
  • 测试简单命令

Q5: 如何在脚本中使用命令行工具?

A5: 在脚本中使用命令行工具的方法:

  • 使用绝对路径调用工具
  • 实现错误处理
  • 添加日志记录
  • 测试边界情况
  • 处理特殊字符

Q6: 如何管理多个TDSQL实例?

A6: 管理多个TDSQL实例的方法:

  • 使用配置文件管理不同实例
  • 编写脚本自动化管理
  • 使用别名简化命令
  • 集成到监控系统

Q7: 如何选择合适的命令行工具?

A7: 选择合适命令行工具的方法:

  • 根据任务类型选择(备份、管理、监控等)
  • 考虑性能要求
  • 评估工具的兼容性
  • 考虑学习曲线
  • 查看社区支持情况