だからあなたのMySQLトラフィックをルーティングする場合、いくつかのオプションが存在します。
- HAproxy
- MariaDB MaxScale
- NGINX
- MySQLルーター
- ProxySQL
- 必要に応じてMySQL Proxyを入手することもできますが、それはEOFです。
今私はHAproxyがクライアントとより頻繁に使用されるのを見てきましたが、設定するのはかなり簡単です。 Perconaには興味のある人の例があります:
個人的に私はProxySQLが好きです。 Perconaにもこれに関するブログはほとんどありません
- https://github.com/sysown/proxysql/wiki/ProxySQL-Configuration
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- https://www.percona.com/blog/2017/01/25/proxysql-admin-configuration/
- https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera-integration/
PerconaにもProxySQLバージョンがあります
私はいくつかの例を書いてみることを考えていましたが、ペルコナ全体がそれをとてもうまく説明しました。 私はそれらの投稿から何かを取り除きたくない、代わりにそれらのURLを介して多くの良い情報が利用可能であることを指摘する。 だからすでに書かれたものを書き換えるのではなく、私は興味のある人のための情報のコレクションを作成します。
最初に自分が必要と望むものを比較して決定します。 以下のリンクはもちろん、ProxySQLに偏っていますが、全体的な検討範囲が与えられます。
クラスタやマスターをマスタリングしていて、どのサーバーに接続していても、書き込みと読み取りがどちらになるかは気にしません。 HAproxyはシンプルな設定が可能です。
ProxySQLの特典は、トラフィックを簡単に重み付けして並べ替えることができます。 したがって、書き込みをノード1に行って、ノード2とノード3からプルを選択することができます。これに関するドキュメントは、次の場所にあります。
はい、HAproxyで実行できますが、それに応じてアプリケーションに指示する必要があります。
これは、クエリルールに基づいてProxySQLで処理されます。
今ここで明らかな質問:はい、どのようにProxySQLを単一障害点にしないようにしますか?
あなたは堅牢なロードバランサやetcなどを投資することができます。ハードウェアを投げてください....または自分で簡単にしてオープンソースをサポートし、 KeepAliveを使用してください。 これは設定が非常に簡単で、そのすべてがここでもうまく文書化されています:
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- http://www.keepalived.org/doc/
- ここで公正であることはキープアライブとHAproxyの例です
- https://andyleonard.com/2011/02/01/haproxy-and-keepalived-example-configuration/
あなたがluaとmysql-proxyを扱ったことがあるならば、ProxySQLとKeepalivedは非常に簡単です。 それでも何らかの理由でそれが必要な場合: https : //launchpad.net/mysql-proxy
HAproxy、ProxySQL、または別のソリューションを選択した場合でも、単一障害点を別の障害点に置き換えないようにする必要があります。 あなたがプロキシを使用している場合、これをしない理由はほとんどありません。
ProxySQLについてもう少し詳しく説明します。
- レポートまたは監視を介してデータベースに接続するホストを追跡する場合、それらのIPSまたはホスト名がプロキシサーバーになることに気付きます。
- あなたは既にMySQLに入っているすべてのユーザーはどうですか? それらをproxysqlに移行できますか? はい、できます。 それはいくつかのステップが必要ですが、それは可能です。 これはその例です:
- マルチレイヤ設定システムについて理解していることを確認してください。 情報をディスクに保存してください!
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#runtime-tables
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#disk-database
- ProxySQLをMySQLデフォルトポート3306で実行できるか
- はいmysql-interfacesを編集する
- 今あなたのmax_connectionsを覚えておいてください。 mysqlのMax_connectionsが500に設定されている場合、それは標準ユーザーのためのあなたの制限です。 ProxySQLを使用すると、システム全体にユーザーを広め、ノードごとに最大値を設定できます。 したがって、500の接続にヒットしないようにするには、 mysql-max_connectionsを MySQLの値より少し低く設定します。
- 監視モジュールとSTATSを活用してください。あなたのプロキシとトラフィックで何が起こっているかを把握してください。
- アプリケーションに該当する場合は、 クエリキャッシングを活用してください。
http://anothermysqldba.blogspot.com/2018/05/proxy-mysql-haproxy-proxysql-keepalived.html