1. 程式人生 > >pmysql:大批量伺服器並行執行mysql命令的工具

pmysql:大批量伺服器並行執行mysql命令的工具

      相信很多人都有這樣的體會,就是當手頭的機器越來越多時,維護等常規操作變得越來越折騰,就是按個機器登入一遍,別的不說,光輸入密碼也夠搗鼓一陣子。因此,一系列的並行批量操作工具應運而生,比如對大批量的linux並行操作的工具psh、pscp等,但是對於大數量的mysql伺服器進行操作的工具,我一直也沒找一個順手的工具。

    開源的力量是強大的!最近終於找到了一個開源工具:pmysql ,由facebook mysql engineers組Domas Mituzas 開發的工具,用了一下感覺不錯,據說“Ability to crunch hundreds of megabytes of processlist info in few seconds” 。

     具體原始碼可以在:bzr co lp:mysqlatfacebook/tools/pmysql  下載。

    編譯的過程比較簡單,但是要先安裝mysql devel 、glib 等庫,並指定好 mysql_config的路徑,具體不再贅述了 :

實際上,我們看其工具上面也有很多待改進的地方,比如,密碼在所有的server必須一致、對需操作的資料庫不夠靈活等。

看著心裡直癢癢,我也順手改了一下,增加了按正則表示式匹配資料庫名和只打印命令但不實際執行的功能(操作需謹慎,哈哈),如下:

$ ./pmysql --help
Usage:
  pmysql [OPTION...] [query]

Parallel multiple-server MySQL querying tool

Help Options:
  -?, --help                Show help options

Application Options:
  -Q, --query               Queries to run
  -F, --query-file          File to read queries from
  -X, --servers-file        File to read servers from (stdin otherwise)
  -u, --user                Username with privileges to run the dump
  -p, --password            User password
  -P, --port                TCP/IP port to connect to
  -S, --socket              UNIX domain socket file to use for connection
  -B, --database            Databases (comma-separated) to run query against
  -A, --all                 Run on all databases except i_s, mysql and test
  -t, --threads             Number of parallel threads
  -M, --patterns            Run only on databases which match the regular expression
  -C, --printcmd            Only print out the command,Not really execute it
  -e, --escape              Should tabs, newlines and zero bytes be escaped
  -c, --compress            Compress server-client communication
  -T, --connect-timeout     Connect timeout in seconds (default: 2)

新增的部分程式碼比較簡單,就不貼出來了,呵呵

相關推薦

pmysql:批量伺服器並行執行mysql命令工具

      相信很多人都有這樣的體會,就是當手頭的機器越來越多時,維護等常規操作變得越來越折騰,就是按個機器登入一遍,別的不說,光輸入密碼也夠搗鼓一陣子。因此,一系列的並行批量操作工具應運而生,比如對大批量的linux並行操作的工具psh、pscp等,但是對於大數量的mysq

效能追擊:萬字長文30+圖揭祕8主流伺服器程式執行緒模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

