溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Centos7 MYSQL 讀寫(xiě)分離實(shí)驗(yàn)流程分享

發(fā)布時(shí)間:2020-04-24 16:16:32 來(lái)源:億速云 閱讀:289 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

本文主要給大家介紹Centos7 MYSQL 讀寫(xiě)分離實(shí)驗(yàn)流程分享,其所涉及的東西,從理論知識(shí)來(lái)獲悉,有很多書(shū)籍、文獻(xiàn)可供大家參考,從現(xiàn)實(shí)意義角度出發(fā),億速云累計(jì)多年的實(shí)踐經(jīng)驗(yàn)可分享給大家。

mysql介紹

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。

Centos7 MYSQL 讀寫(xiě)分離實(shí)驗(yàn)流程分享

安裝前準(zhǔn)備

3臺(tái)mysql云服務(wù)器  (本次使用的是3臺(tái)5.7版本的mysql)

一臺(tái) centos 服務(wù)器 (用作安裝 amoeba)

amoeba安裝包    java環(huán)境包

實(shí)驗(yàn)步驟

關(guān)閉防火墻自啟動(dòng),以及相關(guān)功能和增強(qiáng)性安全功能

 systemctl stop firewalld.service 
 setenforce 0

時(shí)間同步

yum install ntp -y

vim /etc/ntp.conf
在配置文件中添加   
server 127.127.100.0    ##本地是時(shí)鐘源
fudge 127.127.100.0 stratum 8    ##設(shè)置時(shí)間層級(jí)為8

service ntpd start    ##開(kāi)啟服務(wù)

/usr/sbin/ntpdate 192.168.100.100   ##進(jìn)行時(shí)間同步

mysql主服務(wù)器上配置

vim /etc/my.cnf
在[mysqld] 下添加
server-id=1
log-bin=master-bin      ##主服務(wù)器日志文件
log-slave-updates=true      ##從服務(wù)器更新二進(jìn)制日志

service mysqld restart
mysql -u root -p     ##進(jìn)入mysql數(shù)據(jù)庫(kù)
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.100.%' IDENTIFIED BY '123456';             ##  給予回應(yīng)從服務(wù)器的權(quán)限

FLUSH PRIVILEGES;    ##刷新數(shù)據(jù)

show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000002 |      339 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql從服務(wù)器配置

vim /etc/my.cnf
在 [mysqld]下添加
server-id=11
relay-log=relay-log-bin      ##從主服務(wù)器上同步日志文件記錄到本地
relay-log-index=slave-relay-bin.index     ##定義relay-log的位置和名稱(chēng)

##   第二臺(tái)從服務(wù)器的 serverid不能相同

service mysqld restart   ##重啟服務(wù)
mysql -u root -p    ##進(jìn)入mysql數(shù)據(jù)庫(kù)

change master to master_host='192.168.100.100',master_user='myslave',master_password='123456',master_log_file='master-bin.000002',master_log_pos=339;     ##配置主服務(wù)器

start slave;   ##開(kāi)啟同步

show slave status \G;     ##查看同步狀態(tài)

驗(yàn)證主從服務(wù)器是否開(kāi)啟成功

在主服務(wù)器上
create database test;
在從服務(wù)器上
show databases;
能看到test 則說(shuō)明成功

安裝amoeba服務(wù) 并進(jìn)行配置

推薦使用java 1.6的環(huán)境包
cp jdk-6u14-linux-x64.bin /usr/local/
/usr/local/jdk-6u14-linux-x64.bin
一直往下  接著輸入 yes , 再按 enter
稍等一會(huì) 配置完成java環(huán)境

mv jdk1.6.0_14/ /usr/local/jdk1.6

vim /etc/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   ##使配置生效

mkdir /usr/local/amoeba   ##創(chuàng)建amoeba服務(wù)器位置

tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/     ##解壓amoeba

chmod -R 755 /usr/local/amoeba    ##給予amoeba權(quán)限

/usr/local/amoeba/bin/amoeba
##顯示amoeba start|stop說(shuō)明安裝成功

在三臺(tái)mysql上添加權(quán)限開(kāi)放給amoeba訪問(wèn)
grant all on *.* to test@'192.168.100.%' identified by '123.com';

