導入 パート1: 冒頭に書いた OneProxy は、民間ソフトウェアによって完全に独立して開発された分散データ アクセス レイヤーです。MySQL/PostgreSQL クラスターでのシャーディングをサポートする分散データベース ミドルウェアをユーザーが迅速に構築するのに役立ちます。また、SQL ホワイトリスト (アンチ SQL インジェクション) と IP ホワイトリスト機能を備えた SQL ファイアウォール ソフトウェアでもあります。これは、MySQL Proxy と一致するリバース プロトコル出力モードを使用します。これは非常にシンプルで透過的であり、アプリケーションにとって使いやすく、ユーザーが恐れるデータベース フェイルオーバー、読み取り/書き込み分割、水平パーティショニングなどの複雑なソリューションを非常にシンプルで制御可能なものにします。 Libevent メカニズムに基づき、単一インスタンスで 250,000 の SQL 転送機能を実現できます。1 つの OneProxy ノードで MySQL クラスター全体を駆動し、ビジネス開発に貢献できます。 パート2: 環境の紹介 HE1:192.168.1.248 スレーブ1 HE2:192.168.1.249 スレーブ2 HE3:192.168.1.250 マスター HE4:192.168.1.251 ワンプロキシ 環境構築 パート1: Oneproxyをインストールする [root@HE4 ~]# tar xvf oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz [root@HE4 oneproxy]# ls bin conf demo.sh log oneproxy.service README testadmin.sql testautocommit.sql testproxy.sql trantest.sql パート2: マスタースレーブ環境の構築 この記事のアーキテクチャは、マスター 1 つとスレーブ 2 つで構成され、HE3 がマスターで、HE1 と HE2 がスレーブです。マスタースレーブの構築はこの記事の焦点ではないので、必要に応じて移動できます。 mysqlreplicate を使って MySQL マスタースレーブを素早く構築する方法 パート3: Oneproxyを構成する ディレクトリ内のデモは初期起動スクリプト、oneproxy.serviceは起動および停止スクリプト、新しいバージョンのoneproxyではconfフォルダ内のproxy.cnfは設定ファイルです。 [root@HE4 oneproxy]# cat demo.sh #/bin/bash # ONEPROXY_HOME=/root/oneproxy をエクスポートします。 # valgrind --leak-check=full \ ${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf demo.shのONEPROXY_HOMEをoneproxyが解凍されたディレクトリに変更します。 [root@HE4 oneproxy]# cat oneproxy.service #!/bin/bash # chkconfig: -30 21 # 説明: OneProxy サービス。 # ソース関数ライブラリ . /etc/init.d/functions # OneProxy 設定 ONEPROXY_HOME=/root/oneproxy ONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy" ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf" ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid" 戻り値=0 prog="OneProxy" 始める() { echo -n $"$prog を開始しています..." デーモン $ONEPROXY_SBIN --defaults-file=$ONEPROXY_CONF RETVAL=$? エコー } 停止() { echo -n $"$prog を停止しています..." [ -e ${ONEPROXY_PID} ]の場合; デーモンをkill -INT $(cat ${ONEPROXY_PID}) RETVAL=$? フィ エコー } 再起動(){ 停止 睡眠1 始める } ケース「$1」 始める) 始める ;; 停止) 停止 ;; 再起動) 再起動 ;; *) echo $"使用法: $0 {start|stop|restart}" 戻り値=1 エサック $RETVALを終了 同時に、oneproxy.service 内の ONEPROXY_HOME を解凍時のディレクトリに変更します。 oneproxyのbinディレクトリに入り、mysqlpwdを使用してパスワードを暗号化します [root@HE4 oneproxy]# cd bin/ [root@HE4 bin]# ls mysqlpwd ワンプロキシ [root@HE4 bin]# ./mysqlpwd マネージャー 1C6D087BA5D2607A27DECB2F2AFE247E911E877A proxy.cnfの内容を編集する [root@HE4 conf]# cat proxy.conf [ワンプロキシ] キープアライブ = 1 イベントスレッド = 4 プロキシグループポリシー.2 = テスト:読み取りスレーブ ログファイル = log/oneproxy.log pid ファイル = log/oneproxy.pid lck ファイル = log/oneproxy.lck プロキシ自動読み取り専用 = 1 プロキシ転送クライアントIP = 1 プロキシトランスデバッグ = 1 プロキシアドレス = :3307 mysql バージョン = 5.7.16 プロキシマスターアドレス.1 = 192.168.1.250:3306@test プロキシスレーブアドレス.2 = 192.168.1.248:3306@test プロキシスレーブアドレス.3 = 192.168.1.249:3306@test プロキシユーザーリスト = sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test プロキシユーザーグループ = test:sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test プロキシ部分テンプレート = conf/template.txt プロキシパートテーブル.1 = conf/part.txt プロキシパートテーブル.2 = conf/part2.txt プロキシパーツテーブル.3 = conf/cust1.txt プロキシ文字セット = utf8_bin プロキシセキュアクライアント = 127.0.0.1 # プロキシライセンス = 32C54560E06EFF3E プロキシhttpサーバー = :8080 proxy-httptitle = OneProxy モニター パート4: Oneproxyを起動する [root@HE4 oneproxy]# ./demo.sh [root@HE4 oneproxy]# ./oneproxy.service を再起動します OneProxy を停止しています...[OK] OneProxy を起動しています... [ OK ] テスト パート 1: Oneproxy ステータスの検証 ブラウザを開いてポート192.168.1.251:8080を開き、oneproxy管理ページを表示します。 ここでは、マスターとスレーブのさまざまなステータス情報を確認できます。 パート2: 負荷分散と読み取り/書き込み分離の検証 [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"@@hostnameを選択します;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"@@hostnameを選択します;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE2 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"@@hostnameを選択します;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"@@hostnameを選択します;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE2 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"@@hostnameを選択します;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"begin;select @@hostname;commit;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE3 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e"begin;select @@hostname;commit;" mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。 +------------+ | @@ホスト名 | +------------+ | HE3 | +------------+ HE1とHE2をロードバランサーとして使用しても問題はなく、HE3を書き込みサーバーとして使用しても問題はないことがわかります。 --要約-- OneProxy は MySQL と連携して、読み取りと書き込みの分離と負荷分散の実験を実現し、成功裏に構築されました。Oneproxy にはデータベースとテーブルのシャーディング機能もあり、今後さらに研究される予定です。著者の能力の限界と記事執筆の急ぎにより、記事には必然的に誤りや不正確な点があります。不適切な点がありましたら、読者の皆様のご批判と訂正を心からお願い申し上げます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: 2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順
最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...
目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...
プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...
目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...
Zabbix サーバー環境プラットフォームZABBIX バージョン 4.4セントOS8 MySQL ...
本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...
reduceメソッドは配列の反復メソッドです。 mapやfilterとは異なり、 reduceメソッ...
目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...
問題を見つける上位の SQL ステートメントを取得すると、DB が大量のselect @@sessi...
目次序文1. JDBCタイムアウト設定2. 接続プールのタイムアウト設定3. MyBatisクエリの...
以前、あるプロジェクトでMysql FIND_IN_SET関数を使用したことがありますが、非常に便利...
目次方法1: 関数を直接呼び出す方法2: provide / inject (静的更新) を使用する...
1. デザインの方向性を明確にする<br />まず、どのユーザーを対象にデザインするのか...
目次いつ使うか構造的ブランチコードいつ使うか選択動作を完了するには、2 つの列間で要素を直感的に移動...
目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...