> 本文為《[高效能網路程式設計遊記](https://www.itzhai.com/articles/decrypt-the-threading-model-of-common-server-programs.html)》的第六篇“效能追擊:萬字長文30+圖揭祕8大主流伺服器程式執行緒模型”。 ![ima

shell 下執行mysql 命令

copyto boa 不能 存在 ppa fault 很多 values cli 在shell開發中,很多時候我們需要操作mysql數據庫(比如:查詢數據、導出數據等),但是我們又無法進入mysql命令行的環境,就需要在shell環境中模擬mysql的環境,使用mysql相

mysql導入批量數據出現MySQL server has gone away的解決方法

mys title clas AR TP server class nth blog mysql導入大批量數據出現MySQL server has gone away的解決方法 學習了:https://blog.csdn.net/fdipzone/article/detai

批量匯入資料到mysql

使用mysql中的load data infile把資料全部先讀到mysql,再刷到資料表中。 具體方法: 建目標表 mysql> CREATE TABLE Test_Book1 (     ->   id &nb

批量遠端執行shell命令工具

使用示例(使用了預設使用者root,和預設埠號22): ./mooon_ssh --h=192.168.4.1,192.168.4.2 -P=password -c='cat /etc/hosts' #include "mooon/net/libssh2.h" // 提供

Linux下如何定時執行mysql命令

1、Linux中的定時任務: 1-1.Linux中每行定時任務的描述格式如下: minute hour day month dayofweek command minute - 從0到59的整數

mybatis 處理批量資料。使用mysql的LOAD DATA INFILE

使用mybatis實現,檔案使用的是csv檔案 xml <select id="loadTest"> LOAD DATA INFILE 'E:/load_test.csv' ign

MYSQL-常見問題-執行mysql命令連線資料庫報錯:2002

執行mysql/bin目錄下的mysql命令連線資料庫報錯:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'原因:指定目錄下缺少mysql.sock

mybatis使用load data local infile實現批量匯入資料到mysql資料庫

背景:專案框架為:dubbo+zookeeper+ssm    資料庫為mysql最近有個新的需求,要在程式碼裡實現往資料庫插入大批量資料,每次插入的資料量從10萬~50萬條不等,而且每條資料有80多個欄位,大概估算了一下,一條資料大小差不多是1kb,那麼每次插入的資料量大小

執行mysql命令報錯,提示:mysql:command not found

原因: 1、mysql命令執行時,呼叫的路徑有問題。 2、whereis mysql,取得命令執行的絕對路徑,用絕對路徑去執行命令 mysql: /usr/bin/mysql /usr/lib64/m

Java 執行系統命令工具

row com enc log tostring mha comm span onf 依賴jar <!-- 可以在JVM中可靠地執行外部進程的庫。 --> <dependency> <

java執行cmd命令工具實現

        在某些情況下,java也會呼叫cmd執行某些命令。例如重啟啊什麼的,之前寫了一個執行cmd命令的一個工具類,大家可以參考一下,根據自身情況進行調整。         執行String字

細數十你不得不用的MySQL開發工具(1)

        作為開源資料庫中最為紅火的MySQL,自然是廣大資料庫管理者的關注點。“工欲善其事,必先利其器。”在這裡,51CTO資料庫頻道將為大家介紹十大你不得不用的MySQL開發工具。 MySQL Workbench 圖1 該工具由MySQL開發,是一個跨平臺的視

windows使用docker執行mysql工具(一)windows安裝docker

由於我本地的mysql版本比較低,最近想著要升級一下mysql版本,鑑於docker容器的火熱,就想著在本地裝個docker環境,然後下載最新版的mysql映象,完成mysql8.0的安裝。電腦是windows 10版本。 一 啟用Hyper-V 開啟控制面板-->程式-->啟用或關閉wind

mysql函式批量插入資料+java多執行緒併發案例

當前需要做個測試,mysql資料庫需要5000萬資料來完成效能測試,於是我們寫了個函式來完成這個功能。 函式定義如下: #批量插入資料庫的函式 BEGIN     #定義需要插入資料庫表中的欄位;       DECLARE id BIGINT(20);     DECLA

Mysql缺少可執行命令

nbsp not sql命令 found linux1 not found 題解 inux 找不到 MySQL問題解決:-bash:mysql:command not found 問題: [[email protected]/* */ /]# mys

mysql導入批量數據時,出現ERROR : (2006, 'MySQL server has gone away')

ng-click article con global art span allow oba 導入數據 mysql導入數據時,出現ERROR : (2006, ‘MySQL server has gone away‘) 解決方案:官方解釋是適當增大 max_al

expect腳本同步文件、指定host和要同步的文件、構建文件分發系統、批量遠程執行命令

expect腳本 expect遠程同步 expect腳本同步文件 1.自動同步文件 [root@garytao-01 shell]# vi 4.expect 增加如下腳本內容: #!/usr/bin/expect set passwd "123456" spawn rsync -av root@1

批量遠程執行命令

expect bash批量遠程執行命令 在一臺機器上遠程到多臺機器上執行多條命令,怎麽實現呢? 寫一個登錄到多臺機器並執行命令的腳本文件remote-exec-command.sh vim /usr/local/sbin/expect/remote-exec-command.sh #!/usr/bin/exp