mysql配置主從複製,讀寫分離(附amoeba源碼包)

來源:互聯網
上載者:User

標籤:restart   mysq   去掉   virt   兩台   圖片   虛擬   log-bin   cto   

mysql5.5基於表鎖定 讀取和寫入互阻塞,為瞭解決這個問題便有了主從複製,讀寫分離的群集設定。

三次認證
1、主從同步認證
2、amoeba訪問資料庫認證
3、用戶端訪問amoeba認證

寫入和讀取:
用戶端寫入資料寫入到的是mysql主伺服器中
從伺服器同步主伺服器
讀取是讀取從伺服器上的內容
從而實現讀寫分離

本實驗使用mysql5.5
附mysql5.5源碼包以及安裝指令碼
連結:https://pan.baidu.com/s/1kA80VX67fXOBVChUt72__g 密碼:e42o

jdk檔案使用的是1.6
連結:https://pan.baidu.com/s/1E80A82_1YTxG2BU5745o0w 密碼:xe6g
amoeba
連結:https://pan.baidu.com/s/1S8OaSgYjj0aXcK5n5uoo3g 密碼:16gh

本實驗使用5台centos7
使用redhat6操作也相同
主伺服器地址:192.168.60.128
從伺服器1地址:192.168.60.136
從伺服器2地址:192.168.60.143
amoebaProxy 位址:192.168.60.144
用戶端地址:192.168.60.129

實驗需要我們每台虛擬機器都關掉防火牆,加強性組件
systemctl stop firewalld.service
setenforce 0

一、使用ntp協議,時間同步

1、主伺服器
rpm -q ntp //預設是安裝了
vim /etc/ntp.conf //修改ntp設定檔
在末行插入以下兩條語句
server 127.127.60.0 //自身60網段
fudge 127.127.60.0 stratum 8 //時間層級
systemctl start ntpd //啟動ntp服務

2、從伺服器(兩台配置相同)
rpm -q ntpdate //預設也是安裝了
systemctl start ntpd //啟動服務
/usr/sbin/ntpdate 192.168.60.128 //同步主伺服器,顯示以下則同步成功

二、配置mysql安裝mysql5.5(開頭有安裝包和指令碼,不在贅述)

1、主伺服器主設定檔
vim /etc/my.cnf
server-id = 11 //服務唯一標識
log-bin=master-bin //去掉注釋,開啟二進位日誌
log-slave-updates=true //允許從伺服器同步同步主伺服器
service mysql restart //重啟服務

2、主伺服器進mysql給從伺服器建立使用者授權
grant replication slave on . to ‘myslave‘@‘192.168.60.%‘ identified by ‘123123‘;
flush privileges 重新整理即時生效
show master status 查看主伺服器狀態

3、從伺服器設定檔設定(除server-id外,兩台從伺服器設定一樣)
vim /etc/my.cnf
server-id 22 //修改server-id
在server-id下添加如下兩行
relay-log=realy-log-bin
relay-log-index=slave-relay-bin.index
service mysqld restart

4、從伺服器進mysql進行操作(兩台從伺服器操作相同)
change master to master_host=‘192.168.60.128‘,master_user=‘myslave‘,master_password=‘123123‘,master_log_file=‘master-bin.000001‘,master_log_pos=338;
start slave; //開啟從複製
show slave status\G //查看slave狀態


5、主從複製測試



    三、amoebaProxy 伺服器

systemctl stop firewalld.service //關閉防火牆及加強性組件
setenforce 0

1、掛載宿主機,複製JDK檔案

2、./jdk-6u14-linux-x64.bin
一直斷行符號就行了,有提示會告訴你填yes/no,填yes,開始安裝


3、添加環境變數
先將jdk的檔案改名,方便後面填寫環境變數
mv jdk1.6.0_14/ /usr/local/jdk1.6 //改名
vim /etc/profile //末行添加JDK環境變數,如下

export JAVA_HOME=/usr/local/jdk1.6export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/binexport AMOEBA_HOME=/usr/local/amoebaexport PATH=$PATH:$AMOEBA_HOME/bin

scource /etc/profile //重新整理環境變數

4、安裝amoeba
mkdir /usr/local/amoeba //建立amoeba解壓目錄
chmod 755 /usr.local/amoeba 必須要755許可權
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ //解壓
/usr/local/amoeba/bin/amoeba //查看amoeba是否安裝成功

5、每台mysql伺服器都給amoeba建立許可權
grant all on . to ‘amoeba‘@‘192.168.60.%‘ identified by ‘123456‘;
建立了一個使用者給amoeba並且賦予許可權,amoeba將以這個身份登入mysql

6、修改amoeba.xml設定檔
vim /amoeba/conf/amoeba.xml

    <property name="user">amoeba</property>      30行修改使用者為amoeba <property name="password">456789</property>   32行認證amoeba密碼為456789117行<property name="defaultPool">master</property>     改成master<!--刪掉            <property name="writePool">master</property>   改成master            <property name="readPool">slaves</property>    改成slaves       刪掉   -->

7、修改dbServers.xml設定檔

26行<property name="user">test</property>  改成test
29行<property name="password">123456</property>  去掉注釋 改成認證mysql的密碼
42行<dbServer name="master"  parent="abstractServer">    改成master             <factoryConfig>                    <!-- mysql ip -->                    <property name="ipAddress">192.168.60.128</property>   ip改成master的ip<dbServer name="slave2"  parent="abstractServer">   第二台slave2            <factoryConfig>                    <!-- mysql ip -->                    <property name="ipAddress">192.168.60.143</property>            </factoryConfig>    </dbServer>末尾<dbServer name="slaves" virtual="true">   池子名改為slaves<property name="poolNames">slave1,slave2</property>  池子中添加slave1,savel2

8、開啟amoeba服務
/usr/local/amoeba/bin/amoeba start& 開啟服務
netstat -anpt | grep java


四、用戶端驗證讀寫分離

1、關閉防火牆,安裝mysql並登陸
systemctl stop firewall
setenforce 0
yum install mysql -y
mysql -u amoeba -p456789-h 192.168.60.144 -P8066 遠程通過amoeba的ip登陸

2、主伺服器建立一張list表,從伺服器停止slave
建立的list表會被從伺服器同步,首先我們利用用戶端先寫入一些資訊到這張表中,到主伺服器中查看,如果內容在主伺服器顯示,說明寫入是針對主伺服器。
然後我們分別在從伺服器list表中寫入一些資訊,在用戶端查看,如果內容顯示的是從1,從2,伺服器的內容,說明讀功能針對從伺服器。
滿足以上兩條則實現讀寫分離。

3、用戶端list表插入資訊,主伺服器查看,證明寫入是寫在主伺服器上


4、從伺服器分別寫入資料,用戶端查看,顯示資料為從伺服器資料,則證明讀是讀從伺服器資料



主從同步,讀寫分離成功!

mysql配置主從複製,讀寫分離(附amoeba源碼包)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.