Рубрики
Uncategorized

Репликация базы данных Yii2 и разделение операций чтения и записи

Автор оригинала: David Wong.

Предисловие

Многие базы данных поддерживают репликацию баз данных для повышения доступности баз данных, ускорения времени отклика сервера и снижения нагрузки на базу данных. С помощью функции репликации базы данных данные реплицируются с так называемого главного сервера на подчиненный сервер. Основной сервер вносит дополнения и удаления, в то время как подчиненный сервер выполняет запросы.

Предварительное условие разделения чтения и записи: конфигурация синхронизации ведущего и ведомого устройства базы данных Linux

Синхронизация данных двух серверов является предварительным условием разделения операций чтения и записи, но этого нет в руководстве по разделению операций чтения и записи Yii2. Конфигурация разделения чтения и записи базы данных yii2 реализует только чтение-запись в основной базе данных и запрос в подчиненной базе данных, поэтому сначала нам необходимо настроить синхронизацию данных главного и подчиненного серверов. Дополнительные сведения см. в разделе Конфигурация синхронизации ведущего и ведомого устройства базы данных Linux

Вложение: Синхронизация конфигурации выполнена успешно, и сбой синхронизации вызван неправильной работой или другими причинами. Как решить эту проблему? Просмотр: Решение проблемы Синхронизации данных Mysql Master-Slave

Конфигурация разделения чтения и записи

После завершения синхронизации базы данных ведущего и ведомого серверов Linux мы можем запустить конфигурацию разделения чтения и записи yii 2. Официальные документы по этому аспекту также доступны, но утверждение неясно, и нет практических примеров. Я здесь для того, чтобы улучшить его.

1. Откройте файл конфигурации базы данных common config main-local. php и настройте его в атрибуте БД следующим образом:

'db' => [
    'class' => 'yii\db\Connection',
     
    // Configure the master server
    'dsn' => 'mysql:host=192.168.0.1;dbname=hyii2',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8',
     
    // Configure the slave server
    'slaveConfig' => [
        'username' => 'root',
        'password' => 'root',
        'attributes' => [
            // use a smaller connection timeout
            PDO::ATTR_TIMEOUT => 10,
        ],
        'charset' => 'utf8',
    ],
     
    // Configure the slave server组
    'slaves' => [
            ['dsn' => 'mysql:host=192.168.0.2;dbname=hyii2'],
        ],
],

Если вышеуказанная конфигурация может реализовать операцию разделения чтения и записи базы данных yii2, это очень просто, пока одна конфигурация в порядке, функция разделения чтения и записи автоматически завершается фоновым кодом, вызывающему абоненту не нужно беспокоиться.

Приведенная выше конфигурация представляет собой только один ведущий-ведомый. Если требуется один ведущий-ведомый или многомастерный ведомый, его можно заполнить, обратившись к этому примеру и официальным документам. Официальные документы