乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如果有一個特別大的訪問量到數(shù)據(jù)庫上,怎么做優(yōu)化?主從復(fù)制、讀寫分離

       丹楓無跡 2022-04-05

      第一個就是使用優(yōu)化查詢的方法。這個在前期的內(nèi)容中有具體說明,這里不再做說明。

      第二、這里簡要說明一個以下幾個方法:

        主從復(fù)制、讀寫分離、負(fù)載均衡

        目前,大部分的主流關(guān)系型數(shù)據(jù)庫都提供了主從復(fù)制的功能,通過配置兩臺(或多臺)數(shù)據(jù)庫的主從關(guān)系,可以將一臺數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)更新同步到另一臺服務(wù)器上。網(wǎng)站可以利用數(shù)據(jù)庫的這一功能,實現(xiàn)數(shù)據(jù)庫的讀寫分離,從而改善數(shù)據(jù)庫的負(fù)載壓力。一個系統(tǒng)的讀操作遠(yuǎn)遠(yuǎn)多于其寫操作,因此寫操作發(fā)向master,讀操作發(fā)向slaves進(jìn)行操作(簡單的輪循算法來決定使用哪個slave)。

        利用數(shù)據(jù)庫的讀寫分離,web服務(wù)器在寫數(shù)據(jù)的時候,訪問著數(shù)據(jù)庫(Master),主數(shù)據(jù)庫通過主從復(fù)制機(jī)制將數(shù)據(jù)更新同步到從數(shù)據(jù)庫(Slave),這樣web服務(wù)器讀數(shù)據(jù)的時候,就可以通過從數(shù)據(jù)庫獲得數(shù)據(jù)。這一方案使得在大量讀操作的web應(yīng)用可以輕松地讀取數(shù)據(jù),而主數(shù)據(jù)庫也只會承受少量的寫入操作,還可以實現(xiàn)數(shù)據(jù)熱備份,可謂是一舉兩得的方案。

      1.復(fù)制的基本原則

        MySQL復(fù)制是異步的且串行化的;

        每個Slave只有一個Master;

        每個Slave只有一個唯一的服務(wù)器ID;

        每個Master可以有多個Slave;

      2.一主一從常見配置:

        MySQL版本一致且后臺以服務(wù)運行;

        主從都配置在[mysqld]結(jié)點下,都是小寫,主機(jī)修改my.ini配置文件,從機(jī)修改my.cnf配置文件,因修改過配置文件,請主機(jī)+從機(jī)都重啟后臺MySQL服務(wù);

        主機(jī)從機(jī)都關(guān)閉防火墻;

        在Windows主機(jī)上建立賬戶并授權(quán)slave;

        在Linux從機(jī)上配置需要復(fù)制的主機(jī);

        主機(jī)新建庫,新建表,insert記錄,從機(jī)復(fù)制;

        通過stop slave 停止從機(jī)復(fù)制;

       

             

       主從復(fù)制的原理:

        影響MySQL-A數(shù)據(jù)庫的操作,在數(shù)據(jù)庫執(zhí)行后,都會寫入本地的日志系統(tǒng)A中。假設(shè),實時的將變化了的日志系統(tǒng)中的數(shù)據(jù)庫事件操作,通過網(wǎng)絡(luò)發(fā)給MySQL-B。MySQL-B收到后,寫入本地日志系統(tǒng)B,然后一條條地將數(shù)據(jù)庫事件在數(shù)據(jù)庫中完成。那么MySQL-A的變化,MySQL-B也會變化,這樣就是所謂的MySQL的復(fù)制。

        在上面的模型中,MySQL-A就是主服務(wù)器,即master,MySQL-B就是從服務(wù)器,即slave。

        日志系統(tǒng)A,其實它是MySQL的日志類型的二進(jìn)制日志,也就是專門用來保存修改數(shù)據(jù)庫的所有動作,即bin log?!咀⒁釳ySQL會在執(zhí)行語句之后,釋放鎖之前,寫入二進(jìn)制日志,確保事務(wù)安全?!?/span>

        日志系統(tǒng)B,并不是二進(jìn)制日志,由于它是從MySQL-A的二進(jìn)制日志復(fù)制過來的,并不是自己的數(shù)據(jù)庫變化產(chǎn)生的,有點接力的感覺,稱為中繼日志,即relay log。

        可以發(fā)現(xiàn),通過上面的機(jī)制,可以保證MySQL-A和MySQL-B的數(shù)據(jù)庫數(shù)據(jù)一致,但是時間上肯定有延遲,即MySQL-B的數(shù)據(jù)是滯后的。

      簡化版:

      MySQL主(稱master)從(稱slave)復(fù)制的原理:

        1.master將數(shù)據(jù)改變記錄到二進(jìn)制日志(binary log)中,也即是配置文件log-bin指定的文件(這些記錄叫做二進(jìn)制日志事件,binary log events)

          PS:從圖中可以看出,Slave服務(wù)器中有一個I/O線程(I/O Thread)在不停地監(jiān)聽Master的二進(jìn)制日志(binary log)是否有更新:如果沒有,它會睡眠等待Master產(chǎn)生新的日志事件;如果有新的日志事件(log events),則會將其拷貝至Slave服務(wù)器中的中繼日志(relay log)。

        2.slave將master的二進(jìn)制日志事件(binary log events)拷貝到它的中繼日志(relay log)。

        3.slave重做中繼日志中的事件,將Master上的改變反映到它自己的數(shù)據(jù)庫中。所以兩端的數(shù)據(jù)是完全一樣的。

          PS:從圖中可以看出,Slave服務(wù)器有一個SQL線程(SQL Thread)從中繼日志讀取事件,并重做其中的事件,從而更新Slave的數(shù)據(jù),使其與Master中的數(shù)據(jù)一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。

        

       主從復(fù)制的幾種方式:

       1.同步復(fù)制

        主服務(wù)器在將更新的數(shù)據(jù)寫入它的二進(jìn)制日志(binlog)文件中后,必須等待驗證所有的從服務(wù)器的更新數(shù)據(jù)是否已經(jīng)復(fù)制到其中,之后才可以自由處理其他進(jìn)入的事務(wù)處理請求。

      2.異步復(fù)制

        主服務(wù)器在將更新的數(shù)據(jù)寫入它的二進(jìn)制日志(binlog)文件中后,無需等待驗證更新數(shù)據(jù)是否復(fù)制到從服務(wù)器中,就可以自由處理其他進(jìn)入的事務(wù)處理請求。

      3.半異步復(fù)制

        主服務(wù)器在將更新的數(shù)據(jù)寫入它的二進(jìn)制日志(binlog)文件中后,只需等待驗證其中一臺從服務(wù)器的更新數(shù)據(jù)是否已經(jīng)復(fù)制到其中,就可以自由處理其他進(jìn)入的事務(wù)處理請求,其他的從服務(wù)器不用管。

      數(shù)據(jù)庫分表、分區(qū)、分庫

        分表見上期描述。

        分區(qū)就是把一張表的數(shù)據(jù)分成多個區(qū)塊,這些區(qū)塊可以在一個磁盤上,也可以在不同的磁盤上,分區(qū)后,表面上還是一張表,但數(shù)據(jù)散列在多個位置,這樣一來,多塊硬盤同時處理不同請求,從而提高磁盤IO讀寫性能,實現(xiàn)比較簡單。包括水平分區(qū)和垂直分區(qū)。

        分庫是根據(jù)業(yè)務(wù)不同把相關(guān)的表且分到不同的數(shù)據(jù)庫中,比如web、bbs、blog等庫。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多