是否可以使用mysql命令“show slave status”写入outfile?
我有超过20台服务器,我正在编写一个bash脚本来检查所有这些服务器的复制。我需要将所有数据输出到本地服务器上的一个文件中。
这是我到目前为止所做的,但我无法弄清楚如何将数据传输到我可以运行正则表达式的文件中。
#!/bin/bash
for ((server=8100; server <= 8121; server++)); do
ssh pos$server <<-ENDEXP
mysql -u root -p12345 pos_master_prod
show slave status \G
\q
ENDEXP
done
答案 0 :(得分:2)
我有与您相同的要求,最终使用tee。基本上它是@Chandranshu设置,但使用tee将数据传输到文件中。
mysql -u root -p'rootpw' pos_master_prod 'show slave status \G' | tee slavestatus.log
默认情况下,在我的ubuntu盒子上安装了Tee,否则你可以从apt-get或yum这样的存储库中获取它。
答案 1 :(得分:0)
从命令提示符运行mysql查询的常用方法是使用-e选项。因此,这将起作用:
ssh pos$server "mysql -u root -p12345 pos_master_prod -e 'show slave status \G'" >> output.log
更新:关于“输出文件”部分,语法中不允许这样做。在mysql提示符下尝试“将slave name状态显示为outfile'xxx'”将导致以下错误: 第1行的错误1064(42000):SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行的'into outfile“xxx”'附近使用正确的语法