Я использую Symfony 4 для взаимодействия с существующей установкой Master/Slave MySQL и выполняю запросы к серверу, используя необработанный sql. Необработанный SQL — единственный вариант на данный момент.
я использую показать полный список процессов; на сервере БД, чтобы контролировать, какая БД используется, и я вижу только подключения к главному серверу. Не похоже, чтобы какие-либо из рабов когда-либо использовались.
Для справки, у меня установлено два соединения dbal, по умолчанию НЕ главный/подчиненный, и используется сопоставление orm. Второй — это ведущий/ведомый, с которым у меня проблемы, и это сервер, к которому я выполняю необработанные запросы sql.
Ниже моя доктрина.yml:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%env(DATABASE_HOST)%"
dbname: "db1"
user: "%env(DATABASE_USER)%"
password: "%env(DATABASE_PASS)%"
charset: UTF8
ds:
driver: pdo_mysql
host: "%env(DS_DATABASE_HOST)%"
dbname: "db2"
user: "%env(DS_DATABASE_USER)%"
password: "%env(DS_DATABASE_PASS)%"
slaves:
slave1:
host: "%env(DS_DATABASE_SLAVE1_HOST)%"
user: "%env(DS_DATABASE_USER)%"
password: "%env(DS_DATABASE_PASS)%"
dbname: "db2"
slave2:
host: "%env(DS_DATABASE_SLAVE2_HOST)%"
user: "%env(DS_DATABASE_USER)%"
password: "%env(DS_DATABASE_PASS)%"
dbname: "db2"
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
Main:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Main'
prefix: 'App\Entity\Main'
alias: Main
ds:
connection: ds
Я настроил свои менеджеры сущностей в файле services.yml следующим образом:
# Entity managers
App\Service\Database\MainEntityManager:
arguments:
$wrapped: '@doctrine.orm.default_entity_manager'
App\Service\Database\DSEntityManager:
arguments:
$wrapped: '@doctrine.orm.ds_entity_manager'
Менеджер сущностей (в данном случае DSEntityManager) внедряется в конструктор класса, после чего запрос выполняется как таковой:
$result = $this->em->getConnection()->prepare($sql);
$result->execute($args);
Пожалуйста, дайте мне знать, если мне не хватает какой-либо полезной конфигурации.
Большое спасибо за помощь.