머리말
MySQL 마스터-슬레이브 동기화는 현재 널리 사용되는 데이터베이스 아키텍처입니다. 이 기술은 상대적으로 성숙되어 있으며 구성이 복잡하지 않습니다. 특히 로드가 많은 웹사이트의 경우 마스터-슬레이브 동기화를 효과적으로 수행할 수 있습니다. 데이터베이스 읽기 및 쓰기 압력. 이전에는 yii1을 사용할 때 마스터-슬레이브 데이터베이스 지원이 그리 편리하지 않았습니다. 여러 DB의 구성 요소를 작성한 다음 AR의 getDB에 해당 db를 반환하는 것뿐이었습니다. 이는 마스터-슬레이브 데이터베이스를 처리하는 데에도 사용할 수 있습니다.
구현 방법
Yii2는 이 문제를 해결했으며 코드에서 직접 처리할 수 있습니다.
PHP 코드
'db' =>[ 'class' => 'yii\db\Connection', // 配置主服务器 'dsn' => 'dsn for master server', 'username' => 'master', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'php_',//默认为空 // 配置从服务器 'slaveConfig' => [ 'username' => 'slave', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'php_', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], ];
정말 편리하지 않나요? 뿐만 아니라 슬레이브 서버 그룹도 구성할 수 있습니다:
PHP 코드
'db'=>[ //...上面是一些标准配置 'slaves' => [ ['dsn' => 'dsn for slave server 1'], ['dsn' => 'dsn for slave server 2'], ['dsn' => 'dsn for slave server 3'], ['dsn' => 'dsn for slave server 4'], ], ]
더욱 좋은 점은 메인 서버 역시 아래와 같이 문자 인코딩 세트, 테이블 등 다수의 메인 서버로 구성되어 있다는 점입니다. 접두사 및 기타 설정 위 내용을 참조하세요.
PHP 코드
'db'=>[ // 配置主服务器 'masterConfig' => [ 'username' => 'master', 'password' => '', 'attributes' => [ // use a smaller connection timeout PDO::ATTR_TIMEOUT => 10, ], ], // 配置主服务器组 'masters' => [ ['dsn' => 'dsn for master server 1'], ['dsn' => 'dsn for master server 2'], ], //other ...slaves ];
정말 쉽습니다.
물론 더 쉽게 사용하고 싶다면 실제로 YII2의 AR을 사용해야 합니다. 코드를 변경할 필요가 없습니다. .