外观
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-1234562. 数据库管理
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-1234563. 用户管理
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-1234564. 备份管理
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-1234565. 监控和诊断
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.sql3. 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 version4. 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/mydumper2. 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: 选择合适命令行工具的方法:
- 根据任务类型选择(备份、管理、监控等)
- 考虑性能要求
- 评估工具的兼容性
- 考虑学习曲线
- 查看社区支持情况
