• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      MySQL集群主從復(fù)制的原理、實現(xiàn)與常見故障排除

      2021-12-24 02:12:10馮冬艷
      山西電子技術(shù) 2021年6期
      關(guān)鍵詞:主從配置文件二進制

      馮冬艷

      (山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)

      0 引言

      MySQL是一款優(yōu)秀的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)應(yīng)用軟件,廣泛應(yīng)用于中小型企業(yè)的數(shù)據(jù)存儲中。2009年4月Oracle公司以74億美元收購Sun公司后,MySQL也隨之歸到Oracle旗下,目前主要有Enterprise和Community兩種版本。社區(qū)版MySQL由于其開源、穩(wěn)定、安全等特點,MySQL在Linux平臺上具有廣泛的應(yīng)用。

      在企業(yè)的實際應(yīng)用過程中,隨著MySQL中數(shù)據(jù)存儲量的持續(xù)增大和企業(yè)、用戶對存取響應(yīng)速度和數(shù)據(jù)安全性要求的不斷提高,單臺MySQL數(shù)據(jù)庫所提供的服務(wù)能力已經(jīng)不能滿足企業(yè)的實際需求。因此搭建一個能夠同時實現(xiàn)高并發(fā)和負載均衡的MySQL集群服務(wù)器勢在必行。在集群中為了提高數(shù)據(jù)的寫入和讀取效率,經(jīng)常需要對數(shù)據(jù)進行讀寫分離。此外,為了確保數(shù)據(jù)的安全而進行熱備也是一種經(jīng)常性的需求。為實現(xiàn)以上相關(guān)功能,MySQL提供了一個稱為“主從復(fù)制”的功能來實現(xiàn)多臺服務(wù)器之間數(shù)據(jù)的自動復(fù)制備份。

      本文主要探討“一主多從”服務(wù)器架構(gòu)中主從復(fù)制的基本原理、實現(xiàn)和常見故障排除。在“一主多從”服務(wù)器架構(gòu)中,業(yè)務(wù)服務(wù)器對數(shù)據(jù)進行寫操作或修改操作是在主服務(wù)器進行的,而進行讀操作時是在從服務(wù)器進行的,不同服務(wù)器之間一般是通過異步的方式完成數(shù)據(jù)的更新。本文所使用的實驗環(huán)境包括:操作系統(tǒng)為CentOS Linux release 7.3.1611(Core),數(shù)據(jù)庫為MySQL8.0.25,主服務(wù)器IP為192.168.211.128,從服務(wù)器IP為192.168.211.129。

      1 MySQL主從復(fù)制的基本原理

      MySQL中的主從復(fù)制實際上采用的是異步方式實現(xiàn)的,但是由于其執(zhí)行速度較快,因此經(jīng)常感覺是實時完成的。我們一般將直接提供數(shù)據(jù)增加、修改、刪除功能的服務(wù)器稱為主服務(wù)器(Master),而將主要提供數(shù)據(jù)查詢功能的一臺或多臺服務(wù)器稱為從服務(wù)器(Slaves)。一般來說MySQL的主從復(fù)制遵循以下基本過程:

      1) 主服務(wù)器在進行數(shù)據(jù)更新操作后會將相應(yīng)的操作記錄到它的二進制日志中,并且維護文件的一個索引用來跟蹤日志循環(huán),這個日志可以記錄并發(fā)送到從服務(wù)器的更新中去。一般情況下服務(wù)器的二進制日志是關(guān)閉的,需要通過配置文件方式將其啟用。

      2) 從服務(wù)器會在一定時間間隔后對主服務(wù)器的二進制日志進行探測,看其內(nèi)容是否有更新。如果有更新,從服務(wù)器就會啟動一個I/O線程用于連接到主服務(wù)器并請求主服務(wù)器的二進制文件里面的更新內(nèi)容到從服務(wù)器。同時從服務(wù)器會告知主服務(wù)器,從服務(wù)器上一次成功更新到的主服務(wù)器二進制日志文件的位置。

      3) 當(dāng)主服務(wù)器接收到從服務(wù)器的I/O請求后,會為每一個從服務(wù)器的I/O線程創(chuàng)建一個Binlog dump線程,該線程會將主服務(wù)器的二進制日志中更新的事件發(fā)送給從服務(wù)器。

      4) 從服務(wù)器的I/O線程讀取到主服務(wù)器Binlogdump線程發(fā)送的主服務(wù)器的二進制日志文件中更新的事件并將其保存到從服務(wù)器的中繼日志中。

      5) 從服務(wù)器會創(chuàng)建一個SQL線程,讀取保存在中繼日志中的主服務(wù)器二進制日志中的更新事件并且執(zhí)行,相當(dāng)于主服務(wù)器更新的SQL操作在從服務(wù)器再執(zhí)行一遍,進而保證主從服務(wù)器的數(shù)據(jù)一致。

      2 MySQL主從復(fù)制的實現(xiàn)

      為了簡單起見,本文將實現(xiàn)一主一從架構(gòu)的主從復(fù)制,一主多從架構(gòu)的原理與此基本相同,對于較復(fù)雜的其他架構(gòu)本文暫不予討論。一主一從架構(gòu)的主從復(fù)制實現(xiàn)起來比較簡單,首先需要對主服務(wù)器和從服務(wù)器的數(shù)據(jù)同步進行配置。

      第一,對主服務(wù)器MySQL進行配置:

      1) 創(chuàng)建用于從服務(wù)器連接主服務(wù)器的用戶backup并授予其replicationslave權(quán)限。create user 'backup' identified by ' backup'; grant replication slave on *.* to ' backup' @' 192.168.211.129';

      2) 打開主服務(wù)器MySQL的配置文件/etc/my.cnf,在[mysqld]下添加參數(shù):server_id=1,log_bin=mysql-bin。兩個參數(shù)分別用于指定服務(wù)器id和二進制日志的名字。

      3) 配置完成后重啟MySQL服務(wù),進入MySQL,輸入命令show master status;查看并記錄表中file和postion的值。這兩個參數(shù)值將被用于從服務(wù)器MySQL的參數(shù)配置。

      圖1 查看二進制日志中File和Position的值

      第二,對從服務(wù)器MySQL進行配置:

      1) 進入從服務(wù)器MySQL的配置文件/etc/my.cnf中在[mysqld]下添加參數(shù):server_id= 2,這個id值不得與主服務(wù)器的相同。

      2) 執(zhí)行同步SQL語句,需要指定主服務(wù)器IP地址,登錄用戶名及密碼,二進制日志名字與偏移。change master to master_host='192.168.211.128', master_user=' backup', master_password=' backup',master_log_file=' mysql-bin.000002', master_log_pos=156;其中master_host用于指定主服務(wù)器的IP地址,master_user用于指定從服務(wù)器登錄主服務(wù)器進行同步時的用戶名,master_password用于指定該用戶的密碼,master_log_file用于指定主服務(wù)器二進制文件的名字,master_log_pos用于指定二進制日志的偏移量。

      3) 開啟主從同步:start slave;該命令用于啟動主從同步。

      4) 查看同步狀態(tài):show slave statusG;在狀態(tài)參數(shù)列表中Slave_IO_Running和Slave_SQL_Running的值均為Yes,則表示主從同步狀態(tài)正常。

      圖2 查看Slave_IO_Running和Slave_SQL_Running的值

      第三,對主從復(fù)制運行情況進行驗證:

      1) 在主服務(wù)器創(chuàng)建數(shù)據(jù)庫student、表stu_info并插入一條測試數(shù)據(jù):create database student;create table stu_info(stu_idint,stu_name varchar(12),phone varchar(11)); insert into stu_info values(1,’zhangsan’,13888888888’);

      2) 在從服務(wù)器進行查看,驗證主從復(fù)制運行是否正常:通過查詢,可以看到在主服務(wù)器創(chuàng)建的數(shù)據(jù)庫、表和插入的數(shù)據(jù)內(nèi)容,主從復(fù)制正常運行。

      圖3 查看從服務(wù)器內(nèi)容是否與主服務(wù)器一致

      3 MySQL主從復(fù)制常見故障及排除

      1) 報錯Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids。此類錯誤在實驗環(huán)境里經(jīng)常會出現(xiàn),因為在實驗條件下往往是先搭建一個服務(wù)器環(huán)境,再復(fù)制出其它服務(wù)器環(huán)境。因此server_id可能會出現(xiàn)相同的情況,只需要在主、從服務(wù)器的MySQL配置文件[mysqld] 中將server_id設(shè)置為不同值即可。

      2) change master之后,查看slave的狀態(tài),發(fā)現(xiàn)slave_IO_running 仍為NO。需要注意在進行完之前的相關(guān)配置操作后要對MySQL服務(wù)進行重啟,重啟后再進行查看slave_IO_running變?yōu)閅es。

      3) 報錯ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first。出現(xiàn)此錯誤的原因是在沒有停止slave進程的情況下執(zhí)行change master,因此需要先通過命令stop slave停止slave后再進行相關(guān)操作。

      4 結(jié)語

      在實際應(yīng)用中,有大量的MySQL復(fù)制采用的是一主一從或一主多從架構(gòu),這類架構(gòu)能夠?qū)崿F(xiàn)準實時的數(shù)據(jù)熱備。對于一些數(shù)據(jù)實時性要求不是非常高的應(yīng)用,企業(yè)僅僅通過擴展廉價的slave就可以解決解決數(shù)據(jù)庫端讀數(shù)據(jù)的瓶頸問題。但是這種架構(gòu)復(fù)制數(shù)據(jù)的安全性和實時性還存在一定的不足,尤其在集群規(guī)模不斷擴大的情況下,因此就出現(xiàn)了主動模式的Master-Master、主動-被動模式的Master-Master、級聯(lián)復(fù)制Master-Slaves-Slaves、帶從服務(wù)器的Master-Master等不同的集群架構(gòu)來滿足不同場景的需求。

      猜你喜歡
      主從配置文件二進制
      提示用戶配置文件錯誤 這樣解決
      用二進制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      有趣的進度
      二進制在競賽題中的應(yīng)用
      忘記ESXi主機root密碼怎么辦
      FANUC系統(tǒng)PROFIBUS主從功能應(yīng)用
      基于主從控制的微電網(wǎng)平滑切換控制策略研究
      基于飛行試驗數(shù)據(jù)的仿真模型主從一體化檢驗
      永靖县| 石渠县| 玉门市| 中宁县| 株洲县| 锡林郭勒盟| 乾安县| 莆田市| 山阴县| 保德县| 敖汉旗| 兰西县| 建昌县| 海阳市| 旌德县| 苍南县| 张掖市| 华安县| 梧州市| 延川县| 西丰县| 宜都市| 屯门区| 土默特右旗| 湘乡市| 温州市| 红安县| 宜黄县| 平阴县| 吉林省| 佛山市| 中牟县| 崇州市| 河池市| 青岛市| 安远县| 辽阳县| 长阳| 桐梓县| 河西区| 芒康县|