Amoeba CentOS7 | 192.168.71.10 | jdk-6u14-linux-x64.bin、amoeba-mysql-binary-2.2.0.tar.gz |
Master CentOS7 | 192.168.71.12 | ntp 、 mysql-boost-5.7.20.tar.gz |
Slave1 CentOS7 | 192.168.71.13 | ntp 、ntpdate 、 mysql-boost-5.7.20.tar.gz |
Slave2 CentOS7 | 192.168.71.14 | ntp 、ntpdate 、mysql-boost-5.7.20.tar.gz |
客戶端 CentOS7 | 192.168.71.15 |
1.關(guān)閉防火墻及安全機(jī)制
四臺(tái)服務(wù)器都要關(guān)閉
systemctl stop firewalld systemctl disable firewalld setenforce 0
2.安裝時(shí)間同步服務(wù)ntp
(1)主服務(wù)器
yum -y install ntp vim /etc/ntp.conf ##---------末尾添加--------- server 127.127.71.0 #設(shè)置本地是時(shí)鐘源,注意修改網(wǎng)段 fudge 127.127.71.0 stratum 8 #設(shè)置時(shí)間層級(jí)為8(限制在15內(nèi)) service ntpd start
(2)兩個(gè)從服務(wù)器
yum -y install ntp ntpdate service ntpd start /usr/sbin/ntpdate 192.168.71.12 #進(jìn)行時(shí)間同步,指向Master服務(wù)器IP crontab -e #設(shè)置計(jì)劃任務(wù)每個(gè)半個(gè)小時(shí)同步一次時(shí)間 */30 * * * * /usr/sbin/ntpdate 192.168.71.12
3.主服務(wù)器的mysql配置
vim /etc/my.cnf server-id = 1 log-bin=master-bin #添加,主服務(wù)器開(kāi)啟二進(jìn)制日志 log-slave-updates=true #添加,允許從服務(wù)器更新二進(jìn)制日志 systemctl restart mysqld mysql -u root -p grant replication slave on *.* to 'myslave'@'192.168.71.%' identified by '123'; #對(duì)從服務(wù)器提權(quán) #grant 授權(quán) #replication 復(fù)制 #允許網(wǎng)段為192.168.71的使用密碼123對(duì)所有表庫(kù)都可以復(fù)制 flush privileges; show master status; #File 列顯示日志名,F(xiàn)osition 列顯示偏移量
4.從服務(wù)器的mysql配置
Slave1服務(wù)器:192.168.163.13
Slave2服務(wù)器:192.168.163.14
1)修改配置文件
vim /etc/my.cnf #修改,注意id與Master的不同,兩個(gè)Slave的id也要不同 server-id = 2 #添加,開(kāi)啟中繼日志,從主服務(wù)器上同步日志文件記錄到本地 relay-log=relay-log-bin #添加,定義中繼日志文件的位置和名稱 relay-log-index=slave-relay-bin.index systemctl restart mysqld
slave1
slave2
2)從服務(wù)器 對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作
mysql -u root - p123 change master to master_host='192.168.71.12',master_user='myslave',master_password='123',master_log_file='master-bin.000002',master_log_pos=306; #show master status;所輸出的二進(jìn)制文件和位置點(diǎn)一樣 #配置同步,注意master_log_file 和master_log_pos的值要與Master查詢的一致 start slave; #啟動(dòng)同步,如有報(bào)錯(cuò)執(zhí)行reset slave; show slave status\G; #查看Slave 狀態(tài) //確保 IO 和 SQL 線程都是Yes,代表同步正常。 Slave_IO_Running:Yes #負(fù)責(zé)與主機(jī)的io通信 Slave_SQL_Running:Yes #負(fù)責(zé)自己的slave mysql進(jìn)程
5.驗(yàn)證結(jié)果
主服務(wù)器上創(chuàng)建一個(gè)庫(kù)驗(yàn),在從服務(wù)器上查看
Amoeba服務(wù)器(192.168.153.30)
安裝Java 環(huán)境
因?yàn)锳moeba 基于是jdk1.5 開(kāi)發(fā)的,所以官方推薦使用jdk1.5或1.6版本,高版本不建議使用。
1)創(chuàng)建jdk java環(huán)境
cd /opt/ #將jdk-6u14-linux-x64.bin 和 amoeba-mysql-binary-2.2.0.tar.gz上傳到/opt目錄下 cp jdk-6u14-linux-x64.bin /usr/local/ cd /usr/local/ chmod +x jdk-6u14-linux-x64.bin ./jdk-6u14-linux-x64.bin //按yes,按enter mv jdk1.6.0_14/ /usr/1ocal/jdk1.6 vim /etc/profile export JAVA_HOME=/usr/local/jdk1.6 export CLASSPATH=SCLASSPATH:$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 java -version
2)安裝 Amoeba軟件
mkdir /usr/local/amoeba tar zxvf /opt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/ chmod -R 755 /usr/local/amoeba/ /usr/local/amoeba/bin/amoeba //如顯示amoeba start|stop 說(shuō)明安裝成功
3)在主從服務(wù)器的mysql上授權(quán)
Master服務(wù)器:192.168.71.12
Slave1服務(wù)器:192.168.71.13
Slave2服務(wù)器:192.168.71.14
先在Master、Slave1、Slave2 的mysql上開(kāi)放權(quán)限給 Amoeba 訪問(wèn)
grant all on *.* to 'test'@'192.168.163.%' identified by 'abc123';
4)配置amoeba服務(wù)在阿米巴上配置
cd /usr/local/amoeba/conf/ cp amoeba.xml amoeba.xml.bak #對(duì)配置文件備份 vim amoeba.xml #修改amoeba配置文件 property name="user">amoeba/property> #30行修改 property name="password">abc123/property> #32行修改 客戶端連接amoeba服務(wù)器的密碼 property.name="defaultPool">master/property> #115行修改 設(shè)置默認(rèn)池 property name="writePool">master/property> #117行去掉注釋 設(shè)置master為寫(xiě)池 property name="readPool">slaves/property> #slaves 為讀池
cp dbServers.xml dbServers.xml.bak vim dbServers.xml #修改數(shù)據(jù)庫(kù)配置文件 !-- property name="schema"> test/property> --> #23行,注釋掉 作用: 默認(rèn)進(jìn)入test庫(kù)以防m(xù)ysql 中沒(méi)有test庫(kù)時(shí),會(huì)報(bào)錯(cuò) property name="user">test/property> #26行,修改主從服務(wù)器上提權(quán)的用戶和密碼 property.name-"password">123/property> #28-30行,去掉注釋 dbServer name= "master" parent="abstractServer"> #45行,修改,設(shè)置主服務(wù)器的名Master property name= "ipAddress">192.168.71.12/property> #48行,修改,設(shè)置主服務(wù)器的地址 dbServer name="slave1" parent="abstractServer"> #52行,修改,設(shè)置從服務(wù)器的名slave1 property.name="ipAddress">192.168.71.13/property> #55行,修改,設(shè)置從服務(wù)器1的地址 dbServer name="slave2 " parent="abstractserver"> #59行,復(fù)制上面6行粘貼,設(shè)置從服務(wù)器2的名slave2和地址 property, name="ipAddress">192.168.71.14/property> dbServer name="slaves" virtual="true"> #65行,修改 property name="poolNames">slave1,slave2/property> #71行,修改 /usr/local/amoeba/bin/amoeba start #啟動(dòng)Amoeba軟件,按ctrl+c 返回 netstat -anpt | grep java #查看8066端口是否開(kāi)啟,默認(rèn)端口為T(mén)CP 8066
5)測(cè)試讀寫(xiě)分離
在客戶端服務(wù)器上測(cè)試
yum install -y mysql mysql-server #快速安裝mysql,也可以選擇編譯安裝 mysql -u amoeba -pabc123 -h 192.168.71.20 -P8066
主從服務(wù) v器上都可以看到該表
通過(guò)amoeba服務(wù)器代理訪問(wèn)mysql ,在通過(guò)客戶端連接mysql后寫(xiě)入的數(shù)據(jù)只有主服務(wù)會(huì)記錄,然后同步給從服務(wù)器
stop slave; #關(guān)閉同步寫(xiě)入數(shù)據(jù) use school; //在slave1上: insert into test1 values('1','slave1'); //在slave2上: insert into test1 values('2','slave2');
在主服務(wù)器上插入數(shù)據(jù)
insert into test1 values('3','master');
在客戶端中向表插入數(shù)據(jù)
//在客戶端服務(wù)器上: use school; select * from test1; //客戶端會(huì)分別向slave1和s1ave2讀取數(shù)據(jù),顯示的只有在兩個(gè)從服務(wù)器上添加的數(shù)據(jù),沒(méi)有在主服務(wù)器上添加的數(shù)據(jù) insert into test1 values('4','climet'); //只有主服務(wù)器上有此數(shù)據(jù)
在主服務(wù)器上查看數(shù)據(jù)
同時(shí)開(kāi)啟兩個(gè)從服務(wù)器,查看表格記錄
到此這篇關(guān)于詳解MySQL主從復(fù)制及讀寫(xiě)分離的文章就介紹到這了,更多相關(guān)MySQL主從復(fù)制及讀寫(xiě)分離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:龍巖 迪慶 徐州 南充 西寧 麗水 自貢 無(wú)錫
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解MySQL主從復(fù)制及讀寫(xiě)分離》,本文關(guān)鍵詞 詳解,MySQL,主從,復(fù)制,及,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。