내 응용 프로그램이 현재 프로덕션 환경에서 실행 중입니다. 응용 프로그램과 데이터베이스는 동일한 단일 서버에 있습니다. 응용 프로그램은 쓰기 집약적이며 GET 요청에도 업데이트 할 수 있습니다 (하지만 일부는 아니지만).쓰기가 많은 응용 프로그램을위한 MySQL Master-Slave 구성
저는 MySQL 용 마스터 - 마스터 대 마스터 - 슬레이브에 대해 읽었습니다. 마스터 마스터 구성을 사용하는 경우 병합시 삽입 된 데이터가 충돌하지 않도록주의해야하며 업데이트 관련 문제가있을 수 있습니다. 그래서, 나는 Master-Slave가 시작하기에 더 쉬운 선택이라고 믿습니다.
1) 여기서 내 응용 프로그램에 연결해야합니다
그러나, 나는 어디서든 찾을 수있는 몇 가지 답이있다? 그냥 마스터 서버에? 또는 응용 프로그램이 프로세스의 쿼리에 따라 연결할 서버를 결정해야합니까?
2) 필자의 응용 프로그램은 쓰기가 집중적이므로 마스터 - 슬레이브 구성을 갖는 것이 합리적입니까?
3) 프로세스에 선택 및 업데이트가 있다면?, 2 개의 연결을 만들고, 선택을 슬레이브로 보내고, 마스터로 업데이트합니까? (마스터 마스터 구성보다 나쁘지 않습니까?)
4) 마스터가 다운되면 마스터로 슬레이브를 설정하지 않으면 어떻게됩니까? 그 동안 업데이 트가 실패합니까?
이것은 dba.stackexchange.com에 대한 것이지만 잠시 후 마스터는 읽기만 처리해야합니다. 주인이 무너지면 노예 중 한 명을 승진시켜야합니다. –
안녕하세요! 이 질문에 대한 대답은 그렇지 않아도되지만 내 코드가 어떤 서버를 보낼지 결정해야한다고 말한 것을 알 수 있습니다. http://stackoverflow.com/questions/7278163/how-to-code-php-mysql-class-for -master-and-slave-setup; 그러나 나는 어딘가에서 읽어야한다. 그러므로 여기 내 질문. 당신은 또한 내가 승진 할 필요가 있다고 말하며, 나의 질문에서도 그렇게 말합니다. 그러나 나는 홍보하지 않는 동안 어떤 일이 일어나는지 알고 싶습니다. 내 응용 프로그램이 죽은 서버에 연결하려고하기 때문에 모든 업데이트가 손실됩니까? 하지만 당신이 말한 것에서, 내 앱은 누가 현재의 주인인지 알아야합니다 !! 똑바로 보이는 것 같지 않습니다. – Nuno
예 트랜잭션 손실이 발생합니다. 그래서 대개 서버가 지속적으로 마스터를 확인하므로 서버가 다운되면 슬레이브를 최대한 빨리 승격시킵니다. 읽기 및 쓰기 분할은 응용 프로그램 수준에서 훨씬 뛰어납니다. 일부 프레임 워크는 자동으로이 작업을 수행하며 구성에 마스터 및 슬레이브를 지정할 수 있습니다. –