天天看點

Scp+postgresql問題總結

Scp+postgresql問題總結

本地叢集的資料同步到阿裡雲伺服器上,再将資料上傳到阿裡雲資料庫中,資料庫操作要求的是建立臨時表,上傳資料,檢視是否存在索引,删除索引,建立索引,删除原始表,修改臨時表表名

1:對于scp過程測試多次出現的問題是資料隻上傳了85M,就停止了,然後開始操作資料庫等操作。

當時網速是9.多/MB,scp預設的資料上傳逾時時間為30秒,算下來傳輸85M也是理所當然的了

後來考慮如何改變timeout時間呢,

去官網檢視,給的說明是scp預設的逾時時間為30秒,如果想要永不逾時,需要設定為 set timeout -1

最後對50G 的資料進行兩台伺服器之間的傳輸測試,費時一小時40分鐘左右吧,成功完成,這是最大的一個坑。

2:jdbc拉結資料庫時候出現的問題

  1. 最大的問題從一開始就有,腳本加代碼寫好給運維進行搭建環境測試,出現的第一個問題就是用一個隻能查詢資料的賬戶去操作資料庫了,權限不足問題
  2. 上傳資料到postgresql中,本地資料檔案為.csv檔案,剛開始使用copy tablename from stdin 進行jdbc操作的,問題出現在,字段确實,資料檔案每一行資料postgresql當做了一個字段下的資料,因為我們沒有設定限定符修改為"COPY  " + tableName + " from '" + localFilePath + "' WITH (FORMAT CSV,DELIMITER E'\\x01',HEADER FALSE)";指定檔案就是CSV,指定明确限定符,沒有頭資料,然後進行測試,沒有問題了
  3. 索引考慮問題:目前庫中是否有該表的存在,第二庫中該表是否已經存在了索引,因為我們要将每天資料都上傳到postgresql中,業務需求前後索引不能變,,隻能對表查出來全部索引,和我們規定的索引進行比較,如果有則删除,沒有就跳出這一環節,執行下一步
  4. PostgreSQL資料庫不支援目前主機ip進行jdbc通路,查找好久,問題是在與D:\Program Files\PostgreSQL\9.4\data下面的pg_hba.conf檔案需要我們手動添加host all all ip/34 MD5,重新開機服務就可以了,這個問題真的是很煩
  5. 對每一步可能發生的一次能夠全部進行捕獲處理。
  6. 每日新增的資料50G,使用hive導出來的csv檔案,測試中發現檔案末尾兩行中居然有warn日志,導緻測試過程一緻失敗,源頭在于hive -f/-e導出資料過程的問題,最終能夠解決方案是添加過濾器:hive -e "select * from heitong.product_mult_ht_v5 limit 1000" |grep -v "WARN" |sed 's/\t/\x01/g'>/home/test/product_mult_ht_v5_2019-04-17.csv,這樣csv檔案中就不在有warn日志資訊了 。

因為在開發中,我們沒有時間手動去完成這些東西,需要我們提供一種便捷途徑,讓機器自己定時的去完成這些操作。是以上面要求讓開發個适合開發人員的工具。然而中的是苦難重重,測試小量資料問題幾乎沒發現,但是我們每天一個檔案夾下資料為50G,大資料量測試什麼樣的問題都出來了,隻能排查,表占用阿裡雲伺服器50G,資料50G,索引50G,最終提示PG記憶體不足,到此為止bug不在屬于我的問題了 。