1. 程式人生 > >voltDB官方文件第三章翻譯

voltDB官方文件第三章翻譯

序:本文章是自己再網上檢視VoltDB相關資料的時候沒有找到太好的學習資料,就前去官方網站上翻譯了一部分,約束於個人英語能力有限。實際記錄下來的翻譯只有第三章。

注:文章翻譯自voltDB官方提供的學習資料的第三章。-- 2018-08-28時的版本

章節 3:啟動資料庫

這章描述了voltDB資料庫程式的啟動,關閉和資料的細節配置。章包含以下部分:

       部分3.1:初始化和啟動一個數據庫

       部分3.2:在叢集中初始化和啟動一個數據庫

       部分3.3:停止一個數據庫

       部分3.4:儲存資料

       部分3.5:重啟一個數據庫

       部分3.6:更新叢集中的節點

       部分3.7:明確叢集配置

3.1 初始化和啟動資料庫

在你啟動資料庫之前,你必須初始化根目錄來存放VoltDB資料庫配置資料,日誌和其他的基於磁碟的資訊。一旦初始化根目錄,你就能啟動資料庫。舉個栗子,你能使用(accept:接收,我傾向於使用)預設的“voltdb init”和“voltdb start” 去初始化並啟動一個新的,單一的適合資料庫開發和測試的資料庫及其應用。

例:

       $ voltdb init

       $ voltdb start

這樣會建立一個VoltDB的根目錄作為當前工作目錄的子資料夾並且啟動一個使用全部預設選項的資料。你只需要初始化根目錄一次就能隨你意願的啟動和停止資料庫。

例:

       $ voltadmin shutdown

       $ voltdb start

如果你使用了命令列日誌,在企業版中是預設啟動的(萬惡的企業版),VoltDB自發儲存和恢復資料庫當發生任何方式的停止(沒測試過,保持疑問)和重啟時。如果你沒有使用命令列日誌,你想要在停止之前儲存快照。一種簡單的方式是在shutdown的命令列上新增“--save“引數。

當資料庫重啟時快照自動回滾

       $ voltadmin shutdown –save

       $ voltdb start

如果你想建立一個新的資料庫,你可以重新初始化根目錄。然而,當這個資料庫已經被使用過時你必須使用--force” 標誌;VoltDB 不能清除根目錄除非你指定(explicitly

:明確)“強制”去做。(其實就是添加了 --froce 強制操作後,可以強制初始化當前目錄。 )

例:

       $ voltdb init –froce

       $ voltdb start

你也能使用 --dir或 -D 標識來指定一個替換路徑給根目錄。當然,你也必須使用相同的根目錄在使用初始化和啟動資料庫的時候。你不能在一個沒有初始化的目錄中啟動資料庫。

例:

       $ voltdb init --dir=~/mydb

       $ voltdb start --dir=~/mydb

在大多數情況下,你將想要使用附加引數的方式配置服務和資料庫引數,但是前面提供的命令足夠你在測試環境中啟動。本章的其餘部分將說明如何使用其他引數以及如何在使用群集時啟動、停止和恢復資料庫。

最後,當使用VoltDB企業版的時候,你必須提供一個許可檔案當啟動資料庫的時候。VoltDB按照以下順序在三個可能的位置查詢許可證名為LIXESE.XML的檔案:

  1. 當前工作目錄
  2. 目錄在VoltDB影象檔案安裝(通常在/ VoltDB對 安裝目錄的子資料夾)
  3. 當前使用者的根目錄

如果許可證檔案不在這些位置,你必須明確地識別它,當你執行“voltdb start”命令的使用 --license””-l”標誌例如:

       $ voltdb start -l /usr/share/voltdb-license.xml\

3.2 初始化和開始一個數據庫在一個叢集裡

       你初始化和開始一個叢集和你啟動一個單一節點是一樣的:使用 “voltdb init” 和“voltdb start”命令列。唯一的區別是,在啟動叢集時,必須告訴叢集節點叢集有多大,以及哪些節點用作啟動的潛在主機。

       在每個伺服器上使用“voltdb init”命令初始化根目錄。您可以接受預設配置 如前一節。然而,當建立一個叢集你經常想做一些 配置調整(例如,使k-safety(PS:這個是個啥?。?))。因此,進入指定 配置檔案的習慣是一個好主意。(其實就是讓你把配置資訊放到檔案中,防止忘記。)

       當你初始化資料庫的時候可以通過 “--config”或”-C”標識來呼叫你指定的配置檔案。所有的節點必須使用相同的配置檔案。例如:

