나는 새벽과 망상 뉴비 야.mnesia 클러스터에 노드를 추가하는 방법은 무엇입니까?
이미 스키마가있는 mnesia 데이터베이스에 새 disc_only_copies 노드를 어떻게 추가합니까?
감사
나는 새벽과 망상 뉴비 야.mnesia 클러스터에 노드를 추가하는 방법은 무엇입니까?
이미 스키마가있는 mnesia 데이터베이스에 새 disc_only_copies 노드를 어떻게 추가합니까?
감사
[email protected]
)
erl -sname b -mnesia dir '"/path/to/storage"' -s mnesia
를 시작
. 그러면 [email protected]
이라는 새 ram_copies 노드가 시작됩니다.
원래 노드 ([email protected]
)에서 erlang 프롬프트에서 mnesia:change_config(extra_db_nodes, ['[email protected]']).
을 실행하십시오. 그러면 원래 노드가 mnesia 클러스터에 b
을 연결하게됩니다. 이 시점에서 [email protected]
은 클러스터에 가입했지만 스키마 사본 만 보유합니다.
[email protected]
할 수있는 노드를 새로 만들려면, 우리는
disc_copies
에
ram_copies
에서
[email protected]
에 스키마 테이블 형식을 변경해야합니다. 모든 노드에서
mnesia:change_table_copy_type(schema, '[email protected]', disc_copies).
을 실행하십시오.
[email protected]
에는 현재 스키마 사본 만 있습니다. [email protected]
에 [email protected]
에서 모든 테이블을 복사하여 테이블 형식을 유지하기 위해, 당신은 실행할 수 있습니다
[{Tb, mnesia:add_table_copy(Tb, node(), Type)}
|| {Tb, [{'[email protected]', Type}]} <- [{T, mnesia:table_info(T, where_to_commit)}
|| T <- mnesia:system_info(tables)]].
이 명령은 네트워크를 통해 각 테이블의 내용을 복사하므로 실행 시간이 걸릴 수 있습니다.
[email protected]
은 이제 [email protected]
의 정확한 복제본입니다. 해당 문을 수정할 수 있습니다 - mnesia:add_table_copy/3
에 대한 호출에서 disc_only_copies
으로 Type
변수를 바꿔 테이블을 복사하지만 디스크에만 있는지 확인하십시오.
mnesia documentation은 여기서 설명한 기능을 사용하는 방법을 설명합니다.
아마도이 질문에 대한 답변을 알고있을 것입니다. http://stackoverflow.com/questions/3702201/remove-not-exist-already-node-from-mnesia-clusterscheme – vinnitu
이 비슷한 질문에 대한 답을 알고 있다고 생각하지 마십시오. 관련 질문? http://stackoverflow.com/questions/13398632/creating-mnesia-disk-copies-of-existing-ram-table – mezamorphic