Ubuntu安裝Rocksdb並調試


前言

第一次寫博客^_^

系統是全新的Ubuntu20.04,什么都沒有,一切從頭開始安裝

查看gcc和g++版本

sudo apt-get update gcc --version g++ --version

注意這里是倆杠。4.7以上不用更新,下面代表正常,第二行是版本號。

沒有的話安裝:

sudo apt install build-essential

安裝必要的一些庫

sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev

下載,安裝

wget https://github.com/facebook/rocksdb/archive/v6.6.4.zip #6.6.4 (2020-01-31)

此過程時間較長,且容易失敗。但這是幾種命令行下載方法中失敗率最低的一種了,嫌慢可以在Windows下用百度雲之類的下載別人下載好的,然后用遠程軟件傳(貌似更慢哈哈)。

unzip v6.6.4.zip cd rocksdb-6.6.4/ make static_lib && sudo make install-static make shared_lib && sudo make install-shared

其中第一步里全新的系統沒有zip的話安裝(一般都有,有請忽略↓):

sudo apt-get install zip

另:后兩步會消耗大量時間,以“$DEBUG_LEVEL is 0”開頭,后面一堆CC,可以去干點別的事。

另一種方法:

用其本身的cmake來直接解決,要先安裝cmake才行,打完下面的“cmake CM”之后可以直接Table鍵補全。

cmake CMakeLists.txt make db_bench #或者 make all 都行,會出現一行行綠色的進度

rocksdb編譯分為三種模式,上面的install屬於運行最快的模式,同時也是沒有debug的模式,將內部的斷言全部清除了。

然后是make all,make db_bench之類的模式屬於debug模式,運行速度比上面的慢一點,但是方便debug和找出問題。

設置環境變量

#echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.conf
sudo ldconfig -v  #refresh the ldconfig cache
INSTALL_PATH=/usr make shared_lib && sudo make install-shared sudo ldconfig -v  #refresh the ldconfig cache

到這里就算是安裝成功了,接下來是寫個小程序測一下以及db_bench的測試。

測試程序

創建一個c++程序,命名為test.cpp

先vim test.cpp創建了文件,然后按“i”鍵進入插入模式,復制粘貼下面的代碼,然后按“esc”,輸入“:wq”,也就是保存並退出。

 1 #include <cstdio>
 2 #include <string>
 3 #include "rocksdb/db.h"
 4 #include "rocksdb/slice.h"
 5 #include "rocksdb/options.h"
 6 
 7 using namespace std;  8 using namespace rocksdb;  9 
10 const std::string PATH = "/tmp/rocksdb_tmp"; 11 int main(){ 12     DB* db; 13  Options options; 14     options.create_if_missing = true; 15     Status status = DB::Open(options, PATH, &db); 16  assert(status.ok()); 17     Slice key("foo"); 18     Slice value("bar"); 19     std::string get_value; 20     status = db->Put(WriteOptions(), key, value); 21     if(status.ok()){ 22         status = db->Get(ReadOptions(), key, &get_value); 23         if(status.ok()){ 24             printf("get %s success!!\n", get_value.c_str()); 25         }else{ 26             printf("get failed\n"); 27  } 28     }else{ 29         printf("put failed\n"); 30  } 31     delete db; 32 }

 

編譯運行

動態編譯:

g++ -std=c++11 -o rocksdbtest test.cpp -lrocksdb  -lpthread -ldl

最后這個 -ldl很重要

運行:

./rocksdbtest

或者靜態編譯:

g++ -std=c++11 -o rocksdbtest test.cpp ./librocksdb.a -lpthread -lsnappy  -lz -lbz2 -lzstd /usr/lib/x86_64-linux-gnu/liblz4.a

(很長,都在同一行,這個加不加-ldl沒試)

運行成功后應該輸出get bar success!!,有錯會報錯。

另:若是完全新的電腦可能沒有安裝gdb,不能進行debug,直接sudo aot-get install gdb即可。

db_bench測試

此時看文件我們會發現有很多的.d文件,這是make過程殘留的,不知道是makefile文件沒寫好還是咋回事,清除方式是下面

make clean

現在再看(ls命令)是不是清爽多了,現在進行db_bench的測試

make db_bench

注意輸入這句話的時候不要想用Tab鍵補全,不然會卡很久(不要問我怎么知道的)。

make成功大致是這樣的,當然也需要很長時間↓

 

 完成后進行db_bench測試

注意:很多人可能因為snappy庫的緣故不能運行db_bench(實際上之前已經安裝了,但可能因為鏈接問題無法使用),實在安裝不好的話可以直接取消掉snappy壓縮,具體就是在./db_bench后面加上參數"-compression_type=none",此時snappy壓縮就被關掉了。

./db_bench

參數:db_bench測試時可以加很多很多的參數,在后面直接加“--”加參數名加參數值即可,具體請直接搜索rocksdb參數。

例如./db_bench --benchmarks="fillseq"表示順序寫入。

可以通過可以通過 ./db_bench --help自己查看想要的配置參數

完事記得

make clean

數據存在哪

首先輸入“cd /”進入根目錄,然后“cd tmp”進入臨時文件存儲區,然后找到以rocksdb開頭的文件夾即是。

注意里面的日志文件,可以看到很多有用的信息哦。

bye~

參考

https://blog.jeffli.me/blog/2016/12/02/getting-started-with-rocksdb-in-centos-7/

https://zhang0peter.blog.csdn.net/article/details/96869454


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM