You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行捕获MySQL完整执行日志(含耗时、告警报错)

MySQL非交互模式获取完整执行输出的方法

你当前只拿到SQL回显没有执行结果,是因为单-v参数仅开启SQL语句回显,要拿到和交互模式source命令一致的完整输出,只需要调整命令参数即可:

方案1:直接修改原有执行命令

将原命令中的-v替换为-vvv(三重冗余模式),同时合并标准错误输出避免遗漏告警/报错:

mysql -uuser -ppassword db -vvv -c --show-warnings -e \
"alter table A engine=InnoDB;
alter table B engine=InnoDB;
alter table C engine=InnoDB;
alter table D engine=InnoDB;" 2>&1 | tee alter_exec.log

参数说明:

  • -vvv:开启最高级别的冗余输出,会自动打印每条SQL的执行状态、影响行数、执行耗时、告警信息,和交互模式输出完全一致
  • 2>&1:将标准错误流(包含密码安全提示、运行时错误)合并到标准输出,避免信息遗漏
  • tee alter_exec.log:同时将输出打印到屏幕和写入日志文件,不需要屏幕输出可替换为> alter_exec.log 2>&1

方案2:通过SQL文件执行(和source效果完全一致)

先将所有待执行SQL写入alter.sql文件:

alter table A engine=InnoDB;
alter table B engine=InnoDB;
alter table C engine=InnoDB;
alter table D engine=InnoDB;

再执行以下命令:

mysql -uuser -ppassword db -vvv -c --show-warnings < alter.sql 2>&1 | tee alter_exec.log

该方式得到的输出和你在MySQL交互客户端执行source alter.sql的结果完全一致。

可选优化:消除密码安全警告

如果不需要命令行的密码提示警告,可以在用户目录下创建.my.cnf配置文件存储登录信息:

[client]
user=your_username
password=your_password
database=your_db_name

修改文件权限避免泄露:

chmod 600 ~/.my.cnf

后续执行命令时不需要再输入账号密码,也不会出现密码安全提示:

mysql -vvv -c --show-warnings < alter.sql 2>&1 | tee alter_exec.log

内容的提问来源于stack exchange,提问作者user3299633

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:48:05