mysql 主從復制是同步還是異步 什么情況會導致MySQL主從復制延遲?
什么情況會導致MySQL主從復制延遲?1.網絡的服務器延遲而mysql主從復制是設計和實現binlog的一種異步復制,網絡傳送binlog文件,不甚在意網絡延遲是主從不歌詞同步的絕大多數的原因,特別是
什么情況會導致MySQL主從復制延遲?
1.網絡的服務器延遲而mysql主從復制是設計和實現binlog的一種異步復制,網絡傳送binlog文件,不甚在意網絡延遲是主從不歌詞同步的絕大多數的原因,特別是跨機房的數據同步又出現這種幾率非常的大,因此做讀寫分離,盡量從業務層通過后期設計。
2.主從兩臺機器的負載不符而mysql主從復制是主數據庫上面起動1個io線程,而從上面起動1個sql線程和1個io線程,當中任何一臺機器的負載很高,忙不上來,可能導致其中的任何一個線程會出現資源不足,都將再次出現主從不符的情況。
_allowed_packet可以設置不對應主數據庫上面設置里的max_allowed_packet比從數據庫大,當一個大的sql語句,能在主數據庫上面執行完畢,從數據庫上面設置里過小,難以先執行,造成的主從不一致。
自增鍵結束的鍵值跟自增步長設置里不一致引起的主從不一致。
mysql 5.6.14主從復制(也稱mysql AB復制)環境配置方法?
MySQL允許單向、異步剪切粘貼,剪切粘貼過程中一個服務器臨時主服務器,而一個或多個其它服務器指揮從服務器。主服務器將更新完寫入到二進制日志文件,并維護日志文件的一個索引以潛進來日志循環。當一個從服務器直接連接到主服務器時,它通知到主服務器從服務器在日志中無法讀取的第三次成功更新完的位置。從服務器可以接收從那時起發生的任何更新,然后包圍并等待主服務器通知下兩次更新。為什么建議使用主從復制?1、主服務器/從服務器可以設置增強了健壯性。主服務器會出現問題時,你這個可以直接切換到從服務器才是系統備份。2、通過在主服務器和從服務器之間拆分開處理客戶網上查詢的負荷,是可以能得到更好的客戶響應時間。不過最好不要同時在主從服務器上進行更新,這樣的話很有可能影起。3、不使用不能復制的另一個好處是這個可以建議使用一個從服務器不能執行系統備份,而不可能受到干擾主服務器。在備份文件過程中主服務器可以繼續如何處理更新。MySQL使用3個線程來先執行復制功能(其中1個在主服務器上,另兩個在從服務器上。當發出STARTSLAVE時,從服務器創建家族一個I/O線程,以直接連接主服務器并讓主服務器郵箱里二進制日志。主服務器創建家族一個線程將二進制日志中的內容發送到從服務器。從服務器I/O線程讀取文件主服務器BinlogDump線程發送的內容并將該數據拷貝到從服務器數據目錄中的本地文件中,即中繼日志。第3個線程是SQL線程,從服務器建議使用此線程讀取文件中繼日志并執行日志中乾坤二卦的更新。SHOWPROCESSLIST語句這個可以去查詢在主服務器上和從服務器上發生了什么的關與復制的信息。系統默認中繼日志不使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是從服務器主機名,nnnnnn是序列號。用發動序列號來創建戰隊后中繼日志文件,從000001就開始。從服務器監視跟蹤中繼日志索引文件來識別目前正可以使用的中繼日志。默認中繼日志索引文件名為host_。在默認情況,這些文件在從服務器的數據目錄中被創建角色。中繼日志與二進制日志的格式完全相同,而且是可以用mysqlbinlog讀取文件。當SQL線程執行完中繼日志中的所有事件后,中繼日志將是被自動出現徹底刪除。從服務器在數據目錄中另外創建戰隊兩個狀態文件和。狀態文件需要保存在硬盤上,從服務器自動關閉時應該不會弄丟。下回從服務器啟動時時,讀取文件這些文件以可以確定它早從主服務器加載了多少二進制日志,和去處理自己的中繼日志的程度。設置主從復制:1、確保全在主服務器和從服務器上安裝的MySQL版本同一,因此好是是MySQL的比較新穩定點版本。2、在主服務器上為不能復制設置中一個連接賬戶。該賬戶要授予REPLICATIONSLAVE權限。要是賬戶僅主要用于剪切粘貼(推薦一下那樣做),則不需要再頒授任何其它權限。mysqlgtGRANTREPLICATIONSLAVEON*.*-rlmneedreplication@%IDENTIFIEDbgslavepass3、執行FLUSHTABLESWITHREADLOCK語句刪掉所有表和塊中寫入語句:mysqlgtFLUSH TABLES WITH READ LOCK;盡量mysql客戶端程序別解盟。傳送另一個終端對主服務器數據目錄做快照。shellgtcd/usr/region/mysql/shellgttar-cvf/tmp/mysql-snapshot.tar./data如果沒有從服務器的用戶賬戶與主服務器的不同,你可能會我也不想剪切粘貼mysql數據庫。在狀況下,包括哪些歸檔中排除該數據庫。你也不要在歸檔中和任何日志文件的或或文件。當FLUSHTABLESWITHREADLOCK所置讀鎖定后比較有效時(即mysql客戶端程序不退出),無法讀取主服務器上當前的二進制日志名和偏移量值:mysqla8SHOWMASTERSTATUS---------------------------------------------------------|File|Position|Binlog_unit_DB|Binlog_Ignore_DB|---------------------------------------------------------|mysql-bin.003 | 73 | test | manual,mysql|---------------------------------------------------------File列顯示日志名,而Position不顯示偏移量。在該例子中,二進制日志值為mysql-bin.003,偏移量為73。資料記錄該值。以后設置從服務器時需要使用這些值。它們來表示不能復制坐標,從服務器應從該點又開始從主服務器上接受新的更新。要是主服務器運行時沒有啟用--logs-bin,SHOWMASTERSTATUS總是顯示的日志名和位置值為空。在這個下,當以后重新指定從服務器的日志文件和位置時是需要可以使用的值為空字符串()和4.提出快照并記錄日志名和偏移量后,來到前一中端原先禁用寫活動:mysqlgteraseTABLES;4、確保主服務器主機上文件的[mysqld]部分以及一個log-bin選項。該部分還任何一個server-idMaster我的id選項,其中master我的id前提是為1到232–1之間的一個正整數值。比如:[mysqld]log-binserver-id1如果沒有是沒有提供給那些選項,應添加它們并重起服務器。5、停止從服務器上的mysqld服務并在其文件中添加下面的行:[mysqld]server-id2slave帳號值同Master帳號值一般,要為1到232–1之間的一個正整數值。而且,從服務器的ID要與主服務器的ID不相同。6、將數據備據目錄中。必須保證對這些文件和目錄的權限錯誤的。服務器MySQL運行程序的用戶要能讀寫文件,宛如在主服務器上差不多。Shellgtchown-Rmysql:mysql/usr/local/mysql/data7、正常啟動從服務器。在從服務器上負責執行下面的語句,用你的系統的實際中值替換后選項值:mysqlgtCHANGEMASTERneed-a8MASTER_HOSTmaster_host_name,-r26MASTER_USERreplication_user_name,-r26MASTER_PASSWORDreplication_password,-gtMASTER_LOG_FILErecorded_log_file_name,-r26MASTER_LOG_POSrecorded_log_position8、啟動時從服務器線程:mysqlgtSTARTSLAVE;不能執行這些程序后,從服務器應直接連接主服務器,并需要補充兩年前快照以來發生的任何更新。9、如果不是又出現復制錯誤,從服務器的錯誤`日志()中也會直接出現錯誤消息。10、從服務器不能復制時,會在其數據目錄中發現文件和。從服務器可以使用這兩個文件跟蹤監視早一次性處理了多少主服務器的二進制日志。最好不要移除或編輯這些文件,如果不是你詳細知你也在什么并徹底表述其意義。況且這樣的話,最好是不使用CHANGEMASTERwant語句。