MYSQL數(shù)據(jù)回流_MySQL
來源:懂視網(wǎng)
責(zé)編:小采
時間:2020-11-09 18:44:58
MYSQL數(shù)據(jù)回流_MySQL
MYSQL數(shù)據(jù)回流_MySQL:bitsCN.com 一般的網(wǎng)站應(yīng)用中,總會有部分二次數(shù)據(jù)(處理過的原始數(shù)據(jù))展現(xiàn)給前臺,比如,拿購物網(wǎng)站來說,購買進(jìn)口奶粉最多的用戶群體;哪類產(chǎn)品消費(fèi)增長趨勢最旺盛;用戶的消費(fèi)歷史歸類等都是二次數(shù)據(jù)。由于這部分?jǐn)?shù)據(jù)通常是分析后的數(shù)據(jù),而且實(shí)時性不強(qiáng)
導(dǎo)讀MYSQL數(shù)據(jù)回流_MySQL:bitsCN.com 一般的網(wǎng)站應(yīng)用中,總會有部分二次數(shù)據(jù)(處理過的原始數(shù)據(jù))展現(xiàn)給前臺,比如,拿購物網(wǎng)站來說,購買進(jìn)口奶粉最多的用戶群體;哪類產(chǎn)品消費(fèi)增長趨勢最旺盛;用戶的消費(fèi)歷史歸類等都是二次數(shù)據(jù)。由于這部分?jǐn)?shù)據(jù)通常是分析后的數(shù)據(jù),而且實(shí)時性不強(qiáng)
bitsCN.com
一般的網(wǎng)站應(yīng)用中,總會有部分二次數(shù)據(jù)(處理過的原始數(shù)據(jù))展現(xiàn)給前臺,比如,拿購物網(wǎng)站來說,購買進(jìn)口奶粉最多的用戶群體;哪類產(chǎn)品消費(fèi)增長趨勢最旺盛;用戶的消費(fèi)歷史歸類等都是二次數(shù)據(jù)。由于這部分?jǐn)?shù)據(jù)通常是分析后的數(shù)據(jù),而且實(shí)時性不強(qiáng),因此這個過程通常是通過離線計算得到。為了展現(xiàn)給前臺,需要將這部分?jǐn)?shù)據(jù)回流到關(guān)系型數(shù)據(jù)庫【離線計算集群一般都是KV存儲,不支持SQL】,供前端用戶查詢。 對于MYSQL而言,數(shù)據(jù)回流實(shí)質(zhì)就是通過mysqlimport或load data infile語句將離線計算的結(jié)果導(dǎo)入到數(shù)據(jù)庫中。mysqlimport實(shí)質(zhì)是對load data infile的封裝,所以搞清楚load data infile的原理,和使用過程中需要注意的事項(xiàng),就搞清楚了mysql數(shù)據(jù)回流。 load data infile語法,大家可以通過mysql官方手冊查看,這里就不copy-paste了,這里主要介紹下原理和流程,下面所描述的都是針對innodb存儲引擎,復(fù)制采用行級復(fù)制的情況。流程如下:(1)主數(shù)據(jù)庫進(jìn)行 ‘Load’ 操作(2)主數(shù)據(jù)庫操作完成后,才開始向slave傳輸 load.txt文件,(3)slave接受文件,并在 slave_load_tmpdir 目錄下生成 load.txt 文件,接受并生成完整的load.txt 后,才開始讀取該文件,并將數(shù)據(jù)插入到本地表中。備注:由于innodb是事務(wù)型的,所以會把load文件的整個操作當(dāng)作一個事務(wù)來處理,中途中斷l(xiāng)oad操作,會導(dǎo)致回滾。

load data infile 結(jié)構(gòu)圖【來自網(wǎng)絡(luò)】 在執(zhí)行l(wèi)oad data infile前,一定要根據(jù)實(shí)際情況設(shè)置好以下幾個參數(shù),否則很有可能因?yàn)閰?shù)設(shè)置不對,導(dǎo)致load失敗。 slave_load_tmpdir含義:load data infile 存放臨時文件的目錄建議:這個目錄所在磁盤空間應(yīng)該足夠大,防止因?yàn)槟夸浛臻g不足,導(dǎo)致失敗的情況。 max_allowed_packet含義:客戶端/服務(wù)器之間通信的緩存區(qū)的最大大小。最大值:1G建議:因此對于含有大字段(BLOB,TEXT)的表操作,或主備之間含有大事務(wù)傳遞時,需要調(diào)大該值,否則會出現(xiàn)max_allowed_packet不夠大的錯誤。 max_binlog_cache_size含義:用來限制用來緩存多語句事務(wù)的緩沖區(qū)總大小。如果某個事務(wù)大于該值,將會失敗并回滾。最大值:4G(32位),16PB(64位)建議:對于load data infile,或mysqlimport導(dǎo)入大文件時,由于是作為一個事務(wù),很可能導(dǎo)致max_binlog_cache_size不夠,而出現(xiàn)錯誤導(dǎo)致回滾的情況。 max_binlog_size含義:事務(wù)以一個塊寫入二進(jìn)制日志,當(dāng)超過max_binlog_size時,文件進(jìn)行切換。于max_binlog_size。最大值:1G建議:這個值設(shè)置不會導(dǎo)致執(zhí)行報錯的情況。但是,有一點(diǎn)要注意,單個事務(wù)的binlog不會跨binlog文件,因此大事務(wù)可能導(dǎo)致binlog文件超出max_binlog_size值。 本人在使用mysql進(jìn)行l(wèi)oad時,遇到過好幾個問題,都是與以上幾個參數(shù)有關(guān)。1.max_binlog_cache_size不夠大,主庫導(dǎo)入出錯,或從庫復(fù)制出錯;解決方法:調(diào)大該值 2.max_allowed_packet不夠大,導(dǎo)致從庫io_thread拉binlog失敗,主備復(fù)制中斷。解決方法:1.調(diào)大該值2.重新建立復(fù)制關(guān)系(1).記錄目前復(fù)制的位置(Relay_Master_Log_File, Exec_Master_Log_Pos);(2).reset slave [清理掉無效的relay-log,和master-info信息](3).執(zhí)行change master to 命令(4).start slave

大部分情況下,執(zhí)行第一步后,start slave應(yīng)該就可以了;但我碰到過,重啟復(fù)制后依然報錯的情況,主要原因是max_allowed_packet不夠大,relay-log只記錄了事務(wù)的一部分,復(fù)制報錯。那么,通過重建復(fù)制關(guān)系,則會重新開始拉事務(wù)的binlog,relay-log完整后,就不存在問題了。 bitsCN.com
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
MYSQL數(shù)據(jù)回流_MySQL
MYSQL數(shù)據(jù)回流_MySQL:bitsCN.com 一般的網(wǎng)站應(yīng)用中,總會有部分二次數(shù)據(jù)(處理過的原始數(shù)據(jù))展現(xiàn)給前臺,比如,拿購物網(wǎng)站來說,購買進(jìn)口奶粉最多的用戶群體;哪類產(chǎn)品消費(fèi)增長趨勢最旺盛;用戶的消費(fèi)歷史歸類等都是二次數(shù)據(jù)。由于這部分?jǐn)?shù)據(jù)通常是分析后的數(shù)據(jù),而且實(shí)時性不強(qiáng)