真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL從庫復(fù)制延遲的原因

本篇內(nèi)容介紹了“MySQL從庫復(fù)制延遲的原因”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、云浮網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為云浮等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、從庫復(fù)制延遲問題

1、可能的原因如下
(1)主從服務(wù)器處于不同的網(wǎng)絡(luò)之中,由于網(wǎng)絡(luò)延遲導(dǎo)致;
(2)主從服務(wù)器的硬件配置不同,從服務(wù)器的硬件配置(包括內(nèi)存,CPU,網(wǎng)卡等)遠(yuǎn)低于主服務(wù)器;
(3)主庫上有大量的寫入操作,導(dǎo)致從庫無法實(shí)時(shí)重放主庫上的binlog;
(4)主庫上存在著大事務(wù)操作或者慢SQL,導(dǎo)致從庫在應(yīng)用主庫binlog的過程過慢,形成延遲;
(5)數(shù)據(jù)庫實(shí)例的參數(shù)配置問題導(dǎo)致,如:從庫開啟了binlog,或者配置了每次事務(wù)都去做刷盤操作;

2、主從同步延遲問題判斷
(1)根據(jù)從庫上的狀態(tài)參數(shù)判斷

mysql-server-3307> SHOW SLAVE STATUS \G

在輸出結(jié)果中找到Seconds_Behind_Master參數(shù),這個(gè)參數(shù)表示的是從庫上的IO線程和SQL線程相差的時(shí)間,然后根據(jù)該參數(shù)值判斷,這個(gè)值只是初步判斷,不能由這個(gè)值來下結(jié)論,有如下幾種情況:
a、0:表示無延遲,理想狀態(tài);
b、NULL:表示從庫上的IO線程和SQL線程中,有某一個(gè)線程出現(xiàn)問題,可以再次查看Slave_IO_Running和Slave_SQL_Running的值是否都為Yes;
c、大于0:表示主從已經(jīng)出現(xiàn)延遲,這個(gè)值越大,表示從庫和主庫之間的延遲越嚴(yán)重;
d、小于0:這個(gè)值在官方文檔中沒有說明,通常不會(huì)出現(xiàn)。如果出現(xiàn),那恭喜你中獎(jiǎng)了,撞見MySQL的bug了;

(2)根據(jù)主從庫上面當(dāng)前應(yīng)用的二進(jìn)制日志文件名稱或者重放日志的位置來判斷
① 同時(shí)打開兩個(gè)MySQL的命令行窗口,分別打開主庫和從庫,在第一個(gè)窗口上執(zhí)行查看主庫當(dāng)前狀態(tài)的命令

mysql-server-3306> SHOW MASTER STATUS \G
*************************** 1. row ***************************
             File: mysql-bin.000017
         Position: 120
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

② 在第二個(gè)從庫的命令行窗口執(zhí)行如下命令

mysql-server-3307> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
               ...
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000017
          Read_Master_Log_Pos: 120
               Relay_Log_File: relay-log.000016
                Relay_Log_Pos: 283
        Relay_Master_Log_File: mysql-bin.000017
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
            ...
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 120
              Relay_Log_Space: 613
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
                ...
        Seconds_Behind_Master: 0
        ...
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 3
                  Master_UUID: 2dbbf79b-5d9f-11e8-8004-000c29e28409
             Master_Info_File: /mysql_data/3307/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL

③ 比較從庫上的Master_Log_File和Relay_Master_Log_File文件之間是否有差異
a、如果有差異,則說明主從延遲很嚴(yán)重;
b、如果沒有差異,則比較Read_Master_Log_Pos和Exec_Master_Log_Pos的差異,這倆參數(shù)分別表示從庫當(dāng)前讀取到的主庫的二進(jìn)制日志文件位置點(diǎn)和已經(jīng)執(zhí)行到的位置點(diǎn);
c、如果上述輸出都沒有差異,可以通過主庫上"show master status"和從庫上"show slave status"的結(jié)果作比較。主要比較主庫的"File"和從庫的"Master_Log_File",主庫上的"Position"和從庫上的"Read_Master_Log_Pos";

3、主從延遲解決辦法
(1)判斷是否由于網(wǎng)絡(luò)導(dǎo)致
方法:測試主從庫之間的網(wǎng)絡(luò)延遲,比如測試ping延遲。同時(shí)可以檢查主從同步的時(shí)候是否使用了主庫的域名來同步,而域名解析速度可能會(huì)特別慢?;蛘呤褂闷渌麥y試工具;
(2)判斷是否由于硬件環(huán)境導(dǎo)致
方法:確認(rèn)主從庫的硬件配置是否相差較大,如果配置參數(shù)相差較大,可以排查從庫上的CPU,內(nèi)存,IO使用率來判斷是否因?yàn)橛布渲脤?dǎo)致;
(3)判斷是否在主庫上有大量的DML操作
方法:可以再主庫上通過"show full processlist"命令查看當(dāng)前正在執(zhí)行的sql,查看是否有大量正在執(zhí)行的SQL,或者觀察主庫的CPU和內(nèi)存使用率,判斷是否有高并發(fā)操作;
(4)判斷是否有慢SQl,可以再主庫上臨時(shí)打開慢SQL記錄,臨時(shí)打開方法如下

