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
---------------------+--------------------+-----------------+-------+--------
ただし、書き込みクエリは引き続きマスターではなくスレーブで実行されます