linux 監控查詢mongo索引片鍵指令碼

2021-12-30 07:28:30 字數 3699 閱讀 9250

#!/bin/bash

#file name :watch_dog.sh

#function :1、檢視mongodb資料庫集合;2、檢視各個集合索引;3、檢視各個集合片鍵

#version :v 1.0

#配置引數

#base_data_path='../data/'

#mongodb_url='172.20.72.42:20000'

#mongodb_config_url='172.20.72.42:20000'

#mysql_host_ip="10.40.66.184"

#mysql_host_port="3306"

#mysql_user="root"

#mysql_pwd="ab123456"

#mysql_database_name="***x"

################################

path="$path:/data/mongodb/bin/"

#配置指令碼需要的引數

if [ $# -ne 1 ] ;then

echo "warn:請輸入使用的配置引數名稱,如local,pro等,在路徑../conf中配置的引數檔名"

echo

exit 1

fisource_url="/data/mongodb/watch_mongodb/conf/$1.conf"

if [ ! -e "$source_url" ];then

echo "warn:配置檔案不存在"

echo

exit 1

fisource $source_url

###############################

#提醒資訊

warn_info()

#獲取路徑

data_path()/data/"$1.$$

else

warn_info "warn:路徑有問題"

warn_info

exit 1

fi}#執行mysql儲存過程

handler_sql() -p$ -h$ -p$ $ < $(data_path sql)

warn_info 'f:handler shards sql success,finish'

}#打包語句成sql語句

package_sql(),db:$,data:$"

database=$

collection=$

#賦值warn_info "===>database:$==>collection:$==>value:$"

echo "call mongo_collection_handler($,$,\"$\",\"$\");" >> $(data_path "sql")

warn_info "f:package sql execute,finish,m:$,db:$,data:$"

}#處理片鍵檔案資訊

handler_shards()/}\"/g')

#database=$

#collection=$

package_sql 2 "$my_id" "$mykey"

done < $(data_path "shard.$1")

warn_info "f:handler shards execute,finish,db:$1"

}#查詢片鍵資訊

search_shard() collection count :$collection_count"

for (( i=0; i< $; i=i+1 ));

docollection_name=`jq .[$i] $(data_path "col.$1") | sed 's/\"//g'`;

result=`mongo --quiet $2/config --eval "printjson(db.collections.findone(,))"`

#列印原始資訊

#echo $result >> $(data_path "raw.shard.$1")

if [[ $result != "null" || $(echo $result | jq .key) != "null" ]] ;then

#echo "\", \"key\" :null}" >> $(data_path "shard.$1")

#else

echo $result >> $(data_path "shard.$1")

fidone

#刪除null的一行資料

sed -i '/null/d' $(data_path "shard.$1")

warn_info "f:search shard execute,finsh,db:$1,url:$2"

}#處理集合索引資訊

handler_indexes()"

#echo "*****>>>>>>>>>"

package_sql 1 "$db_collection_name" "$(echo $indexes)"

done < $(data_path "index.$1")

warn_info "f:handler indexes,finish,db:$1"

}#查詢集合索引資訊

search_index()"

for (( i=0; i< $; i=i+1 ));

docollection=$(jq --compact-output .[$i] $(data_path "col.$1") | sed 's/\"//g');

temp_indexes=$(mongo --quiet "$2/$1" --eval "printjson(db.getcollection(\"$\").getindexes())")

echo $temp_indexes | jq --compact-output . >> $(data_path "index.$1")

done

warn_info "search collection index,finish,db:$1,url:$2"

}#查詢所有表集合

search_collection()")

warn_info "f:search collection execute,finish,db:s1,url:$2"

}#集合從mysql資料庫中查,原因是只顯示mysql中的列出的集合資訊

#search_collection2()\";"

# warn_info "===execute sql=>$=>"

# mysql -u$ -p$ -h$ -p$ $ -e "$" > $(data_path "col.$")

# #資料封裝成陣列,相容search_collection的結果

# sed -i -e 's/^/"&/g' -e 's/$/&",/g' -e "1i [" -e '$s/.$//' $(data_path "col.$")

# echo "]" >> $(data_path "col.$")

# warn_info "f:search collection2 executed,fi:nish,db:$1"

#}#程式執行

watch_dog2_work()

echo

warn_info "******************************="

#開始工作

watch_dog2_work

mongo常用查詢

複雜查詢 and or lte,gte,and lt 逗號表示and,lt小於寫在值當中 查詢例項 找到含有指定資料文件 查詢條件spcode有1個字元長度的文件 db.spgoods.find 查詢條件spcode有1 6個字元長度的文件 db.spgoods.find 更新一批資料 db.spg...

mongo查詢語法收藏

查詢表示式 含義 mongo 原生查詢條件 neq 或者ne 不等於 ne lt 小於 lt lte 或者elt 小於等於 lte gt 大於 gt gte 或者egt 大於等於 gte like 模糊查詢 用mongoregex正則模擬 無 mod取模運算 mod in in查詢 in nin或者...

mongo查詢語法收藏

查詢表示式 含義 mongo原生查詢條件 neq 或者ne 不等於 ne lt小於 ltlte 或者elt 小於等於 lte gt大於 gt gte 或者egt 大於等於 gte like 模糊查詢 用mongoregex正則模擬 無mod 取模運算 mod inin 查詢 in nin或者not ...