2017-02-13 20 views
1

私が理解したようMySQLクラスタ+ PHP

select version(); -- 5.6.28-ndb-7.4.9-cluster-gpl 

は、私がmysqlnd_msプラグインをインストールする必要があり、それは接続を解決するためにmysqli拡張モジュールをラップします。私はこれを行うにしてみてください。

sudo pecl install mysqlnd_ms 

しかし、このコマンドは

/tmp/pear/temp/mysqlnd_ms/php_mysqlnd_ms.c:28:33: fatal error: 
ext/mysqlnd/mysqlnd.h: No such file or directory 

に失敗し、実際に私は今何をすべきか見当がつかない。私は既に各クラスタノードにApacheを使ってサーバーから接続を確立していますが、完全に動作します。このプラグインをインストールする必要がありますか?そうでない場合は、代わりに何をすべきですか?どんな提案も感謝します。

+0

MySQLndがインストールされていますか?これはMySQLiまたはPDO_MySQLとは異なります – apokryfos

+0

mysqlnd_msも必要ですか?私はこれがロードバランシングとレプリケーションを自分で管理する必要がある場合にのみ必要であると思います。 MySQLクラスタがそれを実行しているはずです。 – apokryfos

+0

はい、MySQLndがインストールされています。しかし、私が理解しているように、mysqlndはphp-mysql通信のためのクライアントであり、ボールロードとクラスタではありません。私は接続ホストを定義しなければならないので、MySQLクラスタが私の代わりにバランスの読み込みを行うかどうかはわかりません。私はこのトリック 'if(rand(0、1)== 1){connectToHostOne()} else {connectToHostTwo()}'を実行することができます。 – degr

答えて

0

私は、マスター - マスタークラスタの実装のための単一のエンドポイントと、何らかの種類のプロキシ技術を検索すると思います。

mysql-routerの実装(https://dev.mysql.com/downloads/router/)が見つかりました。私の意見では、このアプリケーションを "php"アプリケーションと同じサーバーにインストールし、phpからこのアプリケーションへの接続を行う必要があります。

[routing:example_strategy] 
bind_port = 7001 
destinations = master1.example.com,master2.example.com,master3.example.com 
mode = read-write 

この構成では、ルータ内部のロードバランシングを行う必要があります。

関連する問題