前提・実現したいこと
最終的には、Symfonyにて使用しておりますPDO_MYSQLからRouterを経由してDBサーバに接続がしたいのですが、
mysqlコマンドにおいても腑に落ちない点があるため、いろいろ模索しております。
発生している問題・エラーメッセージ
下記コマンドで接続できれば道が開けるかなと思っております。
# mysql -u root -P 6446 -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
protocolオプションで、なぜか「tcp」を設定すると、接続できるようになります。
# mysql -u root -P 6446 -p --protocol=tcp Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 162 Server version: 5.7.23-log MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. . . .
試したこと
Router側のmy.cnfに設定を入れたらmysqlコマンドで--protocol=tcp
を入れなくても接続できましたが、
Symfonyからの接続は変わりませんでした。(おそらく、my.cnfはmysqlコマンドしか対象としてない?)
[client] protocol=tcp
補足情報
MySQL(Router)側の設定で、何か対応できれば、Symfony側の設定を変えなくて済むと思われるため、
MySQLやMySQL Router側で解決がしたいです。
(一部マスクしております)
ちなみに、mysqlrouter.confは以下のとおりになっています。
# File automatically generated during MySQL Router bootstrap [DEFAULT] name=xxxxxxxxxx user=xxxxxxxxxx keyring_path=/var/lib/mysqlrouter/keyring master_key_path=/etc/mysqlrouter/mysqlrouter.key connect_timeout=30 read_timeout=30 [logger] level = INFO [metadata_cache:xxxxxxxxxx] router_id=4 bootstrap_server_addresses=mysql://db1:3306,mysql://db2:3306,mysql://db3:3306 user=xxxxxxxxxxxxxxxxxxxxx metadata_cluster=xxxxxxxxx ttl=5 [routing:xxxxxxxxxx_default_rw] bind_address=0.0.0.0 bind_port=6446 destinations=metadata-cache://xxxxxxxxxx/default?role=PRIMARY routing_strategy=round-robin protocol=classic [routing:xxxxxxxxxx_default_ro] bind_address=0.0.0.0 bind_port=6447 destinations=metadata-cache://xxxxxxxxxx/default?role=SECONDARY routing_strategy=round-robin protocol=classic [routing:xxxxxxxxxx_default_x_rw] bind_address=0.0.0.0 bind_port=64460 destinations=metadata-cache://xxxxxxxxxx/default?role=PRIMARY routing_strategy=round-robin protocol=x [routing:xxxxxxxxxx_default_x_ro] bind_address=0.0.0.0 bind_port=64470 destinations=metadata-cache://xxxxxxxxxx/default?role=SECONDARY routing_strategy=round-robin protocol=x
Symfony2のconfig.ymlで、protocolを設定するようにしてみても、記述方法が悪いのか解決しませんでした。
# Doctrine Configuration doctrine: dbal: default_connection: master connections: master: driver: "%database_driver%" host: "%database_host_master%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 protocol: tcp ←これを記載してみたが、DB2しか有効にならないっぽい。「IBM DB2 specific.」 options: protocol: tcp ←これを記載してみても変わらず。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/02 06:15