コンテンツのハイライト:
A、別々の読み取りと書き込みのMySQLの原則
アメーバの第二に、
第三に、設定例
ステップ1:サーバーの構成アメーバ
ステップ2:3台のMySQLサーバー上の追加権限、アメーバへのオープンアクセス(すなわちアメーバ3つのmysqlはそれらのアクセスを許可)
ステップ3:サーバーアメーバに設定し、別の読み取りおよび書き込み機能
ステップ4:クライアントのテスト
IVの概要
A、別々の読み取りと書き込みのMySQLの原則
プライマリサーバが書かれているだけに別々の読み取りと書き込み、唯一のサービスから読み取ります。
データベース処理の選択クエリからの主なトランザクションデータベースのクエリ処理。
データベースのレプリケーションは、データベースからクラスタに伴う変更の同期にトランザクションを照会するために使用されます
アメーバの第二に、
(1)アメーバは、基礎となるデータ・ストアとしてのMySQLの、およびMySQLアプリケーションプロキシプロトコルインタフェースです。これは、アプリケーション要求、予め設定されたルールに従ってユーザ、特定のデータベースへのSQL実行要求に応答して濃縮しました。この負荷分散に基づいては、個別の読み取りと書き込み、および高可用性要件を達成することができます。
(2)アメーバSQL要求は、ロードバランシングの目的、別個読み出しおよび書き込みのために、ルータ高可用性のための機構を提供し、それらは完全には実現されません。これは、レプリカの同期を達成するためにMySQLのレプリケーションや他のメカニズムの組み合わせを必要とします。
第三に、設定例
環境説明:
3台のMySQLサーバ(サーバベース、他の2つは、サーバからのものである)を調製します。
Aアメーバ、別々の読み取りと書き込み、ホストサーバへの書き込み動作、両方のサーバーから発行された読み取り操作のために、
実験:クライアントの書き込み操作で、メインでは、サーバから検証します。
説明:レプリケーションからと読み書き機能が密接にメインのMySQLに関連する、データの同期は、別個の読み出しと書き込みによって負荷能力データベース並行性を向上させるために一次からコピーすることによって達成され、以下同様です。
アプリケーションクライアント | 192.168.220.131 |
アメーバ | 192.168.220.129 |
プライマリサーバー | 192.168.220.141 |
サーバ1から | 192.168.220.140 |
サーバーから2 | 192.168.220.136 |
ステップ1:サーバーの構成アメーバ
(1)は、ファイアウォールをオフにします。
systemctl停止firewalld.serviceの setenforce 0
(2)インストール管理JDK:
1、インストールJDK
cp jdk-6u14-linux-x64.bin /usr/local/ //复制 ./jdk-6u14-linux-x64.bin //安装jdk ,注意这一步,一路按回车到最后,提示输入yes,等待安装
2、方便管理,将jdk包重新命名:
mv jdk1.6.0_14/ /usr/local/jdk1.6
3、修改 profile 文件
export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin
使环境变量生效:
source /etc/profile
(3)解压 amoeba包:
1、先创建一个文件
mkdir /usr/local/amoeba
2、解压
tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
3、赋权,并验证是否安装成功
chmod -R 755 /usr/local/amoeba/
输入:/usr/local/amoeba/bin/amoeba ,按回车检查是否成功
第二步:在三台 mysql 服务器上添加权限,开放给 amoeba 访问(即三台mysql允许amoeba对它们进行访问)
进入数据库,输入以下命令:
grant all on *.* to test@'192.168.220.%' identified by '123.com'; //允许ip为192.168.220网段从任意终端通过123.com的密码进行访问
第三步:在 amoeba 服务器上配置读写分离功能
1、cd /usr/local/amoeba vim conf/amoeba.xml 第30行:<property name="user">amoeba</property> 第32行:<property name="password">123456</property> 117行去掉注释: <property name="writePool">master</property> <property name="readPool">slaves</property>
2、vim conf/dbServers.xml
26-29行:去掉注释,设置登录用户名和密码 <property name="user">test</property> <property name="password">123.com</property> 找到主服务器和从服务器模块,修改好名称和对应IP地址: 主服务器: <dbServer name="master" parent="abstractServer"> <property name="ipAddress">192.168.220.141</property> 第一台从服务器: <dbServer name="slave1" parent="abstractServer"> <property name="ipAddress">192.168.220.140</property> 第二台从服务器: <dbServer name="slave2" parent="abstractServer"> <property name="ipAddress">192.168.220.136</property> 指定从服务器池: <dbServer name="slaves" virtual="true"> <property name="poolNames">slave1,slave2</property>
3、启动 amoeba
/usr/local/amoeba/bin/amoeba start& //&表示将进程放到后台,时间较长,稍等待
第四步:客户端测试
1、客户端虚拟机,可以直接用yum安装一个mysql服务
yum install -y mysql
2、连接 amoeba 服务器
(1)指定密码和端口连接 amoeba
mysql -u amoeba -p 123456 -h 192.168.220.129 -P8066
(2)创建一个 名为 school 的库,再创建一个叫 info 的表
MySQL [school]> create table info ( -> id int(4) not null primary key, //指定id号,为primary key,不为空 -> name varchar(10) not null, //名字 -> score decimal(4,1) not null); //成绩 Query OK, 0 rows affected (0.03 sec)
3、三台mysql服务器验证实验结果
首先验证写的操作是否分离:
(1)此时,我们在主服务器上,直接进入数据库,就会发现也多了一个名为 info的表
(2)但是,两台从服务器上并没有:
所以,我们在客户端写入的语句,在主服务器上会查询到,但是两台从服务器上并没有,此时写的操作就直接交给了主服务器。
接下来是验证读的操作:
(1)在两台从服务器上的各自也创建一个 info 表,也都各自写入两条信息。
(2)客户端查询 info 表的内容,因为做了读写分离操作,所以查询的内容应该是 两台从服务器上 info表的内容。
因此,用户读取数据,同时通过从服务器,这样就减轻了主服务器的并发量。
四、总结
このブログは、読み書き分離実験の効果を示すために、と密接にリンクされている企業ネットワーク、マスター・スレーブ同期と読み書きの分離では、同期中からのショットを呼び出していませんでした。このように、データベース操作に顧客への書き込みは、マスタサーバが想定され、読まれたとき、クエリおよびその他の操作、などのマスタ - スレーブ同期を行う(サーバによって負担されるサーバとメインサーバからのデータの各同じ)
高並行要求では、データセキュリティ、サーバーの効率的な運用を確保するために、負荷分散を実現します。