十五天MySQL學(xué)習(xí)計(jì)劃(運(yùn)維篇-完結(jié))讀寫分離-第十五天
讀寫分離
1.讀寫分離
? 讀寫分離,簡單的說是把對數(shù)據(jù)庫的讀和寫操作分開,以對應(yīng)不同的數(shù)據(jù)庫服務(wù)器。主服務(wù)器提供寫操作,從數(shù)據(jù)庫提供讀操作,這樣能有效的減輕單臺數(shù)據(jù)庫的壓力。
? 通過mycat即可輕易實(shí)現(xiàn)上述功能,不僅可以支持mysql,也可以支持oracle和sql server。
2.一主一從
? MySQL的主從復(fù)制,是基于二進(jìn)制日志實(shí)現(xiàn)的。
3 .一主一從讀寫分離
? mycat控制后臺數(shù)據(jù)庫的讀寫分離和負(fù)載均衡由schema.xml文件datahost標(biāo)簽的balance屬性控制。
配置1
配置2
參數(shù)值 | 含義 |
---|---|
0 | 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writehost上 |
1 | 全部的readhost與備用的writehost都參與select語句的負(fù)載均衡(主要針對于雙主雙從模式) |
2 | 所有的讀寫操作都隨機(jī)在writehost,readhost上分發(fā) |
3 | 所有的讀請求隨機(jī)分發(fā)到writehost對應(yīng)的readhost上執(zhí)行,writehost不負(fù)擔(dān)讀壓力 |
4.雙主雙從
? 一個(gè)主機(jī)master用于處理所有寫請求,它的從機(jī)slave1和另一臺主機(jī)maste2還有它的從機(jī)slave2負(fù)責(zé)所有的主請求。當(dāng)master1主機(jī)宕機(jī)后,master2主機(jī)負(fù)責(zé)寫請求,master1,master2互為備機(jī),架構(gòu)圖如下:
1.主庫配置-第一臺主庫
? 1.修改配置文件/etc/my.cnf
#mysql服務(wù)ID,保證整個(gè)集群環(huán)境中唯一
server-id=1
#指定同步的數(shù)據(jù)庫
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作為數(shù)據(jù)庫的時(shí)候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
? 2.重啟MySQL服務(wù)器
systemctl restart mysqld
2.主庫配置第二臺
? 1.修改配置文件/etc/my.cnf
#mysql服務(wù)ID,保證整個(gè)集群環(huán)境中唯一
server-id=3
#指定同步的數(shù)據(jù)庫
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
#在作為數(shù)據(jù)庫的時(shí)候,有寫入操作也要更新二進(jìn)制日志文件
log-slave-updates
? 2.重啟MySQL服務(wù)器
systemctl restart mysqld
3.兩臺主服務(wù)器都需要配置
1.兩臺主庫創(chuàng)建賬戶并授權(quán)(8.0)
#創(chuàng)建授權(quán)用戶,并設(shè)置密碼,該用戶可在任意主機(jī)連接該MySQL服務(wù)
create user 'itcast'@'%' identified with mysql_native_password by '1234.Com';
#為itcat用戶分配主從復(fù)制權(quán)限
grant replication slave on *.* to 'itcast'@'%';
2.通過指令,查看兩臺主庫的二進(jìn)制日志名字和坐標(biāo)位置
show master status;
4.從服務(wù)器配置(兩臺)
1.修改配置文件/etc/my.cnf
#mysql服務(wù)ID,保證整個(gè)集群環(huán)境中唯一
#第一臺
server-id=2
#第四臺
server-id=4
? 2.重啟MySQL服務(wù)器
systemctl restart mysqld
? 3.兩臺從庫配置關(guān)聯(lián)主庫
change master to master_host='xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
需要注意slave1對應(yīng)的是master1,slave2對應(yīng)的是master2.
? 啟動兩臺從庫主從復(fù)制,查看從庫狀態(tài)
start slave;
show slave status\G
5.兩臺主服務(wù)器相互做主從
master2復(fù)制master1,master1復(fù)制master2
change master to master_host='xxx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;
啟動查看兩臺主服務(wù)器的主從復(fù)制
start slave;
show slave status\G
6.測試
分別在兩臺主庫master1,master2上執(zhí)行DDL,DML語句,查看涉及到數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)同步情況。
5.雙主雙從讀寫分離
? mycat控制后臺數(shù)據(jù)庫的讀寫分離和負(fù)載均衡由schema.xml文件datahost標(biāo)簽的balance屬性控制,通過writeType及switchType來完成失敗自動切換的。、
balance="1"
代表全部的readHost與stand by writeHost參與select語句的負(fù)載均衡,簡單的說,當(dāng)雙主雙從模式(M1-》S1,M2-》S2.并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡;
write Type
0:寫操作都轉(zhuǎn)發(fā)到第1臺writeHost,writeHost1掛了,會切換到writeHost2上;
1:所有操作都隨機(jī)的發(fā)送到配置的writeHost上;
switchType
-1:不自動切換
1:自動切換
測試
? 登錄mycat,測試查詢及更新操作,判定是否能夠進(jìn)行讀寫分離,以及讀寫分離的策略是否正確。
? 當(dāng)主庫掛掉一個(gè)之后,是否能夠自動切換。
6.總結(jié)
1.介紹
? 讀寫分離是為了降低單臺服務(wù)器的訪問壓力,寫走主庫,讀走從庫。
2.一主一從
? MySQL主從復(fù)制是基于二進(jìn)制日志binlog實(shí)現(xiàn)的。master,salve
3.一主一從讀寫分離
<writehost> <readhost/> <writeHost>,balance屬性
4.雙主雙從
? 兩臺主庫,相互復(fù)制,互為主備,增強(qiáng)MySQL的可用性文章來源:http://www.zghlxwxcb.cn/news/detail-449959.html
5.雙主雙從讀寫分離文章來源地址http://www.zghlxwxcb.cn/news/detail-449959.html
<writehost> <readhost/> <writeHost>,balance屬性 writetype switchType
salve
3.一主一從讀寫分離
<writehost> <readhost/> <writeHost>,balance屬性
4.雙主雙從
? 兩臺主庫,相互復(fù)制,互為主備,增強(qiáng)MySQL的可用性
5.雙主雙從讀寫分離
<writehost> <readhost/> <writeHost>,balance屬性 writetype switchType
到了這里,關(guān)于十五天MySQL學(xué)習(xí)計(jì)劃(運(yùn)維篇-完結(jié))讀寫分離-第十五天的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!