溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql主從集群配置

發(fā)布時間:2020-08-03 16:46:43 來源:網(wǎng)絡 閱讀:341 作者:梁十八 欄目:MySQL數(shù)據(jù)庫

mysql主從集群配置


先編輯master配置:

vim /etc/my.cnf

mysql主從集群配置

(加上紅框部分。#server id部分:每個都有獨一無二的id作為區(qū)分,這id可以用服務器ip后三位。#binary log:日志。#statement row mixed:三種監(jiān)聽方式)

其中三種情況:監(jiān)聽語句變化,還是磁盤變化,還是混合模式?

然后編輯slave的/etc/my.cnf:

mysql主從集群配置

(設置id,建立中繼日志)

然后分別啟動主和從:service mysqld start

接下來,主和從要建立聯(lián)系:

登錄mysql:?

mysql -uroot -p

master建立授權帳號(這個帳號允許你復制master的二進制日志。一個replication client帳號,一個replication slave帳號):

mysql主從集群配置

(授權一個客戶端帳號、一個從帳號。*.*:作用于所有庫和表上,不像mongodb能單選某庫某表。to 帳號repl,指定它發(fā)揮作用的ip:@192.168.%.%,即前綴是192.168都可以用。identitied by 'repl':指定密碼為repl)

到目前為止,主服務器的日志、帳號、從服務器的relaylog好了,只需要通知從服務器連過來:

mysql主從集群配置(master_log_file是當前master所用的二進制文件。master_log_pos是當前master的position。下面有查看方法)

見識下二進制日志:

mysql主從集群配置

目前用的最新的二進制日志是:

mysql主從集群配置(mater機器)

看看當前master機器的狀態(tài):

mysql主從集群配置(確實當前用的是mysql-bin.000003,position 278的意思是:我主服務器已經(jīng)寫到278位置了,你從服務器注意哈)

操作slave:

mysql主從集群配置(reset slave:重置slave。然后設置對應master的相關信息)

查看slave的情況:show slave status \G

mysql主從集群配置

啟動slave:

mysql主從集群配置

再查看狀態(tài)就好了(第一行變成了waiting? for master to send event):

mysql主從集群配置

接下來,不管在master是新建庫、表,各種增刪改查,在slave中都會看到相應的變化





典型問題:

有一業(yè)務場景,經(jīng)過測試,讀寫比為1:20,請根據(jù)讀寫比,合理設置優(yōu)化方案.

?

讀寫比:

寫數(shù)據(jù)/讀數(shù)據(jù)的比例,

Insert/update/delelte ????/ ?select

?

不管具體技術,"讀寫分離"的概念出發(fā)來推導一下基本的要素.


mysql主從集群配置

通俗的說:讀服務器就是指寫服務器的數(shù)據(jù)鏡像.

?

從服務端看:要有N臺從服務器和主服務器保持數(shù)據(jù)一致.

從客戶端看:比如有一條insert語句和一條select 語句,

則要區(qū)分讀/寫語句,并且分別請求從/主服務器.

?

?


服務器端讀寫分離的具體技術

1:數(shù)據(jù)庫集群技術

集群由3個概念

1:sql節(jié)點 ?sql node

2:數(shù)據(jù)節(jié)點 data node

3:管理節(jié)點 ndb managerment

?

Sql語句發(fā)送"1sql節(jié)點", "1sql"節(jié)點發(fā)往"2數(shù)據(jù)節(jié)點",再由3管理節(jié)點完成數(shù)據(jù)節(jié)點的之間的同步.

?

集群技術相對復雜,至少有3種節(jié)點,4臺服務器才能完成.

?

?

2:數(shù)據(jù)庫復制 replication

mysql主從集群配置


數(shù)據(jù)庫復制 replication 的實現(xiàn)原理

1:主服務器凡運行語句,都產(chǎn)生一個二進制日志 binlog

2:從服務器不斷讀取主服務器的binlog

3:從主服務讀取到的binlog,轉換為自身可執(zhí)行的relaylog,

4:執(zhí)行relaylog

?

?

實現(xiàn)步驟:

1:首先確保主服務器打開二進制日志功能.

這樣,主服務器一旦有數(shù)據(jù)變化,立即產(chǎn)生二進制日志.

?

2:從服務器也需要開啟二進制日志和relay日志功能.

這樣可以從主服務器讀取binlog,并產(chǎn)生relaylog

?

3:在主服務器建立一個從服務器的賬號,并授予數(shù)得上權限.

?

4: 指定從服務對應的主服務器,開啟從服務器.

?

?

具體實施

本人虛擬機下有兩臺linux,IP199 200

1: 200做從服務器

2: 199mysql,做為主服務器.

3: 保證主從3306端口互通.

4: 配置主服務器,打開binlog

mysql主從集群配置

#給服務器起一個唯一的id

server-id=1

?#開啟二進制日志

log-bin=mysql-bin

#指定日志格式

binlog-format=mixd/row/statement
重啟mysql

mysql主從集群配置

已經(jīng)能夠充當master服務器


5: 配置從服務器打開binlogrelaylog

mysql主從集群配置

mysql主從集群配置

重啟從服務器

?

6: 在主服務器上創(chuàng)建相應的復制賬號

mysql主從集群配置

7: 在從服務器通過語句指定要復制的主服務器(注意,可以一主多從,不可一從多主).

mysql主從集群配置

8:啟動從服務器功能

->start slave;

mysql主從集群配置

8: 測試.

?

?


常用語句:

show master status ; 查看master的狀態(tài), 尤其是當前的日志及位置

show slave stattus; 查看slave的狀態(tài).

reset slave ; ?重置slave狀態(tài).

start slave ; 啟動slave 狀態(tài)(開始監(jiān)聽msater的變化)

stop slave; 暫停slave狀態(tài);









查看mysql帳號:

mysql主從集群配置

向AI問一下細節(jié)

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

AI