>php教程 >PHP开发 >Yii2를 사용하여 마스터-슬레이브 데이터베이스 설정 구현

Yii2를 사용하여 마스터-슬레이브 데이터베이스 설정 구현

高洛峰
高洛峰원래의
2016-12-12 09:52:401853검색

머리말

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을 사용해야 합니다. 코드를 변경할 필요가 없습니다. .


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.