#開啟慢SQL功能并查看是否生效
mysql-server-3306> SET @@GLOBAL.slow_query_log = ON;
mysql-server-3306> SHOW VARIABLES LIKE 'slow_query_log';
#設(shè)置慢SQL的時(shí)間并查看是否生效,單位為s,表示大于多少秒的SQL會(huì)被記錄
mysql-server-3306> SET @@GLOBAL.long_query_time = 5;
mysql-server-3306> SHOW VARIABLES LIKE 'long_query_time';
#設(shè)置慢SQL記錄日志路徑并查看是否生效。注意,這個(gè)目錄必須對MySQL用戶有讀寫權(quán)限
mysql-server-3306> SET @@GLOBAL.slow_query_log_file = '/mysql_data/mysql-slow.log';
mysql-server-3306> SHOW VARIABLES LIKE 'slow_query_log_file';

(5)檢查從服務(wù)器參數(shù)配置是否合理
① 查看從庫是否開啟了binlog日志,從庫上執(zhí)行如下命令查看

mysql-server-3307> SHOW VARIABLES LIKE 'log_bin';

如果開啟了binlog日志,而且從庫未充當(dāng)其他庫的主庫時(shí),可以將從庫上的binlog關(guān)閉,否則會(huì)增加從庫負(fù)擔(dān),每次重放完成主庫的binlog還要記錄到自身的binlog

② 查看從庫上的sync_binlog參數(shù)的值,這個(gè)參數(shù)表示的是事務(wù)提交多少次之后,由MySQL來將binlog_cache中的數(shù)據(jù)刷新到磁盤,有以下幾種值:
0:表示事務(wù)提交之后,MySQL不做刷新binlog_cache到磁盤的操作,而是由操作系統(tǒng)來定時(shí)自動(dòng)完成刷盤操作,這種操作對性能損耗最少,但是也最不安全;
n:表示提交n次事務(wù)之后,由MySQL將binlog_cache中的數(shù)據(jù)刷新到磁盤,如果開啟,會(huì)對性能有一定程度的損耗。所以,從庫上如果延遲很嚴(yán)重,可以考慮將該參數(shù)的值設(shè)為0;

mysql-server-3307> SET @@GLOBAL.sync_binlog = 0;
mysql-server-3307> SHOW VARIABLES LIKE 'sync_binlog';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
1 row in set (0.00 sec)

③ 如果從庫中要同步的數(shù)據(jù)庫使用的是InnoDB存儲(chǔ)引擎,可以查看innodb_flush_log_at_trx_commit參數(shù)。這個(gè)參數(shù)表示事務(wù)執(zhí)行完成之后,多久的頻率刷新一次日志到磁盤上,可用的值有如下幾種:
0:表示MySQL會(huì)將日志緩沖區(qū)中的數(shù)據(jù)每秒一次地寫入日志文件中,并且日志文件的刷盤操作同時(shí)進(jìn)行。該模式下在事務(wù)提交的時(shí)候,不會(huì)主動(dòng)觸發(fā)寫入磁盤的操作,效率最搞,但是安全性也比較低,可能會(huì)丟失數(shù)據(jù);
1:每一次事務(wù)提交都需要把日志寫入磁盤,這個(gè)過程是特別耗時(shí)的操作;
2:每一次事務(wù)提交之后,不會(huì)自動(dòng)觸發(fā)日志刷盤的操作,而是由操作系統(tǒng)來決定什么時(shí)候來做刷新日志的操作,在操作系統(tǒng)掛了的情況下才會(huì)丟失數(shù)據(jù);
如果在主從延遲非常嚴(yán)重的情況下,可以將從庫的該參數(shù)設(shè)置為0,以提高從庫上重放主庫二進(jìn)制日志的效率。

mysql-server-3307> SET @@GLOBAL.innodb_flush_log_at_trx_commit = 0;
mysql-server-3307> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 0     |
+--------------------------------+-------+
1 row in set (0.00 sec)

注意:上述設(shè)計(jì)到修改MySQL數(shù)據(jù)庫實(shí)例的操作中,修改之后會(huì)立刻生效,但是重啟實(shí)例之后,會(huì)失效,如果要永久修改,則需要編輯mysql配置文件,然后重啟。

“MySQL從庫復(fù)制延遲的原因”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


分享題目:MySQL從庫復(fù)制延遲的原因
當(dāng)前路徑:http://weahome.cn/article/jppsgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部