利用dsh批量启动同网段MySQL

dsh的安装可以参考网上的文档 

但是有几个地方网上的安装文档并不是很详细

1、编译安装的时候需要依赖包

glibc-headers gcc-c++

2、安装完libdshconfig后

如果是32位系统

ln -s /usr/local/lib/libdshconfig.so.1 /lib/

如果是64位系统

ln -s /usr/local/lib/libdshconfig.so.1 /lib64/

3、控制组的编写 文中会讲到


安装完dsh之后

dsh --help

-v --verbose                   Verbose output

-q --quiet                     Quiet

-M --show-machine-names        Prepend the host name on output

-H --hide-machine-names        Do not prepend host name on output

-i --duplicate-input           Duplicate input given to dsh

-b --bufsize                   Change buffer size used in input duplication

-m --machine [machinename]     Execute on machine

-n --num-topology              How to divide the machines

-a --all                       Execute on all machines

-g --group [groupname]         Execute on group member

-f --file [file]               Use the file as list of machines

-r --remoteshell [shellname]   Execute using shell (rsh/ssh)

-o --remoteshellopt [option]   Option to give to shell 

-h --help                      Give out this message

-w --wait-shell                Sequentially execute shell

-c --concurrent-shell          Execute shell concurrently

-F --forklimit [fork limit]    Concurrent with limit on number

-V --version                   Give out version information


如何实现同网段MySQL一键启动呢?


首先需要编写控制的主机列表

在新安装的dsh是没有/root/.dsh/*这些文件的

需要在/usr/local/etc/下创建group文件

然后在group里面编写控制组

执行命令后会产生/root/.dsh/*的文件


如果MySQL的启动方式是service mysql start的话可以直接

dsh -r ssh -g 控制组文件名 'service mysql start'

但是如果是 mysqld_safe的方式启动的话就比较麻烦

需要在各个节点创建一个mysql的启动脚本

然后可以dsh -r ssh -g 控制组文件名 'bash 启动脚本'

但是 mysqld_safe &的话需要人工去敲下回车才能跳到shell里面

这样就影响到其他的ip去启动MySQL

所以把MySQL启动的过程隐藏 把启动脚本改为

mysqld_safe &>/dev/null &

这样就可以以一键启动同网段内的所有MySQL实例。


随后可以通过监控查看一下MySQL的启动详情

如果没有 可以选择EasyDB

上一篇:用开源NAC阻止非法网络访问


下一篇:Highcharts实现图形报表(我主要实现javaweb开发的图形报表)