小編給大家分享一下MySQL主從同步原理、配置以及延遲的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、固始網(wǎng)絡(luò)推廣、微信小程序開發(fā)、固始網(wǎng)絡(luò)營銷、固始企業(yè)策劃、固始品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供固始建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.2m8n56k.cn
mysql的主從同步原理、主從同步配置、主從同步延遲,首先我們先來了解什么是主從同步,主從同步,顧名思義也稱為主從復(fù)制,用來建立一個(gè)和主數(shù)據(jù)庫完全一樣的數(shù)據(jù)庫環(huán)境。主從同步使得數(shù)據(jù)可以從一個(gè)數(shù)據(jù)庫服務(wù)器復(fù)制到其他服務(wù)器上,實(shí)現(xiàn)主數(shù)據(jù)庫的數(shù)據(jù)和從數(shù)據(jù)庫的數(shù)據(jù)保持一致。
集群是共享存儲(chǔ)的,是data-sharing . 主從復(fù)制中沒有任何共享 . 每臺(tái)機(jī)器都是獨(dú)立且完整的系統(tǒng),是nothing-sharing.
從mysql5.6之后主從復(fù)制的實(shí)現(xiàn)方式主要有3種:
1. 異步復(fù)制
2. 全同步復(fù)制
3. 半同步復(fù)制
主從同步原理圖
1.當(dāng)主數(shù)據(jù)庫的更新事件(update、insert、delete)被寫到binary-log .
2.從庫創(chuàng)建一個(gè)I/O線程,該線程連接到主庫并請(qǐng)求主庫發(fā)送binlog里面的更新記錄到從庫上 .主庫創(chuàng)建一個(gè)binlog dump thread線程,把binlog的內(nèi)容發(fā)送到從庫 ,從庫的I/O線程讀取主庫的輸出線程發(fā)送的更新并拷貝這些更新到本地relay log文件中 .
3.從庫創(chuàng)建一個(gè)SQL線程,這個(gè)線程讀取從庫I/O線程寫到relay log的更新事件并執(zhí)行 .
vim /etc/my.cnf 在[mysqld]下添加 server-id=1(用來標(biāo)識(shí)不同的數(shù)據(jù)庫)log-bin=master-bin(打開bin-log并配置文件名為master-bin)log-bin-index=master-bin.index(區(qū)分不同的log-bin文件)
重啟數(shù)據(jù)庫:systemctl restart mariadb.service
vim /etc/my.cnf 在[mysqld]下添加 server-id=2relay-log=slave-relay-bin(打開relay-log并配置文件名為slave-relay-bin) relay-log-index=slave-relay-bin.index
重啟數(shù)據(jù)庫:systemctl restart mariadb.service
在主數(shù)據(jù)庫中:創(chuàng)建用戶repl ,每一個(gè)從服務(wù)器都需要用到主數(shù)據(jù)庫一個(gè)賬戶名和密碼來連接主服務(wù)器 .
CREATE USER 'repl'@'114.116.77.213' IDENTIFIED BY '12312';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'114.116.77.213' IDENTIFIED BY '12312';
在從數(shù)據(jù)庫中:
change master to master_host='47.106.78.106',master_user='repl',master_password='12312',master_log_file='master-bin.000001',master_log_pos=0;
啟動(dòng)同步:start slave;
在主數(shù)據(jù)庫創(chuàng)建一個(gè)數(shù)據(jù)庫,然后在從數(shù)據(jù)庫查看
1. 做數(shù)據(jù)的熱備,作為后備數(shù)據(jù)庫,主數(shù)據(jù)庫服務(wù)器故障后,可切換到從數(shù)據(jù)庫繼續(xù)工作,避免數(shù)據(jù)丟失 .
2. 讀寫分離,使數(shù)據(jù)庫能支撐更大的并發(fā) .
主庫可以讀寫數(shù)據(jù),而從庫只能讀數(shù)據(jù),因?yàn)楫?dāng)從庫寫了數(shù)據(jù)positon會(huì)變化,但是主庫的position是不會(huì)變的,當(dāng)主庫寫數(shù)據(jù)變化position的時(shí)候就可能會(huì)有沖突.
當(dāng)主庫的binatylog文件存儲(chǔ)的數(shù)據(jù)很多,也就是position很大的時(shí)候,會(huì)再分裂一個(gè)新的binarylog文件,position置為0;
主從庫的mysql版本可以不一樣,但是從庫的mysql版本要比主庫的版本要高,如果不是的話,那么主庫的語句到了從庫可能就不能執(zhí)行.
因?yàn)閙ysql是向后兼容的,也就是說低版本的語句在高版本里面是支持的,但是高版本的有些語句在低版本是不支持的.
(如果問到數(shù)據(jù)庫主從問題,必問以下問題):
主從的好處是?
主從的原理是?
從數(shù)據(jù)庫的讀的延遲問題了解嗎?如何解決?
做主從后主服務(wù)器掛了怎么辦?
主從同步的延遲的原因
主從同步的延遲的原因
主從同步延遲問題
1. 主從同步的延遲的原因
我們知道, 一個(gè)服務(wù)器開放N個(gè)鏈接給客戶端來連接的, 這樣有會(huì)有大并發(fā)的更新操作, 但是從服務(wù)器的里面讀取binlog 的線程僅有一個(gè), 當(dāng)某個(gè)SQL在從服務(wù)器上執(zhí)行的時(shí)間稍長 或者由于某個(gè)SQL要進(jìn)行鎖表就會(huì)導(dǎo)致,主服務(wù)器的SQL大量積壓,未被同步到從服務(wù)器里。這就導(dǎo)致了主從不一致, 也就是主從延遲。
2. 主從同步延遲的解決辦法
實(shí)際上主從同步延遲根本沒有什么一招制敵的辦法, 因?yàn)樗械腟QL必須都要在從服務(wù)器里面執(zhí)行一遍,但是主服務(wù)器如果不斷的有更新操作源源不斷的寫入, 那么一旦有延遲產(chǎn)生, 那么延遲加重的可能性就會(huì)原來越大。 當(dāng)然我們可以做一些緩解的措施。
a. 我們知道因?yàn)橹鞣?wù)器要負(fù)責(zé)更新操作, 他對(duì)安全性的要求比從服務(wù)器高, 所有有些設(shè)置可以修改,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之類的設(shè)置,而slave則不需要這么高的數(shù)據(jù)安全,完全可以講sync_binlog設(shè)置為0或者關(guān)閉binlog,innodb_flushlog, innodb_flush_log_at_trx_commit 也 可以設(shè)置為0來提高sql的執(zhí)行效率 這個(gè)能很大程度上提高效率。另外就是使用比主庫更好的硬件設(shè)備作為slave。
b. 就是把,一臺(tái)從服務(wù)器當(dāng)度作為備份使用, 而不提供查詢, 那邊他的負(fù)載下來了, 執(zhí)行relay log 里面的SQL效率自然就高了。
c. 增加從服務(wù)器嘍,這個(gè)目的還是分散讀的壓力, 從而降低服務(wù)器負(fù)載。
看完了這篇文章,相信你對(duì)“mysql主從同步原理、配置以及延遲的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
當(dāng)前標(biāo)題:mysql主從同步原理、配置以及延遲的示例分析
路徑分享:http://www.2m8n56k.cn/article46/gioseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、定制網(wǎng)站、建站公司、動(dòng)態(tài)網(wǎng)站、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)