兩步輕松實現(xiàn)MySQL數(shù)據(jù)庫主從復制

最近在做性能優(yōu)化的系列課程,其中MySQL數(shù)據(jù)優(yōu)化部分用到了主從復制仔拟,在這里和大家分享下實現(xiàn)原理以及配置步驟。

概念

MySQL 主從復制是指數(shù)據(jù)可以從一個MySQL數(shù)據(jù)庫服務(wù)器主節(jié)點復制到一個或多個從節(jié)點飒赃。MySQL 默認采用異步復制方式利花,這樣從節(jié)點不用一直訪問主服務(wù)器來更新自己的數(shù)據(jù),數(shù)據(jù)的更新可以在遠程連接上進行载佳,從節(jié)點可以復制主數(shù)據(jù)庫中的所有數(shù)據(jù)庫或者特定的數(shù)據(jù)庫炒事,或者特定的表。

目的

  • 數(shù)據(jù)同步備份
    主庫master發(fā)生故障后蔫慧,可以馬上切換到從庫slave挠乳,降低服務(wù)風險。
  • 讀寫分離
    可以把寫操作放在master藕漱,讀取操作放在slave欲侮,減輕單一數(shù)據(jù)庫的操作壓力
  • 高可用HA
    隨著系統(tǒng)中業(yè)務(wù)訪問量的增大,如果是單機部署數(shù)據(jù)庫肋联,就會導致I/O訪問頻率過高。有了主從復制刁俭,增加多個數(shù)據(jù)存儲節(jié)點橄仍,將負載分布在多個從節(jié)點上,降低單機磁盤I/O訪問的頻率牍戚,提高單個機器的I/O性能侮繁。

基本原理

master記錄下自己的操作日志,授權(quán)從服務(wù)器可以讀取操作日志如孝,slave會開啟兩個線程宪哩。

  • IO線程
    負責連接master 連接成功后,睡眠并等待master產(chǎn)生新的事件第晰,有新的就保存到自己的中繼日志中锁孟,中繼日志通常位于操作系統(tǒng)的緩存中,所以開銷很小茁瘦。
  • sql進程
    負責執(zhí)行中繼日志中的sql操作品抽,這樣slave的內(nèi)容就和master的一致了。

執(zhí)行步驟

主從復制原理
  1. 主庫db的更新事件(update甜熔、insert圆恤、delete)被寫到binlog
  2. 從庫發(fā)起連接,連接到主庫
  3. 主庫創(chuàng)建一個binlog dump thread線程腔稀,把binlog的內(nèi)容發(fā)送到從庫
  4. 從庫啟動之后盆昙,創(chuàng)建一個I/O線程羽历,讀取主庫傳過來的binlog內(nèi)容并寫入到relay log.
  5. 還會創(chuàng)建一個SQL線程,從relay log里面讀取內(nèi)容淡喜,從Exec_Master_Log_Pos位置開始執(zhí)行讀取到的更新事件秕磷,將更新內(nèi)容寫入到slave的db.

配置方式

前提條件

停止對master數(shù)據(jù)庫的操作,把master中的數(shù)據(jù)庫全部導入到slave拆火,使兩邊數(shù)據(jù)庫完全一致跳夭。

配置master

  1. 修改master的配置文件,使用二進制日志们镜,指定server-id币叹,重啟服務(wù)。目的是讓各自都有了自己的唯一標示模狭,并以二進制文件格式進行交流颈抚。Centos中路徑為 /etc/my.cnf。
[mysqld]
log_bin=mysql-bin //[必須]啟用二進制日志
server-id=10//[必須]服務(wù)器唯一ID嚼鹉,默認是1贩汉,一般取IP最后一段

配置完成后需要重啟mysqlserver才能生效。

  1. 創(chuàng)建授權(quán)用戶
    登陸主服務(wù)器mysql命令行锚赤,創(chuàng)建一個用于從服務(wù)器復制的用戶匹舞。
mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '123456'; 

