《MySQL集群之主從復(fù)制》要點:
本文介紹了MySQL集群之主從復(fù)制,希望對您有用。如果有疑問,可以聯(lián)系我們。
一、配置mysql主從模式的原因
二、Mysql主從復(fù)制的原理
三、Mysql主從復(fù)制的過程
主從復(fù)制詳細過程
Mysql主從復(fù)制過程的圖形表現(xiàn)
四、MySQL支持的復(fù)制類型與MySQL復(fù)制應(yīng)用類型
MySQL支持的復(fù)制類型
MySQL復(fù)制應(yīng)用類型
五、MySQL(主從復(fù)制)集群配置過程
主節(jié)點配置(server1,1.0.0.3)
從節(jié)點配置(1.0.0.5=udzyh1、1.0.0.6=udzyh2)
連接
開啟主從復(fù)制
六、Replication管理和排錯
接下來帶大家感受一下MySQL集群!其實什么是MySQL集群?簡單的說便是一群機器(服務(wù)器)的集合,它們連在一起來工作.
其實各種數(shù)據(jù)庫都有本身的集群,常常的多:
我們要學(xué)習(xí)的便是MySQL Replication
一、配置mysql主從模式的原因
1)Mysql內(nèi)建的復(fù)制功能是構(gòu)建大型、高性能應(yīng)用程序的基礎(chǔ).在實際企業(yè)應(yīng)用環(huán)境當中,單臺mysql數(shù)據(jù)庫是不敷以滿足日后業(yè)務(wù)需求的.
譬如當服務(wù)器發(fā)生故障,而沒有備份服務(wù)器來提供服務(wù)時,業(yè)務(wù)就必需得停止,這樣會對企業(yè)帶來巨大的損失.
2)為了提高數(shù)據(jù)庫服務(wù)器的穩(wěn)定性,加快數(shù)據(jù)處理的效率,保護數(shù)據(jù)免受意外的損失,我們采用mysql的主從復(fù)制方式,分離對數(shù)據(jù)庫的查詢和更新操作,使用從服務(wù)器上備份的數(shù)據(jù)保證來數(shù)據(jù)的平安性和穩(wěn)定性.
二、Mysql主從復(fù)制的原理
1)MySQL 的 Replication 是一個異步的復(fù)制過程,從一個 MySQL instace(我們稱之為 Master)復(fù)制到另一個MySQL instance(我們稱之 Slave).
在 Master 與 Slave 之間的實現(xiàn)整個復(fù)制過程主要由三個線程來完成,此中兩個線程(Sql 線程和IO 線程)在 Slave 端,另外一個線程(IO 線程)在 Master 端.
2)在執(zhí)行這個主從復(fù)制之前,首先必需打開 Master 端的Binary Log(MySQL-bin.xxxxxx)功能,否則無法實現(xiàn).
在啟動 MySQL Server 的過程中使用“l(fā)og-bin” 參數(shù)選項
在 my.cnf 配置文件中的 MySQLd 參數(shù)組中增加“l(fā)og-bin” 參數(shù)項
三、Mysql主從復(fù)制的過程
3.1、主從復(fù)制詳細過程
1) Slave 上面的IO 線程連接上 Master,并哀求從指定日志文件的指定位置(或者從最開始的日志)之后的日志內(nèi)容.
2) Master 接收到來自 Slave 的 IO 線程的哀求后,通過負責復(fù)制的 IO 線程根據(jù)哀求信息讀取指定日志指定位置之后的日志信息,返回給 Slave 端的 IO 線程.
返回信息中除了日志所包括的信息之外,還包括本次返回的信息在 Master 端的 Binary Log 文件的名稱以及在 BinaryLog 中的位置.
3)Slave 的 IO 線程接收到信息后,將接收到的日志內(nèi)容依次寫入到 Slave 端的RelayLog (中繼日志文件)文件(MySQL-relay-bin.xxxxxx)的最末端,并將讀取到的Master 端的bin-log 的文件名和位置記錄到master-info 文件中,
以便在下一次讀取的時候能夠清楚的告訴Master“我必要從某個bin-log 的哪個位置開始往后的日志內(nèi)容,請發(fā)給我” .
4)Slave 的 SQL 線程檢測到 Relay Log 中新增加了內(nèi)容后,會馬上解析該 Log 文件中的內(nèi)容成為在 Master 端真實執(zhí)行時候的那些可執(zhí)行的 Query 語句,并在自身執(zhí)行這些 Query.
這樣,實際上便是在 Master 端和 Slave 端執(zhí)行了同樣的 Query,所以兩端的數(shù)據(jù)是完全一樣的.
3.2、Mysql主從復(fù)制過程的圖形表現(xiàn)
四、MySQL支持的復(fù)制類型與MySQL復(fù)制應(yīng)用類型
4.1、MySQL支持的復(fù)制類型
1)基于語句的復(fù)制statement: 在主服務(wù)器上執(zhí)行的SQL語句,在從服務(wù)器上執(zhí)行同樣的語句.MySQL默認采用基于語句的復(fù)制,效率比擬高.一旦發(fā)現(xiàn)沒法精確復(fù)制時,會自動選著基于行的復(fù)制.
2)基于行的復(fù)制row:把改變的內(nèi)容復(fù)制過去,而不是把命令在從服務(wù)器上執(zhí)行一遍. 從mysql5.0開始支持
3)混合類型的復(fù)制mixed: 默認采納基于語句的復(fù)制,一旦發(fā)現(xiàn)基于語句的無法精確的復(fù)制時,就會采納基于行的復(fù)制.
4.2、MySQL復(fù)制應(yīng)用類型
1)數(shù)據(jù)分布 (Data distribution )
2)負載平衡(load balancing)
3)讀寫分離(split reading and writting)
4)高可用性和容錯性 (High availability and failover )
五、MySQL(主從復(fù)制)集群配置過程
環(huán)境:
首先我虛擬機中安裝了三臺ubuntu操作系統(tǒng):
ubuntu的server版:1.0.0.3==server1
ubuntu的desktop版(兩臺):1.0.0.5=udzyh1.1.0.0.6=udzyh2
注意搭建MySQL集群的時候,MySQL的版本盡量一致,大版本必需一致.(本人使用5.7.19)
5.1、主節(jié)點配置(server1,1.0.0.3)
1)首先進入到MySQL的配置文件中去
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
2)修改、保留退出
[client]
[mysqld]
#bind-address=0.0.0.0
server-id=11
log-bin=mysql-bin-11
binlog-format=row
3)重啟MySQL服務(wù) sudo service mysql restart
5.2、從節(jié)點配置(1.0.0.5=udzyh1、1.0.0.6=udzyh2)
注意:所有從節(jié)點的配置都一模一樣(主從復(fù)制,只能有一個主節(jié)點,可以用n多個從節(jié)點)
1)首先進入到MySQL的配置文件中去
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
2)修改、保留退出
[mysqld]
#bind....
server-id=12
relay-log=mysql-relay-12
3)重啟MySQL服務(wù) sudo service mysql restart
5.3、連接
1)在主節(jié)點的MySQL終端執(zhí)行:
grant replication slave,replication client on *.* to 'zyh'@'%' identified by '123456';(在主節(jié)點創(chuàng)立一個用戶)
2)查看主節(jié)點的二進制文件名和插入位置
show master stauts \G
3)在從節(jié)點的MySQL終端執(zhí)行
change master to
master_host='1.0.0.3',(這里最好使用ip,其實寫主機的也是可以的,但是一個局域網(wǎng)內(nèi)主機名很多相同的話,會找不到)
master_port=3306,
master_user='zyh',
master_password='123456',
master_log_file='mysql-bin-11.000002',
master_log_pos=1326;
注意:n多個從節(jié)點都是相同的配置
3)查看從節(jié)點的狀態(tài)
show slave status \G
5.4、開啟主從復(fù)制
start slave
1)查看所有數(shù)據(jù)庫
在主節(jié)點中:
在從節(jié)點中:
1)
2)
2)主節(jié)點創(chuàng)立一個數(shù)據(jù)庫db_love在查看其它兩個從節(jié)點,你會發(fā)現(xiàn)驚喜
六、Replication管理和排錯
1)show master status ; 查看master的狀態(tài), 尤其是當前的日志及位置
2)show slave status; 查看slave的狀態(tài).
3)reset slave ; 重置slave狀態(tài),用于刪除SLAVE數(shù)據(jù)庫的relaylog日志文件,并重新啟用新的relaylog文件.會忘記 主從關(guān)系,它刪除master.info文件和relay-log.info 文件
4)start slave ; 啟動slave 狀態(tài)(開始監(jiān)聽msater的變化)
5)stop slave; 暫停slave狀態(tài);
6)set global sql_slave_skip_counter = n 跳過導(dǎo)致復(fù)制終止的n個變亂,僅在slave線程沒運行的狀況下使用
轉(zhuǎn)自:博客園
中公優(yōu)就業(yè) 幫你成績職業(yè)夢:
IT教育專業(yè)培訓(xùn):https://www.ujiuye.com/
IT教育勤工儉學(xué)計劃:http://www.ujiuye.com/zt/jyfc/?wt.bd=lyh
年夜數(shù)據(jù)時代下做java開發(fā)工程師:https://www.ujiuye.com/zt/java/?wt.bd=lyh
歡迎參與《MySQL集群之主從復(fù)制》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7878.html