$ voltdb init –D ~/mydb –config=myconfig.xml

(-D用於指定初始化路徑,上節提到過。)

所有節點都被初始化後,你開啟叢集通過發行“voltdb start”命令列並在所有的節點上指定以下資訊:

  • 叢集中的節點數:當你開始叢集,你指定多少 伺服器組成叢集使用“--count”標識
  • 伺服器名:你在叢集中指定一個或多個主機名或ip地址從哪些有潛在潛力成為“host”的節點來形成叢集。(有點暈,這句話翻譯的不準)。你指定主機列表使用“--host”或 “-H”標識。你必須指定一個節點作為主機。

對於叢集中的每一個節點,開始工作和開啟伺服器程序使用相同的“voltdb start”命令列。例如,下面的例子啟動一個五節點資料庫叢集指定“voltstr1” 作為主機節點。必然的節點的數量符合命令列中再“--count”引數上指定的數量。

例:

       $ voltdb start –count=5 –host=voltstr1

或者你也可以使用引數標記的縮寫形式:

       $ voltdb start -C 5 -H voltstr1

雖然你只需要指定一個潛在的主節點,但指定多宿主是一個好主義。這種方式,你能使用問安全相同的命令列在一個高可用的叢集上啟動和重新啟動節點。即使重啟的節點在主機列表外,執行的節點能被方便加入(有點暈?。?)

進一步簡化,你用指定所有的節點到”--host”引數上。如果你這樣做了的話,你能跳過“--count“引數。如果”--count“是預設的,VoltDB假設在“--host”中的伺服器數量是完整的並且設定伺服器數量和它相等。例如,以下命令 “--issued” 釋出全部的三臺伺服器“--start”啟動一個三節點叢集:

$ voltdb start –host=svrA,svrB,svrC

       當在一個叢集上開啟一個VoltDB資料庫,VoltDB執行一下一系列操作:

  1. 如果正在啟動得資料庫被選作為主節點,它將等待其他節點得初始化資訊。主節點是從命令列上的主機列表和管理叢集的形成過程中起著特殊的作用。這是很重要的,叢集中的所有節點都可以解決主機名或您指定的主機節點的IP地址。
  2. 如果正在啟動一個非主節點的資料庫,它傳送一個初始化資訊給主伺服器提示已經準備好了。資料庫將不進行任何操作直到正確數量的資料庫(在命令列上指定的ps:應該就是”--count”)連結上。
  3. 直到所有節點都發出初始化資訊,主節點送出一個資訊通知其他節點叢集完成。直到啟動程式完成,主節點角色結束並且它將變成一個同等於在叢集中的其他節點。他不進行進一步的特殊功能。

手動登入到叢集中的每個節點當每次你想要啟動資料庫的時候是乏味的。反而,你能使用ssh去遠端執行shell命令列。通過建立一個ssh指令碼(給予適當的許可權)你能複製檔案並或在每個節點上通過單一的指令碼啟動資料庫。或者你能使用VoltDB環境管理去啟動叢集從一個單一正規的介面。檢視“部署叢集與VoltDB部署管理器(第五章)”章節的“VoltDB管理員指南”部分來獲取更多資訊

3.3 停止一個VoltDB資料庫

一旦VoltDB資料庫是啟動並且執行著,你就能通過停止叢集中的每個節點上的VoltDB服務程序來關閉它。然而,有一個通過單一命令的就能停掉資料庫的命令。你要做到這個通過“voltadmin shutdown”命令,它能暫停資料庫活動,完成所有當前事務,並且清空任何佇列資料(像是匯出或資料庫複製)在實際關閉之前。舉個栗子,輸入以下命令在沒有指定任何伺服器的時候將會有序的關閉資料庫叢集上當前系統的那部分。

例:

       $ voltadmin shutadmin

