이 글의 내용은 라라벨 학습: 마스터-슬레이브 읽기-쓰기 분리 구성에 관한 것입니다. 이는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
DB의 연결 팩토리에서 다음 코드를 찾으세요
.../vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
/** * Get the read configuration for a read / write connection. * * @param array $config * @return array */ protected function getReadConfig(array $config) { $readConfig = $this->getReadWriteConfig($config, 'read'); return $this->mergeReadWriteConfig($config, $readConfig); } /** * Get a read / write level configuration. * * @param array $config * @param string $type * @return array */ protected function getReadWriteConfig(array $config, $type) { if (isset($config[$type][0])) { return $config[$type][array_rand($config[$type])]; } return $config[$type]; } /** * Merge a configuration for a read / write connection. * * @param array $config * @param array $merge * @return array */ protected function mergeReadWriteConfig(array $config, array $merge) { return array_except(array_merge($config, $merge), ['read', 'write']); }
팩토리 클래스는 읽기 DB를 무작위로 얻어서 읽습니다. 이를 통해 DB 구성은 다음과 같아야 한다고 결론을 내릴 수 있습니다
'mysql' => [ 'write' => [ 'host' => '192.168.1.180', ], 'read' => [ ['host' => '192.168.1.182'], ['host' => '192.168.1.179'], ], 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]
Enhanced 버전, 다중 마스터와 다중 슬레이브를 지원하며 독립적인 사용자 이름과 비밀번호를 지원합니다. 구성은 다음과 같습니다
'mysql' => [ 'write' => [ [ 'host' => '192.168.1.180', 'username' => '', 'password' => '', ], ], 'read' => [ [ 'host' => '192.168.1.182', 'username' => '', 'password' => '', ], [ 'host' => '192.168.1.179', 'username' => '', 'password' => '', ], ], 'driver' => 'mysql', 'database' => 'database', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ]
확인
MySQL의 일반 로그를 열고 tail -f를 사용하여 로그 변경 사항을 모니터링하여 구성이 효과적인지 확인하세요.
권장 관련 기사:
Laravel의 기능 테스트: 테스트 중심 개발(코드 포함)
위 내용은 laravel 학습: 마스터-슬레이브 읽기-쓰기 분리 구성 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!