涉及到多個角色/服務(mergeserver,updateserver,chunkserver,rootserver)的oceanbase除錯需要將整個集群啟動起來後進行,為了方便,可以在同一臺計算機上啟動這些服務,只要占用的埠不同即可。下面簡要記錄如何在同一臺計算機上啟動oceanbase的四個服務。
1. 編譯並安裝oceanbase集群(configure, make, make install)到目標資料夾
2. 將single-machine-bootstrap拷貝到目標資料夾,並執行一次,以自動初始化各種資料目錄,其中data和etc目錄如下:
single-machine-bootstrap會自動生成乙個最簡單的schema.ini,只建立了乙個簡單示例表,這可能不是你需要的,可以進入到etc/目錄,將這個檔案替換成你需要的schema
4. 使用oceanbase.sh指令碼啟動集群 :
oceanbase.sh start_rs
oceanbase.sh start_ups
oceanbase.sh start_ms
oceanbase.sh start_cs
5. 執行rs_admin來設定主機群標誌(must):
bin/rs_admin -r 10.1.11.11 -p 1111 set_obi_role -o obi_master
上面的ip和埠是rs的,可以在etc/rootserver.conf中檢視到。
6. 使用oceanbase.sh指令碼關閉集群:
oceanbase.sh stop_rs
oceanbase.sh stop_ups
oceanbase.sh stop_ms
oceanbase.sh stop_cs
不一定能一次就關死,必要時候ps -aux | grep server 看一下
oceanbase各個server的執行日誌在data/log目錄下,通過檢視日誌可以觀察程式是否執行正確
具體除錯就得靠gdb了,attach上去即可。
另外,為了除錯查詢相關的問題,還可以使用客戶端,有兩種途徑:(1)自己利用c api來編寫客戶端(2)利用psql(自從有了obconnector,oceanbase就可以被各種通用的sql客戶端訪問了。obconnector的功能是讓使用者可以通過postgres psql工具或其他語言的postgres資料庫介面(如posgres jdbc,postgres php pdo介面)連線和訪問oceanbase資料庫。)
常見問題:
1. 啟動時(特別是重啟時)無法建立table
》請(1)嘗試重啟,(2)檢查etc/rootserver.conf下面的__create_table_in_init=1專案,確保值為1,(3)刪除data/rs_commitlog, data/ups_commitlog再重啟
2. 重啟時一些server沒法啟動
》 確保原server被kill掉了,如果沒有,使用kill -9 server_pid暴力踢之
3. 其它
》確保使用了rs_admin來設定obi role,這一步是必須的,容易忘記。
作者email:[email protected]
用於除錯的巨集
在linux程式設計中,gdb是個不錯的除錯工具。但是當檔案數量上百,甚至上千之後,使用gdb除錯就是一場災難。因此在程式中加入合理的列印資訊,能更高效的定位到問題的所在。下面就是定義的巨集。分別是warning,info,error。利用了,file function line 變數。cpp vi...
7 25 IDE試用和除錯
今天試了試sublimetext 2感覺真的不錯,暗色系的介面很酷很有型,高亮顯示 填充還有豐富的擴充套件也讓使用變得很方便,當然還有很多其他功能,我還來不及嘗試,快捷鍵也不熟練,不然 敲起來行雲流水般,速度颼颼的 除錯工具我試用了chrome自帶的開發者工具還有firefox的firebug,熟悉...
在android 輸出log 資訊 用於除錯
要想在 jni native 中看列印資訊,printf 是不行的,需使用 android log print,如下所示。android log print android log info,projectname i am d n n 該函式與 printf 用法相似,使用格式字元。列印的結果通過...