如果你沒有啟用命令列日誌,又想要儲存所有的資料,你需要去新增一個“--save”引數,去保證儲存一個快照在關閉之前:

例:

       $ voltadmin shutdown --save

在其他system上關閉一個非本機的資料庫使用“--host”引數訪問遠端資料庫的引數。舉個栗子,輸入線面的命令,關閉zeus伺服器上的VoltDB資料庫。

例:

       $voltadmin shutdown --host=zeus

你能暫停資料庫使用“voltadmin pause”命令去限制客戶端訪問它在你在管理模式執行改變的時候。你能恢復這個資料庫通過“voltadmin resume”命令。檢視“VoltDB管理員指南”瞭解更多操作模式。

3.4 資料儲存

因為VoltDB是一個記憶體型資料庫,一旦資料庫伺服器程序停止,資料庫計劃和資料會被從記憶體中移除。然而,VoltDB能儲存這些資訊到磁碟上通過命令列日誌和快照,所有使用這些特性是強烈推薦的。

       命令列日誌提供VoltDB大部分完整的資料的耐久性並且它是預設選項在VoltDB企業版。命令列日誌在儲存的每一筆事務的時候自動工作。如果資料庫由於任何原因停止,則可以重放這些日誌。

       快照,在另一方面,省略了每時每刻複製資料庫資料到磁碟上的操作。你能手動通過“voltadmin save”來建立快照,你能啟動週期性(也稱自動)快照,或者你能儲存一個最終的快照當你使用“voltadmin shutdown --save”來關閉資料庫的時候,當資料庫重啟的時候快照被回滾,但是僅能返回到資料庫快照最後一次被儲存時候的狀態。

學習更多關於命令列日誌請看 章節14 “命令列日誌和恢復”。去學習更多關於儲存和回滾資料庫快照請看 章節 13 “儲存&回滾一個VoltDB資料庫”。

3.5 重啟VoltDB資料庫

一旦一個數據庫停止,你能重啟它通過和啟動一樣的“voltdb start”命令列。一旦資料庫啟動,所有的命令列日誌或快照將被回滾。在VoltDB企業版,命令列日誌自動恢復資料庫最後的狀態。如果沒有命令列日誌但是存在快照,資料庫將會恢復到快照生成時候的狀態。舉個栗子,下面的命令列重啟一個單一節點資料庫。

例:

       $ voltdb start

重啟一個叢集中的資料庫,問題相同“voltdb start“用於啟動群集命令, 包括伺服器主機和數列表。舉個例子:

例:

       $ voltdb start --count=5 --host=voltsvr1

3.6 更新叢集中的節點

一個叢集就是一個可能發生停止或故意停止或不能預料情況的動態系統。或是為了提高效能而在資料庫中擴充套件叢集節點。“voltdb start“命令列提供了以下的附加功能,描述在這本書之後,對於重新加入和新增節點到一個執行中的VoltDB資料庫。

       部分 10.3“系統故障恢復“—使用”voltdb start“命令列提啟動叢集或重新加入失敗過的節點。

       部分 9.2.1“彈性縮放增加節點“—使用“voltdb start”與“--add”標識向一個執行中的資料庫中插入一個新的節點。

3.7 定義叢集配置(重點重點來了)

一個VoltDB資料庫有兩個重要的方面。一方面是執行資料庫的叢集的物理設計,另一方面是你選擇的使用的資料庫特性。你定義的物理叢集設計使用“voltdb start”命令列和“--count”和“--host”標識說明。你能啟用或禁用特殊的資料庫特定在配置檔案中。當你初始化的時候在“voltdb init”上新增“--config”來指定。

配置檔案的格式是一個xml檔案,在你初始化根目錄的時候指定了配置檔案。對配置檔案的基本語法如下:

       <?xml version="1.0"?>

<deployment>

   <cluster kfactor="n" />

   <feature option... >

   </feature>

   ...

</deployment>

<cluster>標籤的屬性決定了資料庫分割槽的設計。<cluster>標籤的屬性:

       siteperhost—指定數字分割槽在叢集中的每一臺伺服器上建立。“sitesperhost” 標誌值乘以伺服器的數量,從而給出叢集中分割槽的總數。見 部分 3.7.1“確定每個主機有多少個位置(Sites沒找到太形象的理解)”對於分割槽數量的解釋。

