显示奴隶状态\ G到outfile'/tmp/slavestatus.txt';

时间:2011-06-24 05:21:00

标签: mysql bash

是否可以使用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

2 个答案:

答案 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”'附近使用正确的语法