mnesia問題集錦

2021-08-10 06:26:37 字數 1533 閱讀 1460

網上的示例,大多以單節點為例,集群中的使用方法參考。注意scheme的設定,節點之間沒有主從之分。

分布式環境中很多時候需要我們動態的增加或減少節點。

mnesia:change_config(extra_db_nodes, nodelist)

(

引數是新的node的節點, 如果成功,返回, 其中resnodelist是已經加到mnesia cluster中的節點), 擴容之後需要拷貝表資料到新節點:

mnesia:change_table_copy_type(table, node, type)

mnesia:del_table_copy(tab, node)
(

這個函式在node上刪除tab**的備份,如果這個**的最後乙個備份被刪除,這個表也就被刪除了, 這個函式還可以用來刪除schema, 如果刪除schema, 這個node將在mnesia cluster中被移除,呼叫之前 需要在這個node上停掉mnesia)

mnesia:stop()
mnesia:delete_schema(discnodes)
索引的好處無需多言,mnesia建立的index的方法如下:

mnesia:add_table_index(tab,attributename)

索引帶來方便的同時,也帶來負面影響。

儘管mnesia有自動備份機制,也難100%保證資料不會出問題。當資料庫發生嚴重錯誤無法啟動,或者資料丟失時可以及時有效地恢復資料。

在mnesia啟動後,可以使用mnesia:backup()備份,函式原型:

mnesia:backup(opaque [,backupmod]) -> ok |

在mnesia啟動後,可以使用mnesia:restore()恢復,函式原型:

mnesia:restore(opaque, args) -> |

恢復過程相關的所有表將寫鎖,可在mnesia不用重啟的情況下恢復資料

更多關於備份回滾參考

在我們的專案中,由於初始設計的不足導致,常常需要在後續開發過程中修改表(record)的結構,參考。

這裡的dump和自研資料不是乙個概念,自研資料庫的dump用於備份資料,這裡的dump是資料落地的意思。通過erlang的啟動引數配置dump引數

由於dets表2g的限制,對於資料量過大的表,需要使用分片功能把錶分成較小的檔案存在磁碟上。可以指定分片數量,分片表資料和正常的表資料在集群中分布一致。參考

dets的2g限制讓人詬病,32位的遺留問題。 有下面幾種方法突破2g限制:

修改dets原始碼,移除相關限制,參考

參考問題7.

mnesia在頻繁運算元據的過程可能會報錯:** warning ** mnesia is overloaded: 。這個警告發生在dump操作過程中。參考處理方法

以往的關係型資料庫中提供了主鍵的自增方法,非常好用。mnesia的實現方法

mnesia在執行時提供了大量的統計量,對這些統計量進行監控,有助於正確使用mnesia,以及對mnesia進行調優,這些統計量包括。

mnesia 文件位址

mnesia是erlang提供的乙個基於分布式的資料庫管理系統。它的分布式和erlang一樣都是 天生的 集群,備份,主從這些在mnesia上面都非常簡單。mnesia中的表有三種儲存形式 ram copies,disc copies,disc only copies。表的儲存形式可以在表的建立中指...

hadoop hdfs 問題集錦 面試問題集錦

hadoop hdfs問題集錦 一 hadoop為什麼不適合處理大量的小檔案,怎麼解決?原因 1 檔案的元資料 包括檔案被分成了哪些blocks,每個block儲存在哪些伺服器的哪個block塊上 都是儲存在namenode上的記憶體,會對namenode的記憶體造成壓力 2 檔案過多會造成檔案的定...

403問題集錦

如果你是訪問乙個網頁出現這個問題 說明這個網頁是一般人是關閉的 禁止訪問的 你就不要看了 錯誤 403.1 403.1 錯誤是由於 執行 訪問被禁止而造成的,若試圖從目錄中執行 cgi isapi 或其他可執行程式,但該目錄不允許執行程式時便會出現此種錯誤。錯誤 403.2 403.2 錯誤是由於 ...