그래서 고가용성을 갖춘 MySQL 데이터베이스 서버를 설정하고 싶습니다. 따라서 두 개의 장치(Banana Pi)를 구입하고 MySQL 클러스터 소프트웨어를 설치하는 방법에 대한 튜토리얼을 따랐습니다. 나는 단지 두 개의 장치로 구성된 집합이 정확히 MySQL 클러스터를 사용하는 방식이 아니라는 것을 알고 있지만 하드웨어 비용을 절약하기 위해 지금은 두 개의 장치만 구입했습니다.
지금까지 다음과 같은 구성을 얻었습니다(sqlnode1 및 sqlnode2는 장치의 호스트 이름입니다).
관리 노드(ndb_mgmd):
- sqlnode1(노드 ID: 1)
- sqlnode2(노드 ID: 2)
스토리지 엔진(ndbd):
- sqlnode1: localhost에서 관리 노드를 사용하도록 구성됨(노드 ID: 3)
- sqlnode2: localhost에서 관리 노드를 사용하도록 구성됨(노드 ID: 4)
MySQL 서버(mysqld):
- sqlnode1: 두 ndbd 노드를 모두 사용하도록 구성됨(노드 ID: 5)
- sqlnode2: 두 ndbd 노드를 모두 사용하도록 구성됨(노드 ID: 6)
따라서 기본적으로 모든 장치에는 ndb_mgmd, ndbd 및 mysqld가 실행되고 있습니다.
제가 달성하고 싶은 것은 장치 중 하나에 장애가 발생하더라도 다른 장치를 완전히 사용할 수 있어야 한다는 것입니다(아주 특정한 이유로 인해 여기서는 간단한 데이터베이스 복제를 사용할 수 없습니다).
모든 구성 요소를 시작하면 모든 것이 잘 작동합니다. 한 MySQL 호스트에서 데이터를 변경하면 다른 호스트가 변경 사항을 즉시 적용합니다(그 반대의 경우도 마찬가지).
그러나 장치 중 하나의 LAN 케이블을 분리하면 다음과 같은 일이 발생합니다.
- sqlnode2 연결 끊기: 작동 중인 노드(sqlnode1)가 짧은 시간 동안 중단된 후 계속해서 제대로 작동합니다(기본적으로 이것이 제가 원하는 것입니다).
- sqlnode1 연결 끊기: 작동 중인 노드(sqlnode2)가 잠시 동안 정지된 후전혀 작동하지 않습니다- 모든 쿼리는 "4009 Cluster Failure"로 끝나고 쿼리는 중단된 노드의 네트워크 연결을 복원한 후에만 다시 작동하기 시작합니다. 그 후 ndb_mgmd 데몬을 모니터링하면 노드 ID 4(sqlnode2의 ndbd)가 강제로 종료되었음을 알 수 있습니다.
요약하자면, 전체 시스템은 sqlnode1에 의존하는 것으로 보이며 구성 요소가 삭제되고 동일한 유형의 다른 구성 요소가 사용 가능하면 모든 것이 계속 실행된다고 생각했기 때문에 왜 이런 일이 발생하는지 정말 궁금합니다.
두 개의 서로 다른 관리 노드를 설정하기 위해 이 튜토리얼을 따랐습니다.http://www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts
제가 놓친 게 있나요? 아니면 제가 MySQL 클러스터링이 어떻게 작동하는지 오해했을 수도 있나요?
답변1
저는 Mysql 클러스터를 사용하지 않았지만 여기에서 복제를 수행할 수 있어야 합니다. 또한 복제만 필요한 경우 mysql 클러스터는 아마도 필요한 것보다 훨씬 더 많은 작업을 수행합니다. MySQL 클러스터에는 하나가 다운될 경우 즉시 다른 SQL 서버로 라우팅하는 기능이 있으므로 호스트 이름의 DNS 레코드를 매번 수정하거나 임시 SQL 서버를 설정하거나 수정될 때까지 작동하지 않게 놔두는 필요성을 줄입니다. 다른 일도 할 수 있습니다. 따라서 도움을 드리기 위해 mysql 클러스터보다 사용자 친화적인 MySQL 커뮤니티 에디션을 사용하는 것이 좋습니다.
mysql 커뮤니티 에디션을 구입하면 복제가 가능해집니다. 따라서 1개의 mysql 서버를 모든 것이 편집되는 마스터로 설정할 수 있고 두 번째 mysql 서버는 슬레이브이며 구성 가능한 간격으로 마스터가 가지고 있는 것을 검색할 수 있습니다. . 나중에 더 많은 슬레이브를 쉽게 추가할 수도 있습니다. 또한 슬레이브가 반드시 별도의 시스템에 있을 필요는 없으며 MySQL 인스턴스를 두 개 이상 실행할 수 있습니다. 그러나 이는 복제 목적과 안전 장치 기능을 상실하게 됩니다. 이것이 당신이 찾고 있는 것일 가능성이 가장 높습니다. 또한 mysql에는 mysql 커뮤니티 에디션에 대한 복제 설정에 대한 가이드가 웹사이트에 있습니다.
답변2
내가 원하는/필요한 작업을 정확히 수행하는 것으로 보이는 Galera MySQL 클러스터로 전환하여 문제를 해결했습니다.