Как настроить Pimcore для использования подключения к базе данных первичной/реплики
Важно : Имейте в виду, что первичное/репликаное соединение может использоваться только для кластерной среды Mariadb/mysql, не Для настройки первичной/реплики сервера! Из-за обширного многослойного, последовательного и помеченного кэширования Pimcore Необходимо, чтобы Pimcore всегда имел доступ к последним данным в базе данных. Из -за асинхронной природы Из первичной/реплики это не обеспечено для этого.
Создать класс подключения к базе данных, специфичный для проекта,
Создайте новый класс в src\Db\Connection.php, со следующим контентом:
<?php
namespace App\Db;
use Doctrine\DBAL\Connections\PrimaryReadReplicaConnection;
class Connection extends PrimaryReadReplicaConnection
{
/**
* @param string|null $connectionName
*/
public function connect($connectionName = null): bool
{
$returnValue = parent::connect($connectionName);
if ($returnValue) {
$this->_conn->query('SET default_storage_engine=InnoDB;');
$this->_conn->query("SET sql_mode = '';");
}
return $returnValue;
}
}
Configure the Primary/Replica Connection
The main database connection which you have configured for Pimcore is always the primary connection.
Then you can add as many replica hosts as you like, in the following example there's just one replica host,
where only the host is different (in our case replica1), all other options are reused from the primary connection.
doctrine:
dbal:
connections:
default:
wrapper_class: '\App\Db\Connection'
replicas:
replica1:
host: 'replica1'
port: 3306
dbname: dbname
user: username
password: password
charset: UTF8MB4
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.