Kfacter —決定副本機(K-safety)制中N的值保證耐久性當建立資料庫的時候(通俗講就是VoltDB在操作資料的時候建立N+1個副本來保證可用,當所有副本都不可用的時候就會停止服務)。這個K-safely的值控著資料庫分割槽的複製。看章節10“可用性”獲取更多關於K-safely的資訊。

在最簡單的情況下,在沒有啟用特殊選項的單個節點上執行時,你能跳過在“voltdb init”命令列上指定配置檔案和在“voltdb start”上指定伺服器數量和伺服器。如果你沒有指定配置檔案,VoltDB預設八個指定設定給配置主機並且K-safely的值設定為0(就是留有一個副本)。

配置檔案也能啟動或配置許多其它的資料庫執行時相關的引數。在著之後將會描述。舉個栗子,配置檔案能指定:

       ·是否啟用安全性,使用者和密碼都需要驗證客戶端在執行時。看到章 12“安全”更多資訊。

       ·儲存資料庫自動快照的時間表。參見第13.2部分,“排程自動快照”。

       ·從其它資料來源匯出匯入資料的配置資訊。見:“章節15:線上匯入匯出”

完整的配置檔案語法見:“附錄E:配置檔案(deployment.xml)”。7.1

3.7.1 確定每個主機有多少個位置

分配更多位置比給資料庫新增分割槽來使用帶來的危害要小的多(除了增加記憶體)。因此,VoltDB每個host有八個站點去提供合理性能在大多數現代系統配置上。該預設值通常不需要改變。然而,對於擁有大量可用處理器的系統(16或更多)或是一些老機器處理器數量比8個少並且小的記憶體。你可能希望調諧“sitesperhost”引數。

因為沒有設定規則,網站每節點的最優數量是最好的計算實際上 標杆看什麼核心和網站結合應用能產生最好的結果。然而,它是要記住在群集的所有節點將使用相同數量的 重要網站。所以,實現最佳的效能, 採用叢集的所有節點具有相同的物理結構(即核心)。

3.7.2 配置路徑的執行特徵。

一些執行特性的一個重要方面是,他們使用永續性儲存在磁碟資源會話。舉個栗子,自動快照需要一個儲存資料庫快照的路徑。同樣,匯出使用當匯出佇列不能保持後寫入溢位資料的磁碟儲存器。(?。?)

你能指定個人的對於每一個特性的路徑在配置檔案中。如果沒有,VoltDB 建立將在根目錄下建立哪些被需要的特性的子資料夾,僅能使用在測試上。然而,在生產上,它直接決定高量使用的特性,例如命令列日誌,去分離裝置去避免磁碟 I/O 對資料庫效能造成的影響。

你能識別特性的配置路徑,在 <paths> 元素,像下面的特性:

       ·<commandlog>

       ·<commandlogsnapshot>

       ·<exportoverflow>

       ·<snapshots>

如果你命名了一個特別的特性目錄並且他是不存在的(目錄不存在),VoltDB嘗試給你建立它。舉個栗子,“<exportoverflow>”路徑包含能被定期刪除的臨時資料。下面的引用來自一個配置檔案 指定”/opt/overflow“作為溢流出口的目錄:

<paths>

       <exportoverflow path=”/opt/overflow”/>

</paths>

3.7.3 驗證您的硬體配置

配置檔案和啟動命令列引數能定義想要的資料庫叢集的配置。然而,有幾個重要方面的物理硬體和作業系統的配置在你啟動VoltDB之前應該知道:

       ·VoltDB能操作異構叢集。然而,最好的效能標識是執行在類似硬體山的相同程式和相同記憶體的節點。

       ·所有的節點必須能夠解決叢集中的其他節點的IP地址和主機名。這意味著 必須有有效的DNS條目或有適當的條目在本地主機檔案。

       ·必須執行網路時間協議(NTP)的所有群集節點同步,最好是對 同本地時間伺服器。如果叢集中的節點之間的時間差大於200毫秒,VoltDB不能 啟動資料庫。

       ·這是強烈建議您使用“-x“引數執行NTP。使用”ntpd -x“停止伺服器調整時間向後但非常大的增量。