"."表示對所有庫的所有操作,“%”表示所有客戶端都可能連线脚,也可用具體客戶端IP代替赐稽,如192.168.33.11,加強安全浑侥。

  1. 記錄master 狀態(tài)信息
    查看二進制日志文件名姊舵,及最新位置。讓slave知道用哪個用戶信息訪問master寓落,知道讀取哪個日志文件括丁,及從哪兒開始讀。
mysql>show master status;
mster狀態(tài)

其中file伶选、position字段需要記錄下值史飞,mysql-bin.000001 是用于主從復制的文件名,
437是日志文件內(nèi)的最新位置考蕾。

配置slave

  1. 修改配置文件my.cnf祸憋,使用二進制日志,指定server-id肖卧,重新啟動服務(wù)蚯窥。
[mysqld]
log_bin=mysql-bin 
server-id=11
  1. 將slave指向master
    登陸從服務(wù)器mysql命令行,使用之前創(chuàng)建的用戶和master的日志文件及其位置。slave中使用被授權(quán)用戶信息及日志文件信息拦赠,進行指向master巍沙。這時已經(jīng)建立了和master的聯(lián)系,明確了從哪兒讀取日志文件荷鼠。
mysql>change master to master_host='192.168.33.10',master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=437;

//注意不要斷開句携,“437”無單引號。

  1. 啟動slave
mysql>start slave;
  1. 查看slave狀態(tài)
mysql> show slave status\G;

結(jié)果中有兩個重要數(shù)據(jù)項:

  1. Slave_IO_Running: Yes IO線程狀態(tài)允乐,必須YES
  2. Slave_SQL_Running: Yes SQL線程狀態(tài)矮嫉,必須YES
    常見的問題是SQL線程沒有正常工作 Slave_SQL_Running: No。通常是兩邊的數(shù)據(jù)庫不是完全對應(yīng)的牍疏,需要確保master上的庫及到目前為止的最新記錄都復制到slave上了蠢笋。

驗證測試

當IO線程和SQL線程都正常后,到master中隨意測試下插入鳞陨、修改昨寞、刪除操作,同時到slave中檢查厦滤。

總結(jié)

至此就完成了Mysql server的主從復制援岩,還是很簡單易用的。大家可以弄兩臺虛機環(huán)境實際搭建測試下掏导。

上一篇 《性能優(yōu)化系列文章目錄》 下一篇
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末享怀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趟咆,更是在濱河造成了極大的恐慌凹蜈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忍啸,死亡現(xiàn)場離奇詭異,居然都是意外死亡履植,警方通過查閱死者的電腦和手機计雌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玫霎,“玉大人凿滤,你說我怎么就攤上這事∈” “怎么了翁脆?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鼻种。 經(jīng)常有香客問我反番,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任罢缸,我火速辦了婚禮篙贸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枫疆。我一直安慰自己爵川,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布息楔。 她就那樣靜靜地躺著寝贡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪值依。 梳的紋絲不亂的頭發(fā)上圃泡,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音鳞滨,去河邊找鬼洞焙。 笑死,一個胖子當著我的面吹牛拯啦,可吹牛的內(nèi)容都是我干的澡匪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼褒链,長吁一口氣:“原來是場噩夢啊……” “哼唁情!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起甫匹,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤甸鸟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兵迅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抢韭,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年恍箭,在試婚紗的時候發(fā)現(xiàn)自己被綠了刻恭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扯夭,死狀恐怖鳍贾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情交洗,我是刑警寧澤骑科,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站构拳,受9級特大地震影響咆爽,放射性物質(zhì)發(fā)生泄漏梁棠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一伍掀、第九天 我趴在偏房一處隱蔽的房頂上張望掰茶。 院中可真熱鬧,春花似錦蜜笤、人聲如沸濒蒋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沪伙。三九已至,卻和暖如春县好,著一層夾襖步出監(jiān)牢的瞬間围橡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工缕贡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翁授,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓晾咪,卻偏偏與公主長得像收擦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谍倦,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354