1

2 台のサーバー (srv50/51) で構成しました。そのうちの 1 台はマスターで、2 台目はスレーブです。

ここで私の設定ファイル /etc/maxscale.cnf の設定:

[Read-Only Service]
type=service
router=readconnroute
servers=server50, server51
user=YYYYYYYYYYYYY
passwd=XXXXXXXXXXXXXX
router_options=slave

[Write-Only Service]
type=service
router=readconnroute
servers=server50, server51
user=YYYYYYYYYYYYY
passwd=XXXXXXXXXXXXXX
router_options=master

[Read-Only Listener]
type=listener
service=Read-Only Service
protocol=MySQLClient
port=4008

[Write-Only Listener]
type=listener
service=Write-Only Service
protocol=MySQLClient
port=4009

私がルーターオプションを理解するにつれて、誰がマスターであるかを見て、書き込みクエリをマスターに送信します

Maxscale (maxadmin 経由) は 2 つのサーバーを検出し、1 つがマスターであることを理解しているようです。

MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server51           | 192.168.0.51    |  3306 |           0 | Slave, Running
server50           | 192.168.0.50    |  3306 |           0 | Master, Running
-------------------+-----------------+-------+-------------+--------------------

しかし、Maxscale 書き込み専用リスナー ポート (4009) でローカルの Mysql に接続しても、リスナーは停止モードになっていますが、これは正常ですか?

MaxScale> list listeners
Listeners.
---------------------+--------------------+-----------------+-------+--------
Service Name         | Protocol Module    | Address         | Port  | State
---------------------+--------------------+-----------------+-------+--------
Read-Only Service    | MySQLClient        | *               |  4008 | Stopped
Write-Only Service   | MySQLClient        | *               |  4009 | Stopped
MaxAdmin Service     | maxscaled          | *               |  6603 | Running
---------------------+--------------------+-----------------+-------+--------

srv51 (スレーブ) でデータベースを作成しようとしましたが、srv50 ではなく、srv51 でのみ作成されました。

構成に何か問題がありますか? それは私の最初のクラスターではなく、他のクラスターではすべての書き込みがマスターに行くため、奇妙です (ただし、リスナーは実行中です)。「router_options=master」の意味がよくわからないのですが?リスナーを開始するには?トポロジの変更を検出するために、書き込みリストに 51 を保持することを好みます

=====更新=====

ログ ファイル /var/log/maxscale/maxscale1.log を見た後、モニター ユーザーが正しいパスワードを持っていないことがわかりました。

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server50, server51
user=MONITOR
passwd=MONITOR_PASS
monitor_interval=10000

ユーザーのパスワードを修正し、maxscale を再起動しました。これですべてが実行されます。

MaxScale> list listeners
Listeners.
---------------------+--------------------+-----------------+-------+--------
Service Name         | Protocol Module    | Address         | Port  | State
---------------------+--------------------+-----------------+-------+--------
Read-Only Service    | MySQLClient        | *               |  4008 | Running
Write-Only Service   | MySQLClient        | *               |  4009 | Running
MaxAdmin Service     | maxscaled          | *               |  6603 | Running
---------------------+--------------------+-----------------+-------+--------

ただし、書き込みクエリは引き続きマスターではなくスレーブで実行されます

4

2 に答える 2

0

MariaDb サポートのおかげで、次のように接続しようとしていました。

mysql -h localhost --port=4009 -u USER -p

ただし、Maxscale と Mysql は同じサーバーにインストールされています。たとえ Mysql がポート 3306 をバインドしていても、'localhost' を指定すると、接続は Maxscale ポート 4009 ではなく Mysql ポート 3306 で行われ、ポートは無視されます !!

解決策は、次のように接続することです。

mysql -h 127.0.0.1 --port=4009 -u USER -p

またはこのように:

mysql -h localhost --protocol=tcp --port=4009 -u USER -p

私は両方のソリューションを試しましたが、それらは機能します。

実行されていないリスナーに関する解決策は、質問の更新にあります。

于 2016-11-29T12:04:04.967 に答える