回到amoeba服務(wù)器
cd /usr/local/amoeba
vim conf/amoeba.xml

---30行--
##用戶(hù)名
 <property name="user">amoeba</property>
----32行---------
##密碼
 <property name="password">123456</property>

---117-去掉注釋-
 <property name="defaultPool">master</property>        ##默認(rèn)池
 <property name="writePool">master</property>       ##寫(xiě)入池
 <property name="readPool">slaves</property>       ##讀取池

vi conf/dbServers.xml

--23-- mysql服務(wù)器的通用數(shù)據(jù)庫(kù)名稱(chēng)--
<property name="schema">mysql</property>
--26-29--去掉注釋--
 <property name="user">test</property>

 <property name="password">123.com</property>

-----42-主服務(wù)器地址---
<dbServer name="master"  parent="abstractServer">
 <property name="ipAddress">192.168.100.100</property>
--52-從服務(wù)器主機(jī)名-
<dbServer name="slave1"  parent="abstractServer">
--55-從服務(wù)器地址-
 <property name="ipAddress">192.168.100.101</property>

將從服務(wù)器的6行復(fù)制 并配置 slave2 和其ip地址

-----63-從服務(wù)器地址池---
 <dbServer name="slaves" virtual="true">
 <poolConfig 
--末尾--
<property name="poolNames">slave1,slave2</property>
 </poolConfig>

/usr/local/amoeba/bin/amoeba start&    ##開(kāi)啟服務(wù)
 netstat -anpt | grep java
 看到8066 表示服務(wù)開(kāi)啟成功
 看到主從服務(wù)器的地址 表示連接數(shù)據(jù)庫(kù)成功

測(cè)試

在一臺(tái)已經(jīng)安裝mysql服務(wù)器的電腦上

mysql -u amoeba -p123456 -h 192.168.100.100 -P8066
## 通過(guò)amoeba 登錄

--在主服務(wù)器上--
create database zzz;
create table test (id int(10),name varchar(10),address varchar(20));

--在兩臺(tái)從服務(wù)器上--
stop slave;     ##關(guān)閉同步

--在主服務(wù)器上--
use zzz;

insert into test values('1','abc','this_is_master');

--在從服務(wù)器1上--
use zzz;

insert into test values('2','abc','this_is_slave1');

--在從服務(wù)器2上--
use zzz;

insert into test values('3','abc','this_is_slave2');

------在客戶(hù)端上測(cè)試----第一次會(huì)向從服務(wù)器1讀數(shù)據(jù)-第二次會(huì)各從2讀取
select * from test;

一次顯示id為2的數(shù)據(jù)  一次顯示id為3的數(shù)據(jù)

-------------在通過(guò)客戶(hù)端連接數(shù)據(jù)庫(kù)后寫(xiě)入的數(shù)據(jù)只有主會(huì)記錄,然后同步給從-從服務(wù)器不會(huì)記錄,從而實(shí)現(xiàn)了讀寫(xiě)分離。----
insert into test values('5','abc','this_is_client');

--在主服務(wù)器上可以看到寫(xiě)入的數(shù)據(jù)--
select * from test;
可以看到id 為 1 和 5的數(shù)據(jù)

--在從服務(wù)器上--
start slave; 開(kāi)啟同步

--在客戶(hù)端--
select * from test;
一次會(huì)顯示 id為 1 2 5 的數(shù)據(jù)
一次會(huì)顯示 id 為 1 3 5 的數(shù)據(jù)

至此  mysql的讀寫(xiě)分離安裝完成

看了以上Centos7 MYSQL 讀寫(xiě)分離實(shí)驗(yàn)流程分享介紹,希望能給大家在實(shí)際運(yùn)用中帶來(lái)一定的幫助。本文由于篇幅有限,難免會(huì)有不足和需要補(bǔ)充的地方,大家可以繼續(xù)關(guān)注億速云行業(yè)資訊板塊,會(huì)定期給大家更新行業(yè)新聞和知識(shí),如有需要更加專(zhuān)業(yè)的解答,可在官網(wǎng)聯(lián)系我們的24小時(shí)售前售后,隨時(shí)幫您解答問(wèn)題的。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI