MySQL には読み取りと書き込みを分離するアーキテクチャが多数あります。Baidu のそれらのほとんどは、mysql_proxy を使用して実装されています。このプロキシは Lua スクリプト言語に基づいて実装されているため、インターネット上の多くのネットユーザーは、このプロキシは非効率で不安定であり、実稼働環境での使用は推奨されないと述べています。 Amoeba は Alibaba が開発したデータベースの読み書き分離プロジェクトです (読み書き分離はその小さな機能にすぎません)。Java ベースで記述されているため、実行環境に JDK をインストールする必要があります。 事前準備: 1. 2 つのデータベース、1 つのマスターと 1 つのスレーブ、マスター スレーブ同期。
すべてのサーバーのオペレーティング システムは Centos7 です。 2. amoeba が配置されているサーバーに JDK を設定してインストールします。 jdk1.8をインストールしました。 パスは次のとおりです: JAVA_HOME=/usr/local/java/jdk1.8.0_131 上記は自分でビルドして構成する必要があり、マスターとスレーブは正常に動作し、jdk 環境変数を追加します: /etc/profile; amoeba をインストールする方法は多数あります。ここでは詳細には触れません。私は amoeba-mysql-3.0.5-RC-distribution のインストール パッケージをダウンロードし、解凍して使用しました。 解凍ディレクトリ: /usr/local/amoeba/ 明らかに、 conf は設定ファイルであり、 bin は起動プログラムです。 前述のように、amoeba には読み取り/書き込み分離以外にも多くの機能がありますが、読み取り/書き込み分離機能のみを使用する場合は、conf/dbServers.xml、conf/amoeba.xml、bin/launcher の各ファイルのみを構成する必要があります。 conf/dbServers.xml : `<property name="port">3306</property> #Amoebaが接続するmysqlデータベースのポートを設定します。デフォルトは3306です。 <property name="schema">testdb</property> # デフォルトのデータベースを設定します。Amoeba に接続する場合、操作テーブルはデータベース名を明示的に指定する必要があります。つまり、dbname.tablename メソッドを使用します。操作は各バックエンド dbserver にディスパッチされるため、dbname を使用してデフォルトのデータベースを指定することはサポートされていません。 <プロパティ名="user">test1</プロパティ> #バックエンド データベース サーバーに接続するための amoeba のアカウントとパスワードを設定します。したがって、すべてのバックエンド データベースにこのユーザーを作成し、amoeba サーバーが接続できるように許可する必要があります <property name="password">111111</property> <property name="maxActive">500</property> #最大接続数、デフォルトは500 <property name="maxIdle">500</property> #アイドル接続の最大数<property name="minIdle">1</property> #最新のアイドル接続数<dbServer name="writedb" parent="abstractServer"> #バックエンドの書き込み可能なデータベースを設定します。ここでは writedb と定義します。この名前は任意に付けることができ、後で使用されます<property name="ipAddress">172.22.10.237</property> #バックエンドの書き込み可能な dbserver の IP を設定します <dbServer name="slave01" parent="abstractServer"> #バックエンドの読み取り可能なデータベースを設定します <property name="ipAddress">10.4.66.58</property> <dbServer name="myslave" virtual="true"> #仮想 dbserver を設定します。これは実際には dbserver グループに相当します。ここでは、読み取り可能なすべてのデータベース IP がグループに入れられ、グループ名は myslave になります。 <property name="loadbalance">1</property> # スケジューリング アルゴリズムを選択します。1 はレプリケーション バランス、2 は重み、3 は HA を意味します。ここでは 1 を選択します。 <property name="poolNames">slave01</property> #myslave グループメンバー` conf/amoeba.xml : <プロパティ名="ポート">8066</プロパティ> #Amoeba が listen するポートを設定します。デフォルトは 8066 です。 <プロパティ名="ipAddress">127.0.0.1</プロパティ> # リスニング インターフェイスを構成します。設定されていない場合は、デフォルトですべての IP アドレスがリッスンされます。 # クライアントが amoeba に接続するために、ここで設定したアカウントを指定します (ここでのアカウントとパスワードは、amoeba がバックエンド データベース サーバーに接続するために使用するパスワードとは関係ありません) <プロパティ名="ユーザー">ルート</プロパティ> <プロパティ名="パスワード">123456</プロパティ> <property name="defaultPool">myslave</property> # amoeba のデフォルト プールを設定します。ここでは writedb に設定します。 <property name="writePool">マスター</property> #これら 2 つのオプションはデフォルトで登録解除されており、コメントを解除する必要があります。これらは、以前に定義した 2 つの読み取り/書き込みプールを指定するために使用されます <property name="readPool">slave01</property> bin/ランチャー: # スクリプトを起動し、jdk 環境変数を設定する必要があります。 # コメントの後に次の行を追加します。 JAVA_HOME=/usr/local/java/jdk1.8.0_131 launcher は起動スクリプトです。JAVA_HOME が設定されていない場合、/etc/profile で環境変数を設定しても、次のエラーが発生する可能性があります: jdk 環境変数が設定されていません。 設定ファイルもあります: jvm.properties #メモリ使用量プロファイル# -Xssパラメータには最小値の要件があり、JVMを起動するには228より大きくなければなりません。 #改訂: JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m" 経験豊富なオペレーターは、JDK に関連するものはすべて基本的にメモリ チューニングに関連していることを知っており、Amoeba も例外ではありません。 これで開始できます: 起動後、マシンの 8066 ポートが表示されます。 このとき、ローカル IP のポート 8066 と、設定ファイルに設定されたアカウントとパスワードを使用してデータベースに接続するだけで済みます。書き込まれたデータはマスターに送信され、読み取られたデータはスレーブから読み取られます。 テスト: マスター データベースを閉じても、引き続き読み取ることができます。表示するには、select コマンドを実行します。 または スレーブ データベースを閉じても、書き込みは可能です。update コマンドと inster コマンドを実行します。 以下もご興味があるかもしれません:
|
<<: Alibaba Cloud Ubuntu 16.04でpptpdサービスを構築する方法
>>: JavaScript 関数をよりエレガントにする方法
最近、ウェブサイトを設計するときにこの問題に遭遇しています。メンバーセンターを設計し、コンテンツを ...
目次Docker-Maven-プラグインMavenプラグインの自動デプロイメント手順1. ホストマシ...
Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...
1. SQLExceptionの概要JDBC を使用してデータ ソース (この記事のデータ ソースは...
背景MySQL のデッドロックについて言えば、私は以前 MySQL のロックに関する基本的な紹介記事...
序文Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソ...
目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...
目次序文型推論真理値の絞り込み平等の縮小演算子の絞り込みインスタンスの絞り込み狭まりの本質ユニオン型...
質問会社がサーバーを移行した後、デフォルトで作成された docker0 ブリッジが会社の外部ネットワ...
目次解決: 1. 無視する2. 交換する3. 重複キーの更新についてデータを挿入するときに、重複した...
1. 新サイトホームページのリンクレイアウト1. リンク配置の位置:リンク配置の位置によって、リンク...
目次1. テレポートの使用2. モーダルダイアログコンポーネントを完成させる3. コンポーネントのレ...
以下のように表示されます。リモート サーバーのファイルをローカルにコピーします。 scp -r -P...
目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...
外部一時テーブルCREATE TEMPORARY TABLE によって作成された一時テーブルは、外部...