大批量資料一次性匯入es後掛了

2021-09-13 09:29:31 字數 1538 閱讀 2867

切換到logstas**件目錄

# cd /home/logstash/logstash-1.5.3/etc

開啟logstash配置檔案將type改為和vsftpd的配置檔案一樣,重啟logstash服務

問題分析

就是這麼簡單的乙個事,導致了其它伺服器大概5個小時沒有新的日誌到es,然後開始排查問題,定位到logstash indxer出錯,報的錯是503; 大致意思是輸入的資料量太大導致它無法工作,輸入的是redis,也就是說redis裡面的資料量太大處理不過來導致的。

問題解決

沒有其它的解決辦法,只能放棄匯入pureftpd的日誌,把pureftpd的logstash停了。再去redis伺服器將redis重新啟動,這4個小時存的日誌拋棄。

redis-server /etc/redis.conf

已經匯入的部分pureftpd的日誌是無用的,需要給刪除掉

刪除資料,不刪索引

#curl -xdelete '' -d #'

# }#}'

如果裡面有空索引還要刪除對應的索引

重新啟動pureftpd logstash,日誌就不用從頭開始刷了,只tail的方式存入新日誌。

日誌沒有匯入進去我是不甘心的,但是又不能一次性給批量刷到redis快取中,不然又會掛掉,也不能不通過快取直接往es刷,生產環境也不敢隨便嘗試。所以折中的解決辦法,往redis快取的刷慢點就可以把這個解決了。解決思路是寫乙個shell指令碼把日誌檔案從頭開始每秒刷10-20行到新的檔案中,logstash的input設定為新的檔案,這樣就可以達到慢點刷的效果。

#!/bin/bash

cd /home/logstash/logstash-1.5.3/pure_solve #切換目錄

toltalcount=`

cat pureftpd.log |wc -l

`#統計日誌有多少行

startline

=1 #從開頭開始刷

while

(($startline

< $toltalcount

))#迴圈刷

do

endline

=`expr $startline + 20`

#步值為20

sed -n

"$startline

,$endline

p" pureftpd.log >> pureftpd_new.log #開始寫

startline

=$endline

#移動步子

echo

$startline

> sincedb #記錄刷到什麼地方了

done

今天是年前上班的最後一天,刷了一篇部落格,下班後就準備準備回家了,哦耶!

Oracle匯入匯出大批量資料的一種做法

oracle匯入匯出大批量資料的一種做法 最近要把oracle資料庫的資料,匯出另外一台電腦上面的oracle,而且表空間 使用者什麼的都不一樣,而且還有blob欄位。資料大概有5萬條左右。我大概的做法是先導出匯入表,再匯出匯入資料。因為有blob欄位不能用sql直接匯出表和資料。1 匯出表 在pl...

Mysql 一次性備份匯出 匯入恢復所有資料庫

有木有遇到過這種情況?電腦或者伺服器需要重灌系統?可是你電腦上存著n多個 的資料庫,怎麼辦?把資料庫資料夾拷貝出來,重灌系統之後再拷回去?如果你使用了innodb引擎,恐怕那樣做會出麻煩的,乙個乙個往外導資料庫?天哪,那要搞到何年何月啊?今天合肥 製作向陽互聯就來介紹一下如何一口氣匯出全部資料庫,再...

Mysql 一次性備份匯出 匯入恢復所有資料庫

有木有遇到過這種情況?電腦或者伺服器需要重灌系統?可是你電腦上存著n多個 的資料庫,怎麼辦?把資料庫資料夾拷貝出來,重灌系統之後再拷回去?如果你使用了innodb引擎,恐怕那樣做會出麻煩的,乙個乙個往外導資料庫?天哪,那要搞到何年何月啊?今天合肥 製作向陽互聯就來介紹一下如何一口氣匯出全部資料庫,再...